IAM ロールの継承を試みると、「AccessDenied」または「Invalid information」エラーが発生するのはなぜですか?
最終更新日: 2020 年 6 月 16 日
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 つのアカウントがあるとします。また、IAM ユーザーまたはロールも 2 つあり、それぞれ名前は Bob と Alice です。このシナリオでは、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"
}
]
}
解決方法
ベストプラクティスとして、次の点を確認してください。
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
- Bob には、AssumeRole のためのアクセス許可が付与されている。
- Bob として AWS アカウントにサインインしている。詳細については「AWS アカウント ID とその別名」ご参照ください。
- Account_Bob が AWS Organizations に所属している場合、サービスコントロールポリシー (SCP) で、Account_Bob または Account_Alice についての AssumeRole アクセスを制限している可能性があります。詳細については「サービスコントロールポリシー (SCP)」をご参照ください。
- ロールの連鎖を使用している場合は、前のセッションの IAM 認証情報を使用している可能性があります。詳細については、ロールに関する用語と概念のロールの連鎖のセクションをご参照ください。