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

最終更新日: 2021 年 7 月 30 日

クロスアカウント 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"
    }
  ]
}

解決方法

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

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

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