IAM ロールの iam:PutGroupPolicy 権限の確認

ロールが変更できるグループのインラインポリシーを制限してください。

説明

iam:PutGroupPolicy を持つロールを使う主体は、対象グループのインラインポリシーを追加または上書きし、メンバーである IAM ユーザーの権限を拡大できます。複数のユーザーに不要なアクセス権限を与え得る管理権限です。

IAM ロールはグループメンバーになれないため、この操作で呼び出し元ロール自身の権限が直接拡大するわけではありません。対象ユーザーの境界、組織ポリシー、明示的な拒否も実際のアクセスを制限します。

想定される影響

  • 自動化ロールによる誤った変更で、複数のユーザーに過剰な権限が付与されるおそれがあります。
  • 未承認のグループポリシー変更により、アカウント内のアクセス制御が弱まる可能性があります。

対処方法

ロールに不要な iam:PutGroupPolicy を削除してください。必要な変更は承認済みの管理ロールに許可し、Resource を対象グループ ARN に限定してください。ポリシー内容と変更履歴を確認し、正常な管理操作が機能し、未承認の変更が阻止されることを試験してください。

例

同じロールとインラインポリシーの抜粋です。省略したロールの信頼ポリシーは、実際の構成に別途定義してください。

変更前

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

resource "aws_iam_role_policy" "example" {
  name = "test_inline_policy"
  role = aws_iam_role.example.name

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

このロールを使う主体が、グループ全体のインラインポリシーを追加・更新できます。

変更後

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

resource "aws_iam_role_policy" "example" {
  name = "test_inline_policy"
  role = aws_iam_role.example.name

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

この許可文を EC2 の参照操作に絞ります。他のグループ管理権限と不要な参照権限も確認してください。

参考資料