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
- Wechseln Sie zur
/crx/de/index.jsp
der CRXDE Lite-App und melden Sie sich als Administrator an (im Quellsystem). - Navigieren Sie zu Tools
=>
Abfrage. - 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"]
. - Klicken Sie Ausführen und kopieren Sie den Pfad des Admin-Benutzerknotens in die Ergebnisse in eine Textdatei.
- Wiederholen Sie Schritt 3 mit einer Abfrage für einen anonymen Benutzer:
/jcr:root/home/users//element(*,rep:User)[ @rep:principalName="anonymous"]
. - 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:
-
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 -
Wechseln Sie zum Package Manager,
http://host:port/crx/packmgr/index.jsp
und melden Sie sich als admin an. -
Erstellen Sie das Paket users.
-
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)- /home/users/ ausschließen.*/.tokens
- exclude /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
- exclude /home/users/K/Kj1406Qo9IDODc_nk5Ib
- /home/users/a/admin ausschließen
- /home/users/a/anonymous ausschließen
- /home/users/system ausschließen
- Ausschließen /home/users/geometrixx
- /home/users/media ausschließen
- /home/users/projects ausschließen
- /home/users/mac ausschließen
-
Erstellen Sie das Paket.
-
Laden Sie das Paket herunter.
-
Entpacken Sie die ZIP-Datei des Pakets auf Ihrem Computer:
jar -xvf users.zip META-INF/vault/filter.xml
-
Öffnen Sie die Datei
META-INF/vault/filter.xml
in einem Texteditor. -
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>
-
Komprimieren Sie den geänderten Paketinhalt neu, sodass er die Änderung enthält.
jar -uvf users.zip META-INF/vault/filter.xml
-
Erstellen Sie Gruppen-Paket, das eine
/home/groups
enthält. -
Wiederholen Sie die Schritte 1 bis 10 für das Gruppenpaket.
-
(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. -
Installieren Sie das Benutzerpaket auf dem neuen System.
-
Installieren Sie das Gruppenpaket auf dem neuen System.
-
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.
-
Navigieren Sie zu
http://src-aem-host:port/crx/packmgr/index.jsp,
und melden Sie sich als admin an. -
Erstellen Sie ein Paket mit dem Namen ACL-Migration.
-
Klicken Sie auf die Bearbeiten-Schaltfläche.
-
Wählen Sie die Registerkarte Erweitert aus und setzen AC-Bearbeitungsmodus auf Zusammenführen.
-
Speichern Sie.
-
Erstellen Sie das Paket und laden Sie es herunter.
-
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
-
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
-
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>")
-
Führen Sie das Python-Skript in demselben Ordner aus, in dem
data.json
erstellt wurde, und speichern Sie die Ausgabe inMETA-INF/vault/filter.xml
(und ersetzen Sie damit den vorhandenen Inhalt vonfilter.xml
):python generate-packge-filter.py > META-INF/vault/filter.xml
-
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
-
Laden Sie die ZIP-Datei in den Package Manager der Quellinstanz hoch:
http://src-aem-host:port/crx/packmgr/index.jsp
-
Klicken Sie auf Erstellen oder Neu erstellen, um das Paket zu erstellen.
-
Laden Sie das Paket vom Quell-AEM-Server herunter.
-
Laden Sie das Paket in den Package Manager des Ziel-AEM-Servers hoch:
http://dst-aem-host:port/crx/packmgr/index.jsp
-
Klicken Sie auf Installieren, um es zu installieren.
-
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