IAM ポリシーのアカウントプリンシパルの確認

IAM ポリシーのアカウント指定と、意図したロールの信頼範囲を確認してください。

説明

ロールの信頼ポリシーにある arn:aws:iam::123456789012:root のようなアカウント ARN は、そのアカウントへの委任を表し、ルートユーザーだけを意味しません。アカウント管理者は、必要な権限を持つユーザーやロールにアクセスを委任できます。すべての AWS アカウントやユーザーによる無条件のロール引き受けを許可するものではありません。

特定のロールだけを信頼する場合は、その ARN と必要な条件で制限してください。IAM 管理ポリシーには Principal を使用できないため、操作権限のポリシーとロールの信頼ポリシーを区別する必要があります。

想定される影響

  • アカウントへの委任が意図より広いと、そのアカウントの権限変更に伴い、ロールを利用できる主体が増える可能性があります。
  • ロールの権限が過剰だと、誤った委任や認証情報の悪用による影響が大きくなるおそれがあります。

対処方法

  1. アカウント単位の委任が必要か確認し、特定の主体だけが必要なら、信頼ポリシーの Principal に承認済みロール ARN を指定してください。
  2. クロスアカウントの呼び出し権限と信頼条件を併せて確認し、ロールの操作権限も最小化してください。アカウントへの委任自体が常に誤りとは限らないため、運用目的に照らして判断してください。
  3. 不要な信頼関係を削除し、必要な引き受けが成功し、未承認の要求が拒否されることを試験してください。

例

最初の例は、管理ポリシーに Principal を指定しているため無効です。次の例では、特定のロールを信頼するために正しい種類のポリシーを使用します。アカウントとロール ARN を実際の承認済みの値に置き換え、呼び出し元と対象ロールの権限を別途構成してください。

変更前

yaml
- name: IAM 정책 생성
  community.aws.iam_managed_policy:
    policy_name: ManagedPolicy
    policy:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Action: logs:CreateLogGroup
          Resource: "*"
          Principal:
            AWS: arn:aws:iam::123456789012:root
    make_default: false
    state: present

この構成で有効なロールの信頼は作成されません。同じアカウント ARN を信頼ポリシーに指定した場合は、そのアカウントへの委任を表します。

変更後

yaml
- name: Configure trust for an approved role
  amazon.aws.iam_role:
    name: log-writer-target-role
    assume_role_policy_document: >
      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {
              "AWS": "arn:aws:iam::123456789012:role/log-writer-role"
            }
          }
        ]
      }
    state: present

この信頼ステートメントは、指定したロールだけを対象とします。他の信頼ステートメントと呼び出し元の権限も確認してください。

参考資料