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

ユーザー自身や他のユーザーのインラインポリシーを変更できる範囲を制限してください。

説明

IAM ユーザーに広い iam:PutUserPolicy 権限があると、自身や他のユーザーのインラインポリシーを追加・上書きできます。対象ユーザーに強い権限を付与すると、他の制限でアクセスが阻止されない範囲で権限昇格につながるおそれがあります。

ポリシー変更は、アクセス許可の境界、組織ポリシー、明示的な拒否を自動的に削除するものではありません。実際のユーザーと他のポリシーを合わせて確認してください。

想定される影響

  • ユーザーが承認なしに自身のリソース参照・変更権限を増やせる可能性があります。
  • 他のユーザーへの過剰な権限付与で、認証情報の悪用による被害が大きくなるおそれがあります。

対処方法

一般ユーザーに不要な iam:PutUserPolicy を削除し、管理操作は承認済みのロールで行ってください。必要な場合は 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:PutUserPolicy",
        ]
        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 の参照操作だけを残します。他のポリシーのユーザーポリシー変更権限と不要な参照権限も確認してください。

参考資料