AWS アカウントの Amazon OpenSearch Service のリソースを別のアカウントで他のユーザーと共有したいと考えています。
簡単な説明
次の手順を実行することで、AWS Identity and Access Management (IAM) ロールを使用してドメインリソースにアクセスできるようになります。
- ターゲットドメインへのアクセス許可の付与先となるロールをアカウント A に作成します。
- アカウント B に、アカウント A のロールを引き受ける許可の付与先となるユーザーを作成します。
- アカウント B のユーザーに、ロールを切り替えてターゲットドメインにアクセスする許可を付与します。
注記: アカウント A は、ターゲットドメインが存在するアカウントです。アカウント B は、ユーザーが中央のログ記録ステーションにアクセスする際にアクセス元となるアカウントです。
解決方法
注記: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新バージョンの AWS CLI を使用していることを確認してください。
ロールを作成し、ドメインを管理するアクセス許可を付与する
IAM ロールを作成し、ユーザーがお客様のドメインを管理できるようにするアクセス許可を付与します。
次の例では、CrossAccount-Test という名前のロールが作成され、ドメインテストを管理するためのすべてのアクセス許可が付与されています。
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"es:*"
],
"Resource": "arn:aws:es:<Region>:<Account A-ID>:domain/test/*"
}]
}
ロールの信頼関係を編集する
ロールの信頼関係を編集します。次の例では、ロールの信頼関係は CrossAccount-test です。
注記: **Account B-ID ** と User Name をそれぞれ、アカウント B の ID とお客様のユーザー名に置き換えます。
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "es.amazonaws.com",
"AWS": ["arn:aws:iam::<Account B-ID>:root", "arn:aws:iam::<Account B-ID>:user/<User Name>"]
},
"Action": "sts:AssumeRole"
}]
}
アカウント B のユーザーにアクセス許可を付与
アカウント B 内に、次のアクセス許可を持つユーザーまたはグループを作成します。
注記: Account A-ID をアカウント A の ID に置き換えます。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::<Account A-ID>:role/<CrossAccount-test>"
}
}
このポリシーステートメントを追加することで、アカウント A 内の CrossAccount-test ロールに対する AssumeRole API アクションが許可されるようになります。
OpenSearch Service のアクセスポリシーを編集して、このロールにドメインへのアクセスを許可
このロールにドメインへのアクセスを許可します。
OpenSearch サービスのアクセスポリシーを編集し、次の情報を入力します。
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::<Account A-ID>:role/<CrossAccount-test>"
]
},
"Action": "es:*",
"Resource": "arn:aws:es:<region>:<Account A-ID>:domain/<Domain Name>/*"
}]
}
ロールを切り替えてアクセス許可をテストする
ロールを切り替えてアクセス許可をテストします。
- CrossAccount-test ARN をクリップボードにコピーします。
- AWS マネジメントコンソールを使用してアカウント B にログインします。
- [ユーザー] タブのドロップダウンリストで [ロールの切り替え] を選択します。
- [[ロールの切り替え] ページで、アカウント A のアカウント ID とロール名を入力します。この例では、ロール名は CrossAccount-test です。
- [ロールの切り替え] を選択します。
注記: アカウント B がアカウント A の環境のコマンドラインで機能している場合は、AWS CLI を使用してロールを切り替えることができます。詳細については、「ロールの切り替え (AWS CLI)」を参照してください。
関連情報
CrossAccount-test ポリシー評価ロジック
Amazon OpenSearch Service における ID およびアクセス管理