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

グループメンバーによるユーザーのインラインポリシー変更を制限してください。

説明

IAM グループに広い iam:PutUserPolicy を許可すると、メンバーが自身や他のユーザーのインラインポリシーを追加・上書きできます。他の権限制限で阻止されなければ、ユーザーのアクセス範囲を広げる権限昇格の経路になるおそれがあります。

インラインポリシーは、対象 IAM ユーザーの権限を変更します。境界、組織ポリシー、明示的な拒否を自動的に削除・回避するものではありません。

想定される影響

  • メンバーが承認なしに自身や他のユーザーに管理権限を付与できるおそれがあります。
  • 権限が拡大したユーザーの認証情報が悪用されると、被害が大きくなる可能性があります。

対処方法

一般のグループに不要な iam:PutUserPolicy を削除してください。必要な変更は承認済みの管理ロールだけに許可し、Resource を対象ユーザー ARN に限定してください。ポリシー内容と変更イベントを確認し、正常な管理操作が機能し、未承認の変更が阻止されることを確認してください。

例

同じグループとインラインポリシーで、ユーザーポリシーの変更権限を減らす比較です。

変更前

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:PutUserPolicy",
        ]
        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 の参照操作だけを残します。他のポリシーにあるユーザー変更権限と、必要な参照範囲も確認してください。

参考資料