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

グループメンバーが作成・有効化できる管理ポリシーのバージョンを制限してください。

説明

グループを通じて広い iam:CreatePolicyVersion を許可すると、メンバーがカスタマー管理ポリシーの新しいバージョンを作成し、デフォルトに設定できます。自身のグループなどにアタッチされたポリシーを強い権限に変更すると、権限昇格につながるおそれがあります。

実際に適用されるのはデフォルトのバージョンです。インラインポリシーはこのバージョン管理の対象ではありません。作成時にデフォルトにする場合、別途 iam:SetDefaultPolicyVersion の権限は必要ありません。

想定される影響

  • 共有ポリシーの変更で、複数のユーザーやロールのアクセス権限が広がる可能性があります。
  • 未承認のポリシー内容により、権限付与の承認手続きが損なわれるおそれがあります。

対処方法

一般のグループに不要な iam:CreatePolicyVersion を削除し、必要な管理は承認済みのロールで行ってください。Resource を対象のカスタマー管理ポリシー ARN に限定してください。iam:SetDefaultPolicyVersion の権限も確認し、ポリシー内容と利用先を調べ、未承認の変更が阻止されることを試験してください。

例

同じグループのインラインポリシーで、管理ポリシーのバージョン作成権限を付与する比較です。

変更前

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:CreatePolicyVersion",
        ]
        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 の参照操作だけを残します。他のポリシーのバージョン管理権限と、実際に必要な参照範囲も確認してください。

参考資料