Eseguire la migrazione di utenti, gruppi e ACL tra istanze AEM

Ultimo aggiornamento: 2023-04-28

Descrizione

Ambiente
Adobe Experience Manager

Problema
Come migrare utenti e gruppi con autorizzazioni ACL in AEM da un server a un altro o da un'istanza AEM a un'altra.

Risoluzione

Soluzione

Passaggio 1: trova l’amministratore e gli utenti anonimi

  1. Vai all’app CRXDE lite /crx/de/index.jsp e accedi come utente amministratore (sul sistema di origine).

  2. Vai a Strumenti = Query.

  3. In basso Query inserisci questa query per trovare l’utente amministratore: /jcr:root/home/users//element(*,rep:User)@rep:principalName="admin".

  4. Fai clic su Esegui e copia il percorso del nodo utente amministratore nei risultati in un file di testo.

  5. Ripeti il passaggio 3 con una query per l’utente anonimo: /jcr:root/home/users//element(*,rep:User)@rep:principalName="anonymous".

  6. Fai clic su Esegui e copia il percorso del nodo utente anonimo nei risultati in un file di testo (quindi ora hai due percorsi, uno per "admin" e uno per "anonymous").

    Ad esempio:

    /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv: utente amministratore sul sistema di origine

    /home/users/K/Kj1406Qo9IDODc_nk5Ib: utente anonimo sul sistema di origine

Passaggio 2A: Migrare utenti e gruppi (utilizzando Crx2Oak o Oak-upgrade)

È possibile eseguire la migrazione di utenti e gruppi tra istanze AEM utilizzando gli strumenti crx2oak o oak-upgrade.

  1. Scarica il jar crx2oak o oak-upgrade corrispondente alla versione Oak che stai utilizzando:

    1. Oak-upgrade: https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-upgrade
    2. Crx2Oak: Archivio Maven
  2. Carica il file jar sul server AEM.

  3. Interrompi AEM (istanze di origine e di destinazione).

  4. Sostituisci il nome del file jar nel comando seguente.

  5. Sostituisci /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv,/home/users/K/Kj1406Qo9IDODc_nk5Ib in --exclude-paths parametro di parte del comando sottostante con i percorsi degli utenti amministratori e anonimi dal sistema di origine.

  6. Modifica i percorsi in linea in modo che corrispondano all’istanza (se necessario, aggiungi segment-old: prima del percorso, come puoi vedere qui https://jackrabbit.apache.org/oak/docs/migration.html): /opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository

  7. Esegui quindi il comando sulla shell del server:

    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. Dopo aver eseguito l’operazione, vai al passaggio 3 per effettuare la migrazione degli ACL.  Se non riesci a effettuare la migrazione utilizzando Crx2Oak, segui invece i passaggi di migrazione del pacchetto riportati di seguito.

Passaggio 2B: esegui la migrazione di utenti e gruppi (tramite pacchetti)

Se gli utenti non sono stati importati automaticamente tramite autenticazione LDAP/SAML o Crx2Oak (passaggio 2A sopra), è possibile creare pacchetti di utenti e gruppi.

In questo caso puoi creare due pacchetti separati sul sistema precedente (esclusi gli utenti amministratori e anonimi predefiniti).

Segui questi passaggi:

  1. Copia il percorso dei nodi utente anonimi e amministratori dai risultati nel passaggio 1 (Passaggio 1: Trova l'amministratore e gli utenti anonimi).

    Ad esempio: /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv - l'utente amministratore del sistema in cui stai creando il pacchetto, oppure /home/users/K/Kj1406Qo9IDODc_nk5Ib - utente anonimo sul sistema in cui si sta creando il pacchetto

  2. Vai a Gestione pacchettihttp://host:port/crx/packmgr/index.jsp e accedi come amministratore.

  3. Crea pacchetto utenti.

  4. Aggiungi un filtro alla configurazione del pacchetto per /home/users con queste regole di esclusione (sul filtro /home/users):

    1. escludi /home/users/.*/.tokens
    2. escludi /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
    3. escludi /home/users/K/Kj1406Qo9IDODc_nk5Ib
    4. escludi /home/users/a/admin
    5. escludi /home/users/a/anonymous
    6. escludi /home/users/system
    7. escludi /home/users/geometrixx
    8. escludi /home/users/media
    9. escludi /home/users/projects
    10. escludi /home/users/mac
  5. Crea il pacchetto.

  6. Scarica il pacchetto.

  7. Decomprimi il file zip del pacchetto sul computer: jar -xvf users.zip META-INF/vault/filter.xml

  8. Apri il file META-INF/vault/filter.xml in un editor di testo.

  9. Aggiungi modalità = merge al filter ... ad esempio:

    ?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. Comprimi nuovamente il contenuto del pacchetto modificato in modo da includere la modifica.

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

  11. Crea un gruppi pacchetto che contiene una regola di filtro /home/groups.

  12. Ripeti i passaggi 11-14 per il pacchetto “gruppi”.

  13. (Solo aggiornamento) Se esegui la migrazione alla versione AEM più recente, installa una nuova istanza AEM locale della versione precedente(con nosamplecontent) e installa sia il pacchetto utenti sia il pacchetto gruppi. Esegui quindi un aggiornamento locale alla nuova versione in tale istanza. In questo modo gli utenti vengono convertiti nella nuova rappresentazione Oak. Dopo l’aggiornamento sul posto, crea nuovamente un pacchetto utenti per trasferirli nell’istanza aggiornata prevista. Effettua le stesse operazioni per i gruppi di utenti.

  14. Installa il pacchetto di utenti sul nuovo sistema.

  15. Installa il pacchetto di gruppi sul nuovo sistema.

  16. Se effettui la migrazione da una versione precedente di AEM alla versione 6.3, passa alla /useradmin Interfaccia utente e aggiungi il ricevitore di replica utente al amministratori gruppo.

Passaggio 3: esegui la migrazione di ACL

Se sei in grado di installare strumenti (ACS Commons) da AEM, segui questi passaggi:

  1. Scarica e installa ACS Commons.

  2. Segui i passaggi seguenti per creare un pacchetto ACL.

  3. Vai a http://aem-host:port/crx/packmgr/index.jsp e accedi come amministratore.

  4. Fai clic sul pacchetto ACL.

  5. Fai clic su Modifica.

  6. Seleziona la scheda Avanzate (vedi la schermata seguente).

  7. Nel menu a discesa Gestione AC, seleziona Unisci per evitare di rimuovere gli ACL esistenti sul sistema di destinazione.

    Ciò è particolarmente importante quando si esegue la migrazione di ACL tra versioni diverse di AEM (in quanto evita la rimozione di ACL predefiniti).

Se non sei in grado di installare strumenti (ACS Commons) in AEM, segui questi passaggi.
Tieni presente che il computer in cui esegui questi comandi deve essere Mac OS, Linux o Windows (utilizzando Cygwin) con curl, python e Java SDK installato.

  1. Vai a http://src-aem-host:port/crx/packmgr/index.jsp e accedi come amministratore.

  2. Crea un pacchetto denominato Migrazione ACL.

  3. Fai clic sul pulsante Modifica pulsante .

  4. Seleziona la Avanzate scheda e set Modalità AC Handling a Unisci.

  5. Salva.

  6. Crea il pacchetto e scaricalo.

  7. Sul file system, esegui questo comando sul pacchetto per estrarre il META-INF/vault/filter.xml file:

    jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
    
  8. Nella stessa directory, esegui questo comando per scaricare un file json dei percorsi ACL sotto /content dall'istanza sorgente (imposta il nome utente, la password e l'host corretto):

    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. Creare un file generate-package-filter.py e incolla il codice pitone al suo interno:

    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. Esegui lo script python dalla stessa cartella in cui data.json è stato creato e salvato in META-INF/vault/filter.xml (sostituzione del contenuto esistente di filter.xml):

    python generate-packge-filter.py  META-INF/vault/filter.xml
    
  11. Usa questo comando per aggiornare filter.xml nel file zip:

    jar -uvf ACL-migration-1.0.zip META-INF/vault/filter.xml
    
  12. Carica il file zip nel gestore dei pacchetti dell'istanza sorgente: http://src-aem-host:port/crx/packmgr/index.jsp

  13. Fai clic su Genera o Rigenera per creare il pacchetto.

  14. Scarica il pacchetto dal server AEM di origine.

  15. Carica il pacchetto nel gestore dei pacchetti AEM server di destinazione: http://dst-aem-host:port/crx/packmgr/index.jsp

  16. Fai clic su Installa per installarlo.

  17. Ripeti i passaggi 8-16 per tutti gli altri percorsi che modificano il comando CURL del percorso. Ad esempio, con il comando seguente si ottengono gli ACL in /etc anziché /content:

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

In questa pagina