AWS アカウント間で IAM ロールを使用して Amazon OpenSearch Service アクセスを委任するにはどうすればよいですか?

最終更新日: 2022 年 4 月 20 日

自分のアカウントの Amazon OpenSearch Service リソースを別のアカウントのユーザーと共有したいと考えています。これを行うにはどうすればよいですか?

簡単な説明

OpenSearch Service ドメインのクロスアカウントアクセスを有効にする最も簡単な方法は、AWS Identity and Access Management (IAM) ロールを使用してクロスアカウントコントロールを設定することです。ターゲットアカウントに IAM ロールを追加することで、信頼できるアカウントのユーザーが、ターゲットアカウントの OpenSearch Service ドメインにアクセスすることを許可できます。このようにして、AWS コンソールで IAM ロールを切り替えることで、組織内のさまざまなユーザーが、中央ロギングステーションにアクセスして管理できます。

ユーザーが IAM ロールを使用してドメインリソースにアクセスするためのプロセスは次のとおりです。

  1. ターゲットのドメインへのアクセスが許可されているアカウント A にロールを作成します。
  2. アカウント A のロールを引き受けることを許可されているアカウント B にユーザーを作成します。
  3. ロールを切り替えることにより、ロールを使用してターゲットのドメインにアクセスできるようにするためのアクセス権をアカウント B のユーザーに付与します。

注: アカウント A は、ターゲットドメインが存在するアカウントです。アカウント B は、ユーザーが中央ログステーションにアクセス際のアクセス元となるアカウントです。

解決方法

注: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

ロールを作成し、ドメインを管理するための許可を付与する

この例では、CrossAccount-test というロールを作成し、test というドメインを管理するための完全な許可を付与します。

{
    "Version": "2012-10-17",
    "Statement": [
       
        {
            "Effect": "Allow",
            "Action": [
               
        "es:*"
            ],
            "Resource": “arn:aws:es:<Region>:<Account A-ID>:domain/test/*"
       
        }
    ]
}

ロールの信頼関係を編集する

次に、CrossAccount-test というロールの信頼関係を編集します。

注: アカウント番号とユーザー名を適宜変更してください。

{
 
        "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"
        }]
}

ステップ 1 と 2 では、アカウント B のユーザーを信頼されたエンティティとして定義し、信頼できるユーザーがアカウント A のドメインにアクセスできるようにするための完全な許可を付与します。

アカウント B のユーザーにアクセス権を付与する

アカウント B で、次の許可を持つユーザーまたはグループを作成します。

{
    "Version": "2012-10-17",
    "Statement": {
       
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::<Account A-ID>:role/<CrossAccount-test>"
   
        }
}

このポリシーステートメントを追加すると、アカウント A の CrossAccount-test ロールで AssumeRole アクションを許可することになります。

注: リソース要素の ACCOUNT A-ID を、アカウント A の AWS アカウント ID に変更してください。

OpenSearch Service アクセスポリシーを編集して、ロールがドメインにアクセスすることを許可する

この時点では、アカウント A のロールを引き受けるためにアカウント B を信頼します。次に、このロールがドメインにアクセスすることを許可します。

OpenSearch Service アクセスポリシーを編集し、以下を入力します。

{
  "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>/*"
   
        }
  ]
}

ロールを切り替えることによってアクセスをテストする

クロスアカウントサポートを有効にしたので、ロールを切り替えてアクセスをテストします。

  1. CrossAccount-test ARN をクリップボードにコピーします。
  2. AWS コンソールを使用してアカウント B にログインします。
  3. [User] (ユーザー) タブで、ドロップダウンリストから [Switch Role] (ロールの切り替え) を選択します。
  4. [Switch Role] (ロールの切り替え) ページで、アカウント A のアカウント ID とロール名を入力します。この例では、ロール名は CrossAccount-test です。
  5. [Switch Role] (ロールの切り替え) を選択します。

注: コマンドラインにおいて、アカウント B がアカウント A 環境で機能する必要がある場合は、AWS CLI を使用してロールを切り替えることができます。詳細については、ロールの切り替え (AWS CLI) を参照してください。

ユーザーの許可は、アカウント A で作成したロールで許可されているものにすぐに切り替わります。この方法でクロスアカウントアクセスを設定することで、ユーザーは異なるアカウントで個別の IAM ユーザーを作成する必要がなくなります。また、リソースにアクセスするために、あるアカウントからサインアウトしてから別のアカウントにサインインする必要もありません。

Amazon OpenSearch Service は、Amazon Elasticsearch Service の後継サービスです。


この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?