AWS IAM を使用して別の AWS アカウントのリソースにアクセスするにはどうすればよいですか?

最終更新日: 2022 年 8 月 1 日

別の AWS アカウントにある Identity and Access Management (IAM) ロールを引き受けたいと考えています。IAM を使用してクロスアカウントアクセスを設定するにはどうすればよいですか?

簡単な説明

別の AWS アカウントの IAM ロールとの信頼関係を設定して、そのリソースにアクセスできます。例えば、ソースアカウントからターゲットアカウントにアクセスするとします。AssumeRole API の IAM ユーザー許可を付与することで、ソースからターゲットアカウントへの IAM ロールを引き受けることができます。ターゲット IAM ロールの信頼関係で IAM ユーザーを指定する必要があります。

注: ロールチェーンで user to role を使用する代わりに、ソース IAM ロールからターゲット IAM ロールへのロールを引き受けることもできます。ロールチェーンは、AWS Command Line Interface (AWS CLI) や API などのプログラムによるアクセスについてのみ機能し、AWS マネジメントコンソールでは使用できません。

解決方法

ソースアカウントの IAM 許可ポリシーを作成し、そのポリシーをユーザーにアタッチして、ターゲットアカウントのロールを作成するには、次の手順に従います。

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

送信元アカウント

1.    次のような IAM ポリシーを作成します。

注: DESTINATION-ACCOUNT-ID と DESTINATION-ROLENAME を自分の値に置き換えてください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": [
        "arn:aws:iam::DESTINATION-ACCOUNT-ID:role/DESTINATION-ROLENAME"
      ]
    }
  ]
}

2.    IAM ユーザー許可に IAM ポリシーをアタッチします。

こちらのステップに従って、作成したポリシーを IAM ユーザー許可にアタッチします。

送信先アカウント

1.    IAM ロールを作成します

2.    次のようなカスタム信頼ポリシーを貼り付けます。

注: SOURCE-ACCOUNT-ID と SOURCE-USERNAME を自分の値に置き換えてください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::SOURCE-ACCOUNT-ID:user/SOURCE-USERNAME"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

注: IAM ロールとユーザーを作成および編集するためのアクセス権がない場合は、他のアカウントの所有者からサポートを受けてプロセスを完了する必要があります。ご利用のアカウントとリソースへのアクセス権を、信頼するエンティティだけに付与するのがベストプラクティスです。

このポリシーを変更して、必要な数のソースエンティティを必要な数のターゲットロールに引き受けさせることを許可できます。例えば、ターゲットアカウントの信頼ポリシーの Principal 値を "AWS": "SOURCE-ACCOUNT-ID" に変更できます。これにより、ロールを引き受ける許可を持つソースアカウント内のすべてのエンティティが、ターゲットアカウントのロールを引き受けることができます。詳細については、「プリンシパルの指定」および「ポリシーの作成または編集」を参照してください。

アクセスをテストする

アクセスをテストするには、「ロールの切り替え (コンソール)」の手順に従います。

- または -

IAM ロールの切り替え (AWS CLI)」の指示に従います。

詳細については、「IAM チュートリアル: AWS アカウント間の IAM ロールを使用したアクセスの委任」を参照してください。