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

グループメンバーがデフォルトに設定できる管理ポリシーのバージョンを制限してください。

説明

グループを通じて広い iam:SetDefaultPolicyVersion を許可すると、メンバーがカスタマー管理ポリシーの既存バージョンをデフォルトに設定できます。自身に適用されるポリシーに、より多くの権限を許可する旧バージョンが残っていれば、有効化してアクセスを拡大できるおそれがあります。

この操作は新しいポリシー内容を作らず、既存バージョンを選択します。影響はその内容と適用先によって異なり、他の適用可能な制限や明示的な拒否も引き続き適用されます。

想定される影響

  • 以前削除した権限が、ポリシーを共有する複数の主体に再び適用される可能性があります。
  • 旧バージョンへの切り替えで、承認済みの権限縮小が取り消されるおそれがあります。

対処方法

一般グループに不要な iam:SetDefaultPolicyVersion を削除し、Resource を承認済みのカスタマー管理ポリシー ARN に限定してください。有効化するバージョンの内容と適用先を確認してください。新しいバージョンをデフォルトにできる iam:CreatePolicyVersion も制限し、承認された変更が機能し、未承認の変更が阻止されることを試験してください。

例

同じグループのインラインポリシーで、管理ポリシーのデフォルトバージョンを変更する権限を付与する比較です。インラインポリシー自体のバージョンを変更する例ではありません。

変更前

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

参考資料