IAM グループの iam:AttachRolePolicy 権限の確認

グループメンバーが変更できるロールと管理ポリシーを制限してください。

説明

広い iam:AttachRolePolicy 権限を持つグループメンバーは、ロールに強い管理ポリシーをアタッチできる場合があります。対象ロールを引き受けるか、そのロールを使うワークロードを制御できれば、拡大した権限を利用できるおそれがあります。

ポリシーのアタッチはロールの信頼ポリシーを変更せず、それ自体でロールを引き受ける権限も与えません。アタッチとその後の操作には、他の権限制限も適用されます。

想定される影響

  • サービスやユーザーセッションに、必要以上のロール権限が与えられる可能性があります。
  • 未承認のアタッチが、ロールを使う複数のワークロードに影響するおそれがあります。

対処方法

グループに不要な iam:AttachRolePolicy を削除してください。必要な場合は Resource に対象ロール ARN を指定し、iam:PolicyARN 条件で管理ポリシーを制限してください。ロールの引き受けやワークロードの制御権限も確認し、正常な操作と未承認のアタッチの拒否を試験してください。

例

同じグループとインラインポリシーを維持する比較です。ロール管理が不要なメンバー向けに権限を減らします。

変更前

hcl
resource "aws_iam_group" "example" {
  name = "cosmic"
}

resource "aws_iam_group_policy" "example" {
  name  = "test_inline_policy"
  group = aws_iam_group.example.name

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = [
          "iam:AttachRolePolicy",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

メンバーに、ロール全体への管理ポリシーのアタッチを許可します。

変更後

hcl
resource "aws_iam_group" "example" {
  name = "cosmic"
}

resource "aws_iam_group_policy" "example" {
  name  = "test_inline_policy"
  group = aws_iam_group.example.name

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = [
          "ec2:Describe*",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

この許可文には EC2 の参照操作だけを含めます。他のポリシーのロール管理権限と、実際に必要な参照範囲も確認してください。

参考資料