Migrieren von Benutzern, Gruppen und ACLs zwischen AEM-Instanzen
Dieser Artikel bietet verschiedene Möglichkeiten, Benutzer und Gruppen mit ACL-Berechtigungen in AEM von einem Server auf einen anderen oder von einer AEM Instanz auf einen anderen zu migrieren.
Beschreibung description
Umgebung
Adobe Experience Manager (AEM)
Problem/Symptome
Migrieren Sie Benutzer und Gruppen mit ACL-Berechtigungen in AEM von einem Server zu einem anderen oder von einer AEM Instanz zu einer anderen.
Lösung resolution
Schritt 1: Admin und anonyme Benutzer suchen
-
Wechseln Sie zur CRXDE Lite-App
/crx/de/index.jsp
und melden Sie sich als Admin-Benutzer (im Quellsystem) an. -
Navigieren Sie zu Tools .
=>
Abfrage. -
Geben Sie im unteren Feld Abfrage diese Abfrage ein, um den Admin-Benutzer zu finden:
/jcr:root/home/users//element(*,rep:User)[ @rep:principalName="admin"]
. -
Klicken Sie auf Ausführen und kopieren Sie den Pfad des Administrationsbenutzerknotens in die Ergebnisse in eine Textdatei.
-
Wiederholen Sie Schritt 3 mit einer Abfrage für den anonymen Benutzer:
/jcr:root/home/users//element(*,rep:User)[ @rep:principalName="anonymous"]
. -
Klicken Sie auf Ausführen und kopieren Sie den Pfad des anonymen Benutzerknotens 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 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.
-
Laden Sie die crx2oak- oder oak-upgrade-jar herunter, die der verwendeten Oak-Version entspricht:
- Oak-Upgrade: https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-upgrade
- Crx2Oak: Maven-Repository
-
Laden Sie die JAR-Datei auf den AEM-Server hoch.
-
Beenden Sie AEM (Quell- und Zielinstanzen).
-
Ersetzen Sie den Namen der JAR-Datei im folgenden Befehl.
-
Ersetzen Sie
/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
,/home/users/K/Kj1406Qo9IDODc_nk5Ib
im Parameter--exclude-paths
des unten stehenden Befehls durch die Pfade des Administrators und der anonymen Benutzer aus Ihrem Quellsystem. -
Ändern Sie die Pfade in der Zeile so, dass sie mit Ihrer Instanz übereinstimmen (fügen Sie bei Bedarf
segment-old:
vor dem Pfad hinzu, siehe hier):/opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository
-
Führen Sie dann den Befehl auf der Shell des Servers aus:
code language-none 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 &
-
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 nativen Benutzern).
Führen Sie folgende Schritte aus:
-
Kopieren Sie den Pfad der anonymen und Admin-Benutzerknoten aus den Ergebnissen aus Schritt 1 (Schritt 1: Suchen Sie die Admin- und anonymen Benutzer) oben.
Beispiel:
/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 zu Package Manager,
http://host:port/crx/packmgr/index.jsp
und melden Sie sich als admin an. -
Erstellen Sie das Paket Benutzer.
-
Fügen Sie der Package-Konfiguration einen Filter für
/home/users
mit diesen Ausschlussregeln hinzu (im Filter/home/users
):- exclude /home/users/.*/.tokens
- exclude /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
- exclude /home/users/K/Kj1406Qo9IDODc_nk5Ib
- exclude /home/users/a/admin
- exclude /home/users/a/anonymous
- exclude /home/users/system
- exclude /home/users/geometrixx
- exclude /home/users/media
- exclude /home/users/projects
- exclude /home/users/mac
-
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 Tag
<filter ...>
hinzu, beispielsweise: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 ein Paket groups , das eine Filterregel
/home/groups
enthält. -
Wiederholen Sie die Schritte 1 bis 10 für das Gruppenpaket.
-
(Nur Aktualisierung) Wenn Sie die Migration auf eine neuere AEM 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 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. -
Installieren Sie das Benutzerpaket auf dem neuen System.
-
Installieren Sie das Gruppenpaket auf dem neuen System.
-
Wenn Sie von einer älteren AEM auf 6.3 migrieren, wechseln Sie zur Benutzeroberfläche von
/useradmin
und fügen Sie den Benutzerreplikations-Empfänger zur Gruppe Administratoren hinzu.
Schritt 3. Migration von ACLs
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.
-
Wechseln Sie zu
http://src-aem-host:port/crx/packmgr/index.jsp,
und melden Sie sich als Administrator an. -
Erstellen Sie ein Paket mit dem Namen ACL-migration.
-
Klicken Sie auf die Schaltfläche Bearbeiten .
-
Wählen Sie die Registerkarte Erweitert aus und setzen Sie AC-Handling-Modus auf Zusammenführen.
-
Speichern Sie.
-
Erstellen Sie das Paket und laden Sie es herunter.
-
Führen Sie im Dateisystem diesen Befehl für das Paket aus, um die Datei
META-INF/vault/filter.xml
zu extrahieren:jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
-
Führen Sie im selben Ordner diesen Befehl aus, um eine JSON-Datei der ACL-Pfade unter
/content
von der Quellinstanz herunterzuladen (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
-
Erstellen Sie eine Datei
generate-package-filter.py
und fügen Sie den unten stehenden Python-Code 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 aus demselben Ordner aus, in dem
data.json
erstellt wurde, und speichern Sie die Ausgabe inMETA-INF/vault/filter.xml
(ersetzen Sie 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 Paketmanager 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 Paketmanager 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