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

所要時間1分
0

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

簡単な説明

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

注: ロールチェーンで user to role を使用する代わりに、ソース IAM ロールからターゲット IAM ロールへのロールを引き受けることもできます。ロールチェーニングは、AWS コマンドラインインターフェイス (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 ロールを使用したアクセスの委任」を参照してください。


関連情報

AWS CLI を使用して IAM ロールを引き受けるにはどうすればよいですか?

IAM ポリシーを作成または更新したところ、「Has prohibited field Principal」(禁止フィールド Principal があります) というエラーが表示されました。このエラーはどのように解決すればよいですか?

Amazon S3 バケット内のオブジェクトへのクロスアカウントアクセスを提供するにはどうすればよいですか?

クロスアカウント IAM ロールの引き受けを試みると、「AccessDenied」または「Invalid information」というエラーが発生するのはなぜですか?

コメントはありません

関連するコンテンツ