AEM インスタンス間でのユーザー、グループおよび ACL の移行

最終更新日: 2023-04-28

説明

環境
Adobe Experience Manager

問題
AEMで ACL 権限を持つユーザーとグループを、あるサーバーから別のサーバーに、またはあるAEMインスタンスから別のサーバーに移行する方法。

解決策

ソリューション

手順 1:管理者および匿名ユーザーを見つける

  1. CRXDE Lite アプリ(/crx/de/index.jsp)に移動し、(ソースシステムの)管理者ユーザーとしてログインします。

  2. に移動します。 ツール = クエリ.

  3. クエリ 」ボックスに入力し、次のクエリを入力して管理者ユーザーを検索します。 /jcr:root/home/users//element(*,rep:User)@rep:principalName="admin".

  4. クリック 実行 をクリックし、結果内の admin user ノードのパスをテキストファイルにコピーします。

  5. 匿名ユーザーに対してクエリを使用して、手順 3 を繰り返します。 /jcr:root/home/users//element(*,rep:User)@rep:principalName="anonymous".

  6. クリック 実行 結果内の匿名ユーザーノードのパスをテキストファイルにコピーします ( これで、2 つのパス(「admin」用と「anonymous」用)が作成されます )。

    例:

    /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv – ソースシステムの管理者ユーザー

    /home/users/K/Kj1406Qo9IDODc_nk5Ib – ソースシステムの匿名ユーザー

手順 2A:ユーザーとグループの移行(Crx2Oak を使用) または Oak-upgrade)

ユーザーおよびグループは、crx2oak または oak-upgrade ツールを使用して AEM インスタンス間を移行できます。

  1. 使用している Oak バージョンと一致する crx2oak または oak-upgrade jar をダウンロードします。

    1. Oak-upgrade:https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-upgrade
    2. Crx2Oak:Maven リポジトリ
  2. jar ファイルを AEM サーバーにアップロードします。

  3. AEM(ソースおよび宛先インスタンス)を停止します。

  4. 下記のコマンドの jar ファイルの名前を置き換えます。

  5. 置換 /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv,/home/users/K/Kj1406Qo9IDODc_nk5Ib 内 --exclude-paths 以下のコマンドの part パラメーターに、ソースシステムからの管理者ユーザーと匿名ユーザーのパスを指定します。

  6. 行にあるパスをインスタンスに一致するように変更します(必要に応じて、パスの前に segment-old: を追加します。https://jackrabbit.apache.org/oak/docs/migration.html を参照):/opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository

  7. 次に、サーバーのシェルで次のコマンドを実行します。

    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. 完了したら、手順 3 に進んで、ACL を移行します。  Crx2Oak を使用して移行できない場合は、代わりに以下のパッケージ移行手順に従ってください。

手順 2B:ユーザーおよびグループを移行する(パッケージを使用)

LDAP/SAML 認証または Crx2Oak(上記の手順 2A)を使用してユーザーが自動的に読み込まれなかった場合は、ユーザーとグループをパッケージ化できます。

この場合、古いシステムに 2 つの個別のパッケージを作成します(管理者ユーザーと匿名の標準ユーザーを除く)。

次の手順に従います。

  1. 手順 1 の結果 (手順 1:管理者ユーザーと匿名ユーザーの検索) を参照してください。

    例: /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv — パッケージを作成するシステム上の管理者ユーザー、または /home/users/K/Kj1406Qo9IDODc_nk5Ib — パッケージを作成するシステム上の匿名ユーザー

  2. 次に移動: パッケージマネージャーhttp://host:port/crx/packmgr/index.jsp​をクリックし、管理者としてログインします。

  3. パッケージを作成 ユーザー.

  4. /home/users のパッケージ設定フィルターに次の除外ルールを追加します(/home/users フィルター上)。

    1. /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. パッケージをビルドします。

  6. パッケージをダウンロードします。

  7. パッケージ zip ファイルをコンピューターに解凍します:jar -xvf users.zip META-INF/vault/filter.xml

  8. META-INF/vault/filter.xml ファイルをテキストエディターで開きます。

  9. 追加モード= 結合 から filter ... タグの例:

    ?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. 変更したパッケージコンテンツを再圧縮して、変更内容を含めるようにします。

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

  11. の作成 グループ フィルタールールを含むパッケージ /home/groups.

  12. groups パッケージに対して、手順 11 ~ 14 を繰り返します。

  13. (アップグレードのみ)新しい AEM バージョンへの移行を行う場合、古いバージョン​の未使用のローカル AEM インスタンス(サンプルコンテンツなし)をインストールし、そこに users パッケージをインストールしてから、groups パッケージをインストールします。その後、そのインスタンスで新しいバージョンへのインプレースアップグレードを実行します。 これにより、ユーザーが新しい Oak 表現に変換されます。インプレースアップグレードの後、ユーザーを再パッケージ化して、アップグレード対象のインスタンスに移植します。ユーザーグループについても、同じようにします。

  14. 新しいシステムに users パッケージをインストールします。

  15. 新しいシステムに groups パッケージをインストールします。

  16. 古いAEMから 6.3 に移行する場合は、 /useradmin UI を開き、レプリケーションレシーバーを 管理者 グループ化します。

手順 3. ACL を移行する

AEM にツール(ACS Commons)をインストールできる場合は、次の手順に従います。

  1. ACS Commons をダウンロードしてインストールします。

  2. ここで説明した手順に従って、ACL パッケージを作成します。

  3. に移動します。 http://aem-host:port/crx/packmgr/index.jsp 管理者としてログインします。

  4. ACL パッケージをクリックします。

  5. 「編集」をクリックします。

  6. 「詳細」タブを選択します(下のスクリーンショットを参照)。

  7. AC の処理ドロップダウンメニューで、結合を選択して、宛先システム上の既存の ACL が削除されるのを回避します。

    これは、AEM の異なるバージョン間で ACL を移行する際に、(デフォルトの ACL の削除を回避できるので)特に重要です。

AEM にツール(ACS Commons)をインストール​できない​場合は、次の手順に従います。これらのコマンドを実行するマシンは、curl、python、Java SDK がインストールされたMac OS、Linux または Windows(Cygwin を使用)である必要があります。

  1. に移動します。 http://src-aem-host:port/crx/packmgr/index.jsp 管理者としてログインします。

  2. という名前のパッケージを作成します。 ACL-migration.

  3. 次をクリック: 編集 」ボタンをクリックします。

  4. を選択します。 詳細 タブと設定 AC 処理モード から 結合.

  5. 保存します。

  6. パッケージをビルドしてダウンロードします。

  7. ファイルシステムで、パッケージに対して次のコマンドを実行し、 META-INF/vault/filter.xml ファイル:

    jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
    
  8. 同じディレクトリで、次のコマンドを実行して、の ACL パスの json ファイルをダウンロードします。 /content ソースインスタンス(ユーザー名、パスワード、正しいホストを設定)から、次の操作を実行します。

    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. ファイルの作成 generate-package-filter.py その中に python コードを貼り付けます。

    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. 同じフォルダーから Python スクリプトを実行します。 data.json が作成され、出力が次の場所に保存されました: META-INF/vault/filter.xml ( filter.xml):

    python generate-packge-filter.py  META-INF/vault/filter.xml
    
  11. 次のコマンドを使用して、zip ファイル内の filter.xml を更新します。

    jar -uvf ACL-migration-1.0.zip META-INF/vault/filter.xml
    
  12. zip ファイルをソースインスタンスパッケージマネージャーにアップロードします。 http://src-aem-host:port/crx/packmgr/index.jsp

  13. ビルド」または「再構築」をクリックして、パッケージをビルドします。

  14. ソース AEM サーバーからパッケージをダウンロードします。

  15. パッケージを宛先のAEMサーバーのパッケージマネージャーにアップロードします。 http://dst-aem-host:port/crx/packmgr/index.jsp

  16. インストール」をクリックして、インストールします。

  17. パス curl コマンドを変更する他のすべてのパスに対して、手順 8 ~ 16 を繰り返します。例えば、次の場合、ACL は /etc の代わりに /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

このページ