iam:PassRoleの対象がすべてのロールに広がっている

iam:PassRoleの対象を必要なロールに限定してください。

説明

iam:PassRoleは、IAMロールをAWSサービスに渡すための権限です。対象を限定しないと、サービスの操作権限とロールの信頼ポリシーが許す範囲で、意図したよりも強い権限のロールを使える場合があります。

想定される影響

強い権限のロールをサービスに関連付けると、ワークロードが想定以上の権限で動作するおそれがあります。

対処方法

Resourceを必要なIAMロールのARNに限定してください。必要に応じてiam:PassedToService条件で渡す先のサービスも制限し、各ロールの権限と信頼ポリシーを確認してください。

例

以下は、すべてのリソースの代わりに特定のIAMロールを指定する例です。アカウントIDとロール名は、実際に承認された対象に置き換えてください。

変更前

hcl
resource "aws_iam_role_policy" "example" {
  name = "test_policy"
  role = aws_iam_role.test_role.id

  policy = <<-EOF
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Action": [
          "iam:passrole"
        ],
        "Effect": "Allow",
        "Resource": "*"
      }
    ]
  }
  EOF
}

変更後

hcl
resource "aws_iam_role_policy" "example" {
  name = "test_policy"
  role = aws_iam_role.test_role.id

  policy = <<-EOF
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Action": [
          "iam:passrole"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:iam::123456789012:role/ExampleWorkloadRole"
      }
    ]
  }
  EOF
}

参考資料