クロスアカウント AWS Identity and Access Management (IAM) ロールの継承を試みました。ところが、以下のようなエラーが表示されました。
「An error occurred (AccessDenied) when calling the AssumeRole operation: (次の AssumeRole オペレーションの呼び出しにおいてエラー (AccessDenied) が発生しました )」
- または -
「Invalid information in one or more fields.Check your information or contact your administrator.」(1 つ以上のフィールドに無効な情報があります。情報を確認するか、管理者にお問い合わせください。)
簡単な説明
別の AWS アカウントの IAM ロールを継承するには、まず、IAM ロールを引き受ける側のアカウントで、アクセス許可を編集します。次に、IAM ロールの継承を許可する側のアカウントで信頼ポリシーを編集します。
例えば、Account_Bob という名前と、Account_Alice という名前の 2 つのアカウントがあるとします。また、Account_Bob には Bob という名前の IAM ユーザーまたはロールがあり、Account_Alice には Alice という名前の IAM ロールがあります。このシナリオで、Bob が Alice という名前の IAM ロールを継承すると仮定します。
複数のアカウント、または クロスアカウントで AssumeRole API 呼び出しを行うには、ロールの継承のためのアクセス許可を付与するために、次のような信頼ポリシーが必要です。
Bob に必要なアクセス許可の例を次に示します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PermissionToAssumeAlice",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::Account_Alice:role/Alice"
}
]
}
Alice に必要な信頼ポリシーの例を次に示します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_Bob:user/Bob"
},
"Action": "sts:AssumeRole"
}
]
}
解決方法
クロスアカウントの IAM ロールを引き受ける際にエラーが発生しないように、次の点に注意してください。
注意: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
- 引き受けるロールである Bob には、AssumeRole の許可が必要です。
- AWS アカウントに Bob としてサインインする必要があります。詳細については「AWS アカウント ID とその別名」を参照してください。
- 引き受けるロール、Alice が存在しなければなりません。削除されていないことと、ARN が正しく設定されていることを確認してください。
- ロールの連鎖を使用している場合は、以前のセッションの IAM 認証情報を使用していないことを確認してください。詳細については、ロールに関する用語と概念のロールの連鎖のセクションを参照してください。
- Account_Bob が AWS Organizations に所属している場合、サービスコントロールポリシー (SCP) で、Account_Bob または Account_Alice についての AssumeRole アクセスを制限している可能性があります。詳細については、「サービスコントロールポリシー (SCP)」を参照してください。
関連情報
IAM 許可のアクセスが拒否された、または不正なアクセスエラーのトラブルシューティングに役立つデータを取得するにはどうすればよいですか?
ロールの切り替え (コンソール)
「IAM ロールへの切り替え (AWS CLI)」