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

ユーザーによるグループのインラインポリシー変更を承認済みの対象に限定してください。

説明

IAM ユーザーに広い iam:PutGroupPolicy を許可すると、グループのインラインポリシーを追加または上書きして、メンバーの権限を拡大できます。対象グループに自身も所属していれば、自身の権限昇格にも利用できるおそれがあります。

グループポリシーは、そのグループの IAM ユーザーに適用されます。アクセス許可の境界、組織ポリシー、明示的な拒否を自動的に回避するものではありません。

想定される影響

  • 承認された権限付与の手続きを経ずに、複数のユーザーのアクセス範囲が広がる可能性があります。
  • グループメンバーの認証情報が悪用された場合、被害が広がるおそれがあります。

対処方法

一般ユーザーに不要な iam:PutGroupPolicy を削除してください。必要な作業は承認済みの管理ロールで行い、Resource を対象グループ ARN に限定してください。ポリシー内容とメンバーを確認して変更を監視し、正常な作業が成功し、未承認の変更が阻止されることを確認してください。

例

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

変更前

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:PutGroupPolicy",
        ]
        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 の参照操作だけを残します。他のポリシーを通じたグループ変更権限と、実際に必要な参照範囲も確認してください。

参考資料