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

解決方法

ベストプラクティスとして、次の点を確認してください。

  • Bob には、AssumeRole のためのアクセス許可が付与されている。
  • Bob として AWS アカウントにサインインしている。詳細については「AWS アカウント ID とその別名」ご参照ください。
  • Account_Bob が AWS Organizations に所属している場合、サービスコントロールポリシー (SCP) で、Account_Bob または Account_Alice についての AssumeRole アクセスを制限している可能性があります。詳細については「サービスコントロールポリシー (SCP)」をご参照ください。
  • ロールの連鎖を使用している場合は、前のセッションの IAM 認証情報を使用している可能性があります。詳細については、「ロールに関する用語と概念」の「ロールの連鎖」セクションをご参照ください。