AEM インスタンス間でのユーザー、グループおよび ACL の移行
この記事では、AEMの ACL 権限を持つユーザーおよびグループを、あるサーバーから別のサーバーに、またはあるAEM インスタンスから別のインスタンスに移行するための様々な方法を説明します。
説明 description
環境
Adobe Experience Manager 6.5 (AEM)
問題/症状
AEMの ACL 権限を持つユーザーおよびグループを、あるサーバーから別のサーバーに、またはあるAEM インスタンスから別のインスタンスに移行します。
解決策 resolution
手順 1:管理者および匿名ユーザーを見つける
- CRXDE Lite アプリ
/crx/de/index.jsp
ージに移動し、(ソースシステムの 管理者ユーザー としてログインします。 - ツール に移動
=>
クエリ 。 - 下部の クエリ ボックスにクエリを入力して、管理者ユーザーを見つけます。
/jcr:root/home/users//element(*,rep:User)[ @rep:principalName="admin"]
- 「 実行 」をクリックして、結果に含まれる管理者ユーザーノードのパスをテキストファイルにコピーします。
- 匿名ユーザーについて、次のクエリを使用して手順 3 を繰り返します。
/jcr:root/home/users//element(*,rep:User)[ @rep:principalName="anonymous"]
- 「 実行 」をクリックして、結果に含まれる匿名ユーザーノードのパスをテキストファイルにコピーします(これで、「管理者」用と「匿名」用の 2 つのパスが取得できました)。 例:
/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
– ソースシステムの管理者ユーザー/home/users/K/Kj1406Qo9IDODc_nk5Ib
– ソースシステムの匿名ユーザー
手順 2:ユーザーおよびグループを移行する(パッケージを使用)
ユーザーが LDAP/SAML 認証または Crx2Oakで自動的にインポートされなかった場合(上記の手順 2A)、ユーザーおよびグループをパッケージ化できます。
この場合、旧システム上に 2 つの異なるパッケージを作成します(デフォルトの管理者および匿名ユーザーを除く)。
次の手順に従います。
-
前述の手順 1 (手順 1:管理者および匿名ユーザーを見つける の結果から、匿名および管理者ユーザーノードのパス コピーします。
例:
/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
- パッケージを作成しているシステムの管理者ユーザー、または/home/users/K/Kj1406Qo9IDODc_nk5Ib
- パッケージを作成しているシステムの匿名ユーザー -
パッケージマネージャー 、
http://host:port/crx/packmgr/index.jsp
に移動し、admin としてログインします。 -
パッケージ ユーザー を作成します。
-
/home/users
のパッケージ設定フィルターに次の除外ルールを追加します(/home/users
フィルター上): (メモ:AEMで商品 add/remove groups/users)を使用している場合は、リストが変わる必要がある可能性があります- /home/users/を除外します。*/.tokens
- /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv を除外
- /home/users/K/Kj1406Qo9IDODc_nk5Ib を除外
- /home/users/a/admin を除外
- /home/users/a/anonymous を除外
- /home/users/system を除外
- /home/users/geometrixx を除外
- /home/users/media を除外
- /home/users/projects を除外
- /home/users/mac を除外
-
パッケージをビルドします。
-
パッケージをダウンロードします。
-
パッケージ zip ファイルをコンピューターに解凍します:
jar -xvf users.zip META-INF/vault/filter.xml
-
META-INF/vault/filter.xml
ファイルをテキストエディターで開きます。 -
<filter ...>
タグに mode = merge を追加します。例: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>
-
変更したパッケージコンテンツを再圧縮して、変更内容を含めるようにします。
jar -uvf users.zip META-INF/vault/filter.xml
-
フィルタールール
/home/groups
を含む groups パッケージを作成します。 -
groups パッケージに対して、手順 1 ~ 10 を繰り返します。
-
(アップグレードのみ)新しいAEM バージョンへの移行を行う場合、古いバージョンの新しいローカル AEM インスタンス
nosamplecontent
を含む をインストールし、そこに users パッケージと groups パッケージの両方をインストールします。 次に、そのインスタンス上の新しいバージョンへのインプレースアップグレードを実行します。 これにより、ユーザーが新しい Oak 表現に変換されます。インプレースアップグレードの後、ユーザーを再パッケージ化して、アップグレード対象のインスタンスに移植します。ユーザーグループについても、同じようにします。. 新しいシステムに users パッケージをインストールします。. 新しいシステムに groups パッケージをインストールします。. 古いバージョンのAEMから 6.3 に移行する場合は、
/useradmin
UI に移動して、ユーザー replication-receiver を administrators グループに追加します。
**### 手順 3.ACL を移行(注意:作成するパッケージには、必要な ACL のみを含めてください)これらのコマンドを実行するマシンは、Mac OS、Linux、または Windows (Cygwin を使用)で、curl、Python、Java SDK がインストールされている必要があります。1) http://src-aem-host:port/crx/packmgr/index.jsp,
に移動して、admin としてログインします。
-
ACL-migration という名前のパッケージを作成します。
-
「 編集 ボタンをクリックします。
-
「 詳細 」タブを選択して、「AC の処理モード を 結合 に設定します。
-
保存します。
-
パッケージをビルドしてダウンロードします。
-
ファイルシステム上で、パッケージに対して次のコマンドを実行し、
META-INF/vault/filter.xml
ファイルを抽出します。jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
-
同じディレクトリで、次のコマンドを実行し、ソースインスタンスから
/content
以下の ACL パスの json ファイルをダウンロードします(ユーザー名、パスワードおよび適切なホストを設定します)。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
-
ファイル
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>")
-
data.json
を作成したのと同じフォルダーから Python スクリプトを実行し、出力をMETA-INF/vault/filter.xml
に保存します(filter.xml
の既存のコンテンツを置き換えます)。python generate-packge-filter.py > META-INF/vault/filter.xml
-
次のコマンドを使用して、zip ファイル内の
filter.xml
を更新します。jar -uvf ACL-migration-1.0.zip META-INF/vault/filter.xml
-
zip ファイルをソースインスタンスパッケージマネージャー(
http://src-aem-host:port/crx/packmgr/index.jsp
)にアップロードします。 -
「ビルド」または「再構築」をクリックして、パッケージをビルドします。
-
ソース AEM サーバーからパッケージをダウンロードします。
-
宛先AEM サーバーのパッケージマネージャー(
http://dst-aem-host:port/crx/packmgr/index.jsp
)にパッケージをアップロードします。 -
「インストール」をクリックして、インストールします。
-
パス curl コマンドを変更する他のすべてのパスに対して、手順 8 ~ 16 を繰り返します。例えば、次の場合、ACL は
/content
の代わりに/etc
の下に取得されます。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
**