Migrieren von Benutzern, Gruppen und ACLs zwischen AEM-Instanzen

Dieser Artikel bietet verschiedene Methoden zum Migrieren von Benutzenden und Gruppen mit ACL-Berechtigungen in AEM von einem Server zu einem anderen oder von einer AEM-Instanz zu einer anderen.

Beschreibung description

Umgebung

Adobe Experience Manager 6.5 (AEM)

Problem/Symptome

Migrieren Sie Benutzende und Gruppen mit ACL-Berechtigungen in AEM von einem Server zu einem anderen oder von einer AEM-Instanz zu einer anderen.

Auflösung resolution

Schritt 1: Admin und anonyme Benutzer suchen

  1. Wechseln Sie zur /crx/de/index.jsp der CRXDE Lite-App und melden Sie sich als Administrator an (im Quellsystem).
  2. Navigieren Sie zu Tools => Abfrage.
  3. Geben Sie im unteren Abfrage-Feld diese Abfrage ein, um den Admin-Benutzer zu finden: /jcr:root/home/users//element(*,rep:User)[ @rep:principalName="admin"].
  4. Klicken Sie 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 Sie Ausführen und kopieren Sie den Pfad des Knotens des anonymen Benutzers in die Ergebnisse in eine Textdatei (jetzt haben Sie also zwei Pfade, einen für „Admin“ und einen für „Anonym„). Beispiel:
    /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv: Admin-Benutzer im Quellsystem
    /home/users/K/Kj1406Qo9IDODc_nk5Ib: anonymer Benutzer im Quellsystem

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

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

In diesem Fall erstellen Sie zwei separate Pakete auf dem alten System (mit Ausnahme von Administratoren und anonymen vorkonfigurierten Benutzern).

Führen Sie folgende Schritte aus:

  1. Kopieren Sie den Pfad der Benutzerknoten „Anonym“ und „Admin“ aus den Ergebnissen von Schritt 1 (Schritt 1: Suchen der Benutzer „Admin“ und „Anonym) oben.

    z. B.:

    /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv : Admin-Benutzer auf dem System, auf dem Sie das Paket erstellen, oder

    /home/users/K/Kj1406Qo9IDODc_nk5Ib : anonymer Benutzer auf dem System, auf dem Sie das Paket erstellen

  2. Wechseln Sie zum Package Manager, http://host:port/crx/packmgr/index.jsp und melden Sie sich als admin an.

  3. Erstellen Sie das Paket users.

  4. Fügen Sie der Paketkonfiguration einen Filter für /home/users mit diesen Ausschlussregeln hinzu (im /home/users): (Hinweis: Die Liste muss möglicherweise geändert werden, wenn das Produkt Gruppen/Benutzer hinzufügen//aus der AEM entfernen)

    1. /home/users/ ausschließen.*/.tokens
    2. exclude /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
    3. exclude /home/users/K/Kj1406Qo9IDODc_nk5Ib
    4. /home/users/a/admin ausschließen
    5. /home/users/a/anonymous ausschließen
    6. /home/users/system ausschließen
    7. Ausschließen /home/users/geometrixx
    8. /home/users/media ausschließen
    9. /home/users/projects ausschließen
    10. /home/users/mac ausschließen
  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. Fügen Sie mode = merge zum <filter ...>-Tag hinzu, z. B.:

    code language-none
    <?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 Gruppen-Paket, das eine /home/groups enthält.

  12. Wiederholen Sie die Schritte 1 bis 10 für das Gruppenpaket.

  13. (Nur Upgrade) Wenn Sie die Migration auf eine neuere AEM-Version durchführen, installieren Sie eine neue lokale AEM-Instanz der alten Version (mit nosamplecontent) und installieren Sie dort sowohl das Benutzerpaket als auch das Gruppenpaket. Führen Sie dann auf dieser Instanz ein In-Place-Upgrade auf die neue Version 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-Version auf 6.3 migrieren, wechseln Sie zur /useradmin-Benutzeroberfläche und fügen Sie den Benutzerreplikations-Empfänger zur Gruppe Administratoren hinzu.

Schritt 3. Migrieren von ACLs

(HINWEIS: Das erstellte Paket sollte nur die benötigten ACLs enthalten.) Beachten Sie, dass der Rechner, auf dem Sie diese Befehle ausführen, unter Mac OS, Linux oder Windows (mit Cygwin) laufen muss und cURL, Python und Java SDK installiert sein müssen.

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

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

  3. Klicken Sie auf die Bearbeiten-Schaltfläche.

  4. Wählen Sie die Registerkarte Erweitert aus und setzen AC-Bearbeitungsmodus auf Zusammenführen.

  5. Speichern Sie.

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

  7. Führen Sie auf dem Dateisystem diesen Befehl für das Paket aus, um die META-INF/vault/filter.xml-Datei zu extrahieren:

    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 mit den ACL-Pfaden unter /content von der Quellinstanz herunterzuladen (geben Sie den Benutzernamen, das Kennwort und den richtigen Host an):

    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. Erstellen Sie eine Datei generate-package-filter.py und fügen Sie den unten stehenden Python-Code darin ein:\

    code language-none
    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 in demselben Ordner aus, in dem data.json erstellt wurde, und speichern Sie die Ausgabe in META-INF/vault/filter.xml (und ersetzen Sie damit 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 Package Manager 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 Package Manager 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

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f