IAM ユーザーの iam:AttachGroupPolicy 権限の確認

IAM ユーザーが変更できるグループポリシーの範囲を制限してください。

説明

IAM ユーザーの iam:AttachGroupPolicy 権限が広すぎると、グループに強い管理ポリシーをアタッチしてメンバーの権限を変更できる場合があります。自分が所属するグループを対象にできれば、自身の権限も拡大するおそれがあります。

対象は同じアカウントの IAM グループです。グループポリシーのアタッチ権限だけで、所属メンバーの変更や他の AWS アカウントの管理ができるわけではありません。

想定される影響

  • 一人のユーザーによる誤ったアタッチが、複数メンバーの権限を拡大する可能性があります。
  • 未承認の強いポリシーは、リソースへのアクセスや変更のリスクを高めるおそれがあります。

対処方法

不要な iam:AttachGroupPolicy 権限を削除し、管理操作は承認済みのロールで行ってください。必要な場合は対象グループ ARN を Resource に指定し、iam:PolicyARN 条件でアタッチ可能なポリシーを制限してください。メンバーと他の権限制限を確認し、正常な操作と未承認のアタッチの拒否を試験してください。

例

同じユーザーとインラインポリシーを変更する比較です。このインライン許可に、別のポリシーアタッチリソースは不要です。

変更前

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

resource "aws_iam_user_policy" "example" {
  name = "test_inline_policy"
  user = aws_iam_user.example.name

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

ユーザーに、グループ全体への管理ポリシーのアタッチを許可します。

変更後

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

resource "aws_iam_user_policy" "example" {
  name = "test_inline_policy"
  user = aws_iam_user.example.name

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

この許可を EC2 の参照操作に置き換えます。他のポリシーから同じアタッチ権限を受けていないかも確認してください。

参考資料