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

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

説明

iam:AttachGroupPolicy を持つロールは、許可された IAM グループに管理ポリシーをアタッチして、所属ユーザーの権限を拡大できる場合があります。IAM ロールはグループメンバーではないため、この操作が呼び出し元ロール自身の権限を直接増やすわけではありません。

強いポリシーを受け取れるグループとユーザーを合わせて確認してください。明示的な拒否やアクセス許可の境界は、アタッチ後も適用されます。

想定される影響

  • 自動化やサービス用のロールが、複数ユーザーの権限を意図せず変更するおそれがあります。
  • 拡大したユーザー権限の悪用により、情報漏えいやリソース変更のリスクが高まる可能性があります。

対処方法

ロールに不要な iam:AttachGroupPolicy を削除してください。必要な管理操作は、Resource のグループ ARN と iam:PolicyARN 条件の承認済みポリシー 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:AttachGroupPolicy",
        ]
        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 の参照操作だけを残します。ロールの他の権限も確認してください。この抜粋はロールの完全な構成ではありません。

参考資料