Migrar usuários, grupos e ACLs entre instâncias do AEM
Este artigo oferece diferentes maneiras de migrar Usuários e grupos com permissões de ACL no AEM de um servidor para outro ou de uma instância do AEM para outra.
Descrição description
Ambiente
Adobe Experience Manager (AEM)
Problema/Sintomas
Migrar usuários e grupos com permissões de ACL no AEM de um servidor para outro ou de uma instância do AEM para outra.
Resolução resolution
Etapa 1: encontre os usuários administradores e anônimos
-
Vá para o aplicativo CRXDE lite
/crx/de/index.jsp
e faça logon como usuário administrador (no sistema de origem). -
Ir para Ferramentas
=>
Consulta. -
Na caixa inferior Consulta, digite esta consulta para localizar o usuário administrador:
/jcr:root/home/users//element(*,rep:User)[ @rep:principalName="admin"]
. -
Clique em Executar e copie o caminho do nó do usuário administrador nos resultados para um arquivo de texto.
-
Repita a etapa 3 com uma consulta para usuário anônimo:
/jcr:root/home/users//element(*,rep:User)[ @rep:principalName="anonymous"]
. -
Clique em Executar e copie o caminho do nó do usuário anônimo nos resultados para um arquivo de texto (agora você tem dois caminhos, um para "administrador" e outro para "anônimo").
Por exemplo:/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
- usuário administrador no sistema de origem/home/users/K/Kj1406Qo9IDODc_nk5Ib
- usuário anônimo no sistema de origem
Etapa 2A: migrar usuários e grupos (usando Crx2Oak ou Oak-upgrade)
Usuários e grupos podem ser migrados entre instâncias do AEM usando as ferramentas crx2oak ou oak-upgrade.
-
Baixe o crx2oak ou oak-upgrade jar correspondente à versão do Oak que você está usando:
- Oak-upgrade: https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-upgrade
- Crx2Oak: repositório Maven
-
Faça upload do arquivo jar para o servidor AEM.
-
Pare o AEM (instâncias de origem e destino).
-
Substitua o nome do arquivo jar no comando abaixo.
-
Substitua
/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
,/home/users/K/Kj1406Qo9IDODc_nk5Ib
no parâmetro de parte--exclude-paths
do comando abaixo com os caminhos dos usuários administrador e anônimo do seu sistema de origem. -
Modifique os caminhos na linha para corresponderem à sua instância (adicione
segment-old:
antes do caminho, se necessário, consulte aqui):/opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository
-
Em seguida, execute o comando no shell do servidor:
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 &
-
Depois de concluído, vá para a etapa 3 para migrar as ACLs. Se não conseguir migrar usando o Crx2Oak, siga as etapas de migração de pacote abaixo.
Etapa 2B: migrar usuários e grupos (usando pacotes)
Se os usuários não foram importados automaticamente por meio da autenticação LDAP/SAML ou Crx2Oak (etapa 2A acima), é possível empacotar usuários e grupos.
Nesse caso, você cria dois pacotes separados no sistema antigo (excluindo usuários administrador e anônimo prontos para uso).
Siga estas etapas:
-
Copie o caminho dos nós de usuário anônimo e administrador dos resultados na Etapa 1 (Etapa 1: encontre os usuários administrador e anônimo) acima.
Por exemplo:
/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
- usuário administrador no sistema em que você está criando o pacote ou/home/users/K/Kj1406Qo9IDODc_nk5Ib
- usuário anônimo no sistema em que você está criando o pacote -
Vá para o Gerenciador de Pacotes,
http://host:port/crx/packmgr/index.jsp
e faça logon como administrador. -
Criar o pacote usuários.
-
Adicione um filtro à configuração de pacote para
/home/users
com essas regras de exclusão (no/home/users
filtro):- excluir /home/users/.*/.tokens
- excluir /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
- exclude /home/users/K/Kj1406Qo9IDODc_nk5Ib
- excluir /home/users/a/admin
- excluir /home/users/a/anonymous
- excluir /home/users/system
- excluir /home/users/geometrixx
- excluir /home/users/media
- excluir /home/users/projects
- excluir /home/users/mac
-
Crie o pacote.
-
Baixe o pacote.
-
Descompacte o arquivo zip do pacote no seu computador:
jar -xvf users.zip META-INF/vault/filter.xml
-
Abra o arquivo
META-INF/vault/filter.xml
em um editor de texto. -
Adicionar modo = mesclar à marca
<filter ...>
, por exemplo: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>
-
Volte a compactar o conteúdo do pacote modificado para incluir a mudança
jar -uvf users.zip META-INF/vault/filter.xml
-
Crie um pacote de grupos que contenha uma regra de filtro
/home/groups
. -
Repita as etapas 1 a 10 para o pacote de grupos.
-
(Somente atualização) Se estiver executando a migração para uma versão mais recente do AEM, instale uma nova instância do AEM local da versão antiga (com
nosamplecontent
) e instale o pacote de usuários e depois o pacote de grupos. Em seguida, execute uma atualização no local para a nova versão nessa instância. Isso converte os usuários para a nova representação do Oak. Após a atualização no local, reempacote os usuários novamente para exportá-los para a instância atualizada pretendida. Faça o mesmo para os grupos de usuários. -
Instale o pacote de usuários no novo sistema.
-
Instale o pacote de grupos no novo sistema.
-
Se você estiver migrando de uma versão mais antiga do AEM para a 6.3, acesse a interface do usuário do
/useradmin
e adicione o receptor de replicação do usuário ao grupo administradores.
Etapa 3. Migrar ACLs
Observe que a máquina em que você executa esses comandos deve ser Mac OS, Linux ou Windows (usando Cygwin) com curl, python e Java SDK instalado.
-
Vá para
http://src-aem-host:port/crx/packmgr/index.jsp,
e faça logon como administrador. -
Crie um pacote chamado ACL-migration.
-
Clique no botão Editar.
-
Selecione a guia Avançado e defina o Modo de manuseio de AC como Mesclar.
-
Salvar.
-
Crie o pacote e baixe-o.
-
No sistema de arquivos, execute este comando no pacote para extrair o arquivo
META-INF/vault/filter.xml
:jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
-
No mesmo diretório, execute este comando para baixar um arquivo json dos caminhos ACL em
/content
da instância de origem (defina o nome de usuário, a senha e o host correto):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
-
Crie um arquivo
generate-package-filter.py
e cole o código python abaixo nele:\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>")
-
Execute o script python na mesma pasta em que
data.json
foi criado e salve a saída emMETA-INF/vault/filter.xml
(substituindo o conteúdo existente defilter.xml
):python generate-packge-filter.py > META-INF/vault/filter.xml
-
Use este comando para atualizar o
filter.xml
no arquivo zip:jar -uvf ACL-migration-1.0.zip META-INF/vault/filter.xml
-
Carregue o arquivo zip no gerenciador de pacotes da instância de origem:
http://src-aem-host:port/crx/packmgr/index.jsp
-
Clique em Criar ou Recriar para criar o pacote.
-
Baixe o pacote do servidor do AEM de origem.
-
Carregar o pacote no gerenciador de pacotes do servidor AEM de destino:
http://dst-aem-host:port/crx/packmgr/index.jsp
-
Clique em Instalar para instalá-lo.
-
Repita as etapas 8 a 16 para qualquer outro caminho que altere o comando curl de caminho. Por exemplo, isso obteria as ACLs em
/etc
em vez 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