Migrieren von Benutzern, Gruppen und ACLs zwischen AEM-Instanzen

Beschreibung

Umgebung
Adobe Experience Manager

Problem
So migrieren Sie Benutzer und Gruppen mit ACL-Berechtigungen in AEM von einem Server auf einen anderen oder von einer AEM Instanz auf einen anderen.

Auflösung

Lösung

Schritt 1: Admin und anonyme Benutzer suchen

  1. Rufen Sie unter /crx/de/index.jsp die CRXDE Lite-App auf und melden Sie sich als Administrator an (im Quellsystem).

  2. Navigieren Sie zu Instrumente = Abfrage.

  3. Unten Abfrage Geben Sie diese Abfrage ein, um den Admin-Benutzer zu finden: /jcr:root/home/users//element(*,rep:User)@rep:principalName="admin".

  4. Klicken Ausführen und kopieren Sie den Pfad des Admin-Benutzerknotens in die Ergebnisse in eine Textdatei.

  5. Wiederholen Sie Schritt 3 mit einer Abfrage für einen anonymen Benutzer: /jcr:root/home/users//element(*,rep:User)@rep:principalName="anonymous".

  6. Klicken Ausführen und kopieren Sie den Pfad des anonymen Benutzerknotens in die Ergebnisse in eine Textdatei (jetzt haben Sie zwei Pfade, einen für "admin" und einen für "anonymous").

    Beispiel:

    /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv: Admin-Benutzer im Quellsystem

    /home/users/K/Kj1406Qo9IDODc_nk5Ib: anonymer Benutzer im Quellsystem

Schritt 2A: Migrieren von Benutzern und Gruppen (mit CRX2Oak) oder Oak-Upgrade)

Benutzer und Gruppen können mithilfe der Tools crx2oak oder oak-upgrade zwischen AEM-Instanzen migriert werden.

  1. Laden Sie die jar crx2oak oder oak-upgrade herunter, die der verwendeten Oak-Version entspricht:

    1. Oak-Upgrade: https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-upgrade
    2. Crx2Oak: Maven-Repository
  2. Laden Sie die JAR-Datei auf den AEM-Server hoch…

  3. Beenden Sie AEM (Quell- und Zielinstanzen).

  4. Ersetzen Sie den Namen der JAR-Datei im folgenden Befehl.

  5. Ersetzen /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv,/home/users/K/Kj1406Qo9IDODc_nk5Ib im --exclude-paths Teil-Parameter des folgenden Befehls mit den Pfaden des Administrators und anonymer Benutzer von Ihrem Quellsystem aus.

  6. Ändern Sie die Pfade in der Zeile so, dass sie zu Ihrer Instanz passen (fügen Sie bei Bedarf segment-old: vor den Pfad, siehe hier https://jackrabbit.apache.org/oak/docs/migration.html): /opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository

  7. Führen Sie dann den Befehl auf der Shell des Servers aus:

    java -Xms2g -Xmx2g -jar oak-upgrade-1.8.12.jar \
    --include-paths=/home \
    --merge-paths=/home \
    --exclude-paths=/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv,/home/users/K/Kj1406Qo9IDODc_nk5Ib,/home/groups/a/administrators,/home/groups/a/analytics-administrators,/home/groups/c/community-moderators,/home/groups/c/content-authors,/home/groups/c/contributor,/home/groups/community/community-groupadmin,/home/groups/community/community-sitecontentmanager,/home/groups/community/community-sitemembers,/home/groups/d/dam-users,/home/groups/default/order-administrators,/home/groups/e/everyone,/home/groups/f/forms-users,/home/groups/forms/fd-administrators,/home/groups/forms/forms-users,/home/groups/geometrixx,/home/groups/media,/home/groups/o/operators,/home/groups/projects,/home/groups/t/tag-administrators,/home/groups/t/target-activity-authors,/home/groups/u/user-administrators,/home/groups/w/workflow-editors,/home/groups/w/workflow-users,/home/users/a/admin,/home/users/a/anonymous,/home/users/mac,/home/users/media,/home/users/projects,/home/users/system,/home/rep:policy,/home/users/rep:policy,/home/groups/rep:policy \
    segment-old:/opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository  upgradeusers.log &
    
  8. Gehen Sie nach Abschluss des Vorgangs zu Schritt 3, um die ACLs zu migrieren.  Wenn Sie nicht mit Crx2Oak migrieren können, führen Sie stattdessen die folgenden Schritte zur Package-Migration aus.

Schritt 2B: Benutzer und Gruppen migrieren (mithilfe von Paketen)

Wenn Benutzer nicht automatisch über LDAP/SAML-Authentifizierung oder Crx2Oak (Schritt 2A oben) importiert wurden, können Sie Benutzer und Gruppen verpacken.

In diesem Fall erstellen Sie zwei separate Pakete auf dem alten System (außer Admin und anonymen vorkonfigurierten Benutzern).

Führen Sie folgende Schritte aus:

  1. Kopieren Sie den Pfad der anonymen und Admin-Benutzerknoten aus den Ergebnissen in Schritt 1 (Schritt 1: Admin und anonyme Benutzer suchen).

    Beispiel: /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv - Administrator-Benutzer auf dem System, auf dem Sie das Paket erstellen, oder /home/users/K/Kj1406Qo9IDODc_nk5Ib - anonymer Benutzer auf dem System, in dem Sie das Paket erstellen

  2. Navigieren Sie zu Package Managerhttp://host:port/crx/packmgr/index.jsp und melden Sie sich als Administrator an.

  3. Package erstellen Benutzer.

  4. Fügen Sie einen Filter mit diesen Ausschlussregeln (auf dem /home/users-Filter) zur Paketkonfiguration für /home/users hinzu:

    1. exclude /home/users/.*/.tokens
    2. exclude /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
    3. exclude /home/users/K/Kj1406Qo9IDODc_nk5Ib
    4. exclude /home/users/a/admin
    5. exclude /home/users/a/anonymous
    6. exclude /home/users/system
    7. exclude /home/users/geometrixx
    8. exclude /home/users/media
    9. exclude /home/users/projects
    10. exclude /home/users/mac
  5. Erstellen Sie das Paket.

  6. Laden Sie das Paket herunter.

  7. Entpacken Sie die ZIP-Datei des Pakets auf Ihrem Computer: jar -xvf users.zip META-INF/vault/filter.xml

  8. Öffnen Sie die Datei META-INF/vault/filter.xml in einem Texteditor.

  9. Modus hinzufügen = merge der filter ... -Tag, z. B.:

    ?xml version="1.0" encoding="UTF-8"?
    workspaceFilter version="1.0"
    filter root="/home/users" mode="merge"
    exclude pattern="/home/users/.*/.tokens"/
    exclude pattern="/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv"/
    exclude pattern="/home/users/K/Kj1406Qo9IDODc_nk5Ib"/
    exclude pattern="/home/users/a/admin"/
    exclude pattern="/home/users/a/anonymous"/
    exclude pattern="/home/users/system"/
    exclude pattern="/home/users/geometrixx"/
    exclude pattern="/home/users/media"/
    exclude pattern="/home/users/projects"/
    exclude pattern="/home/users/mac"/
    /filter
    /workspaceFilter
    
  10. Komprimieren Sie den geänderten Paketinhalt neu, sodass er die Änderung enthält.

    jar -uvf users.zip META-INF/vault/filter.xml

  11. Erstellen Sie eine Gruppen Paket, das eine Filterregel enthält /home/groups.

  12. Wiederholen Sie die Schritte 11 bis 14 für das Gruppenpaket.

  13. (Nur Upgrade) Wenn Sie die Migration auf eine neuere Version von AEM durchführen, installieren Sie eine neue lokale AEM-Instanz der alten Version (ohne Beispielinhalte) und installieren Sie dort das Benutzerpaket und dann das Gruppenpaket. Führen Sie dann eine ersetzende Aktualisierung auf die neue Version auf dieser Instanz durch. Dadurch werden die Benutzer in die neue Oak-Darstellung konvertiert. Erstellen Sie aus den Benutzern nach dem In-Place-Upgrade erneut ein Paket, um sie auf die gewünschte aktualisierte Instanz zu portieren. Tun Sie dasselbe für die Benutzergruppen.

  14. Installieren Sie das Benutzerpaket auf dem neuen System.

  15. Installieren Sie das Gruppenpaket auf dem neuen System.

  16. Wenn Sie von einer älteren AEM auf 6.3 migrieren, gehen Sie zu /useradmin Benutzeroberfläche und Hinzufügen des Benutzerreplikations-Empfängers zum Administratoren hinzugefügt.

Schritt 3. Migration von ACLs

Wenn Sie Tools (ACS Commons) in AEM installieren können, führen Sie die folgenden Schritte aus:

  1. Laden Sie ACS Commons herunter und installieren Sie es.

  2. Führen Sie die hier angegebenen Schritte aus, um ein ACL-Paket zu erstellen.

  3. Navigieren Sie zu http://aem-host:port/crx/packmgr/index.jsp und melden Sie sich als Administrator an.

  4. Klicken Sie auf das ACL-Paket.

  5. Klicken Sie auf Bearbeiten.

  6. Wählen Sie die Registerkarte Erweitert (siehe Screenshot unten).

  7. Wählen Sie im Dropdown-Menü „AC-Handhabung“ die Option Zusammenführen, um zu vermeiden, dass vorhandene ACLs im Zielsystem entfernt werden.

    Dies ist besonders wichtig bei der Migration von ACLs zwischen verschiedenen Versionen von AEM (da es verhindert, dass vorkonfigurierte ACLs entfernt werden).

Wenn Sie keine Tools (ACS Commons) in AEM installieren können, führen Sie die folgenden Schritte aus.
Beachten Sie, dass der Computer, auf dem Sie diese Befehle ausführen, Mac OS, Linux oder Windows (unter Verwendung von Cygwin) sein muss, auf dem curl, python und Java SDK installiert sind.

  1. Navigieren Sie zu http://src-aem-host:port/crx/packmgr/index.jsp und melden Sie sich als Administrator an.

  2. Erstellen Sie ein Paket mit dem Namen ACL-Migration.

  3. Klicken Sie auf Bearbeiten Schaltfläche.

  4. Wählen Sie die Erweitert Registerkarte und legen AC-Handling-Modus nach Zusammenführen.

  5. Speichern Sie.

  6. Erstellen Sie das Paket und laden Sie es herunter.

  7. Führen Sie im Dateisystem diesen Befehl im Paket aus, um die META-INF/vault/filter.xml Datei:

    jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
    
  8. Führen Sie im selben Verzeichnis diesen Befehl aus, um eine JSON-Datei der ACL-Pfade unter herunterzuladen. /content aus der Quellinstanz (legen Sie den Benutzernamen, das Kennwort und den richtigen Host fest):

    curl -u admin:admin 'http://aemhost/crx/de/query.jsp?' -G --data-urlencode '_dc=1507011481908&_charset_=utf-8&type=xpath&stmt=/jcr:root/content//element(*,rep:ACL)&showResults=true'  data.json
    
  9. Datei erstellen generate-package-filter.py und fügen Sie den unten stehenden Python-Code ein:

    import json
    from pprint import pprint
    
    with open ('data.json') as data_file:
        data = json.load(data_file)
    
    print("?xml version=\"1.0\" encoding=\"UTF-8\"?")
    print("workspaceFilter version=\"1.0\"")
    form item in data"results":
        print("filter root=\"{path}\" /" . format(path=item "path"))
    print("/workspaceFilter")
    
  10. Führen Sie das Python-Skript aus demselben Ordner aus, in dem data.json erstellt wurde und die Ausgabe in META-INF/vault/filter.xml (ersetzt den vorhandenen Inhalt von filter.xml):

    python generate-packge-filter.py  META-INF/vault/filter.xml
    
  11. Verwenden Sie diesen Befehl, um die Datei filter.xml in der ZIP-Datei zu aktualisieren:

    jar -uvf ACL-migration-1.0.zip META-INF/vault/filter.xml
    
  12. Laden Sie die ZIP-Datei in den Paketmanager der Quellinstanz hoch: http://src-aem-host:port/crx/packmgr/index.jsp

  13. Klicken Sie auf Erstellen oder Neu erstellen, um das Paket zu erstellen.

  14. Laden Sie das Paket vom Quell-AEM-Server herunter.

  15. Laden Sie das Paket in den Paketmanager des Ziel-AEM-Servers hoch: http://dst-aem-host:port/crx/packmgr/index.jsp

  16. Klicken Sie auf Installieren, um es zu installieren.

  17. Wiederholen Sie die Schritte 8 bis 16 für alle anderen Pfade, die den curl-Befehl des Pfads ändern. Dies würde beispielsweise die ACLs unter /etc anstelle von /content abrufen:

curl -u admin:admin 'http://aemhost/crx/de/query.jsp?' -G --data-urlencode '_dc=1507011481908&_charset_=utf-8&type=xpath&stmt=/jcr:root/etc//element(*,rep:ACL)&showResults=true'  data.json

Auf dieser Seite