Migration d’utilisateurs, de groupes et de listes de contrôle d’accès entre instances AEM

Dernière mise à jour : 2023-04-28

Description

Environnement
Adobe Experience Manager

Problème
Comment migrer des utilisateurs et des groupes avec des autorisations ACL dans AEM d’un serveur à un autre ou d’une instance AEM à une autre.

Résolution

Solution

Étape 1 : Rechercher les administrateurs et les utilisateurs anonymes

  1. Accédez à /crx/de/index.jsp dans l’application CRXDE lite et connectez-vous en tant qu’utilisateur administrateur (sur le système source).

  2. Accédez à Outils = Requête.

  3. En bas Requête saisissez cette requête pour rechercher l’utilisateur administrateur : /jcr:root/home/users//element(*,rep:User)@rep:principalName="admin".

  4. Cliquez sur Exécuter et copiez le chemin d’accès du noeud utilisateur admin dans les résultats dans un fichier texte.

  5. Répétez l’étape 3 avec une requête pour l’utilisateur anonyme : /jcr:root/home/users//element(*,rep:User)@rep:principalName="anonymous".

  6. Cliquez sur Exécuter et copiez le chemin d’accès du noeud utilisateur anonyme dans les résultats dans un fichier texte (vous disposez donc de deux chemins d’accès, l’un pour "admin" et l’autre pour "anonymous").

    Par exemple :

    /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv - utilisateur administrateur sur le système source

    /home/users/K/Kj1406Qo9IDODc_nk5Ib - utilisateur anonyme sur le système source

Étape 2A : Migration des utilisateurs et des groupes (à l’aide de Crx2Oak) ou mise à niveau Oak)

Les utilisateurs et les groupes peuvent être migrés entre les instances d’AEM à l’aide des outils crx2oak ou oak-upgrade.

  1. Téléchargez le fichier jar crx2oak ou oak-upgrade correspondant à la version Oak que vous utilisez :

    1. Oak-upgrade : https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-upgrade
    2. Crx2Oak : Référentiel Maven
  2. Téléchargez le fichier jar sur le serveur AEM…

  3. Arrêtez AEM (instances source et de destination).

  4. Remplacez le nom du fichier jar dans la commande ci-dessous.

  5. Remplacer /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv,/home/users/K/Kj1406Qo9IDODc_nk5Ib dans le --exclude-paths du paramètre part de la commande ci-dessous avec les chemins d’accès des utilisateurs admin et anonyme de votre système source.

  6. Modifiez les chemins d’accès en ligne pour qu’ils correspondent à votre instance (ajoutez segment-old: avant le chemin d’accès, le cas échéant, voir ici https://jackrabbit.apache.org/oak/docs/migration.html) : /opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository

  7. Exécutez ensuite la commande sur le shell du serveur:

    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. Une fois l’opération terminée, passez à l’étape 3 pour migrer les listes de contrôle d’accès.  Si vous ne pouvez pas migrer à l’aide de Crx2Oak, suivez plutôt les étapes de migration de package ci-dessous.

Étape 2B : Migrer des utilisateurs et des groupes (à l’aide de packages)

Si les utilisateurs n’ont pas été importés automatiquement via l’authentification LDAP/SAML ou Crx2Oak (étape 2A ci-dessus), vous pouvez regrouper les utilisateurs et les groupes.

Dans ce cas, vous créez deux packages distincts sur l’ancien système (à l’exclusion des administrateurs et des utilisateurs anonymes prêts à l’emploi).

Procédez de la façon suivante :

  1. Copiez le chemin d’accès des noeuds utilisateur anonymes et admin à partir des résultats de l’étape 1 (Étape 1 : Rechercher les administrateurs et les utilisateurs anonymes) ci-dessus.

    Par exemple : /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv - utilisateur administrateur sur le système sur lequel vous créez le module ; ou /home/users/K/Kj1406Qo9IDODc_nk5Ib - utilisateur anonyme sur le système sur lequel vous créez le package

  2. Accédez au Gestionnaire de moduleshttp://host:port/crx/packmgr/index.jsp et connectez-vous en tant qu’administrateur.

  3. Créer un package utilisateurs.

  4. Ajoutez un filtre à la configuration du package pour /home/users avec ces règles d’exclusion (sur le filtre /home/users) :

    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. Créez le package.

  6. Téléchargez le package.

  7. Décompressez le fichier zip du package sur votre ordinateur : jar -xvf users.zip META-INF/vault/filter.xml.

  8. Ouvrez le fichier META-INF/vault/filter.xml dans un éditeur de texte.

  9. Ajouter un mode = merge au filter ... par exemple :

    ?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. Recompressez le contenu du package modifié pour qu’il inclue la modification.

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

  11. Créez un groups package contenant une règle de filtre /home/groups.

  12. Répétez les étapes 11 à 14 pour le package de groupes.

  13. (Mise à niveau uniquement) Si vous effectuez une migration vers une nouvelle version d’AEM, installez une nouvelle instance d’AEM locale de l’ancienne version (avec nosamplecontent), puis installez-y le package utilisateurs, puis le package groupes. Effectuez ensuite une mise à niveau statique vers la nouvelle version sur cette instance. Les utilisateurs sont ainsi convertis en nouvelle représentation Oak. Après la mise à niveau sur place, effectuez un nouveau package des utilisateurs pour les transférer vers l’instance mise à niveau prévue. Faites de même pour les groupes d’utilisateurs.

  14. Installez le package d’utilisateurs sur le nouveau système.

  15. Installez le package de groupes sur le nouveau système.

  16. Si vous migrez d’une ancienne AEM vers la version 6.3, accédez à la /useradmin et ajouter le récepteur de réplication de l’utilisateur à l’interface utilisateur administrateurs groupe.

Étape 3. Migrer les listes de contrôle d’accès

Si vous pouvez installer des outils (ACS Commons) dans AEM, procédez comme suit :

  1. Téléchargez et installez ACS Commons.

  2. Suivez les étapes fournies ici pour créer un package de liste de contrôle d’accès (ACL).

  3. Accédez à http://aem-host:port/crx/packmgr/index.jsp et connectez-vous en tant qu’administrateur.

  4. Cliquez sur le package ACL.

  5. Cliquez sur Modifier.

  6. Sélectionnez l’onglet Avancé (voir la capture d’écran ci-dessous).

  7. Dans le menu déroulant Gestion du contrôle d’accès, sélectionnez Fusionner pour éviter de supprimer des listes de contrôle d’accès existantes sur le système de destination.

    Ceci est particulièrement important lors de la migration des listes de contrôle d’accès entre différentes versions d’AEM (car cela évite de supprimer les listes de contrôle d’accès prêtes à l’emploi).

Si vous ne parvenez pas à installer des outils (ACS Commons) sur AEM, suivez ces étapes.
Notez que la machine sur laquelle vous exécutez ces commandes doit être Mac OS, Linux ou Windows (à l’aide de Cygwin) avec curl, python et Java SDK installés.

  1. Accédez à http://src-aem-host:port/crx/packmgr/index.jsp et connectez-vous en tant qu’administrateur.

  2. Créez un module nommé ACL-migration.

  3. Cliquez sur le bouton Modifier bouton .

  4. Sélectionnez la Avancé et définissez Mode de traitement AC to Fusion.

  5. Enregistrez.

  6. Créez le package et téléchargez-le.

  7. Sur le système de fichiers, exécutez cette commande sur le package pour extraire le fichier META-INF/vault/filter.xml fichier :

    jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
    
  8. Dans le même répertoire, exécutez cette commande pour télécharger un fichier json des chemins d’accès ACL sous /content à partir de l’instance source (définissez le nom d’utilisateur, le mot de passe et l’hôte correct) :

    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. Création d’un fichier generate-package-filter.py et collez le code python ci-dessous à l’intérieur :

    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. Exécutez le script python à partir du même dossier où data.json a été créé et enregistre la sortie dans META-INF/vault/filter.xml (remplacement du contenu existant de filter.xml) :

    python generate-packge-filter.py  META-INF/vault/filter.xml
    
  11. Utilisez cette commande pour mettre à jour le code filter.xml dans le fichier zip :

    jar -uvf ACL-migration-1.0.zip META-INF/vault/filter.xml
    
  12. Téléchargez le fichier zip dans le gestionnaire de packages de l’instance source : http://src-aem-host:port/crx/packmgr/index.jsp

  13. Cliquez sur Créer ou Recréer pour créer le package.

  14. Téléchargez le package à partir du serveur AEM source.

  15. Téléchargez le package dans le gestionnaire de packages AEM serveur de destination : http://dst-aem-host:port/crx/packmgr/index.jsp

  16. Cliquez sur Installer pour l’installer.

  17. Répétez les étapes 8 à 16 pour tous les autres chemins d’accès en modifiant la commande curl du chemin d’accès. Par exemple, les listes de contrôle d’accès seraient alors sous /etc au lieu de /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

Sur cette page