説明
IAM ユーザーの iam:AttachUserPolicy 権限が広すぎると、自身や他のユーザーに強い管理ポリシーをアタッチできる場合があります。アタッチとその後の操作が他の制限で阻止されなければ、権限昇格につながるおそれがあります。
アタッチは、アクセス許可の境界、組織ポリシー、明示的な拒否を自動的に削除するものではありません。対象ユーザーとアタッチ可能なポリシーを合わせて確認してください。
想定される影響
- ユーザーが承認なしに自身のリソース参照・変更権限を増やせる可能性があります。
- 他のユーザーの権限拡大により、認証情報の悪用による被害が大きくなるおそれがあります。
対処方法
不要な iam:AttachUserPolicy を削除し、管理操作は承認済みロールで行ってください。必要な場合は Resource に対象ユーザー ARN を指定し、iam:PolicyARN 条件でポリシーを制限してください。自身の権限を変更できる経路とログを確認し、正常な操作と未承認のアタッチの拒否を確認してください。
例
同じユーザーのインラインポリシーで、許可操作を減らす比較です。
変更前
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:AttachUserPolicy",
]
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 の参照操作だけを残します。他のポリシーのアタッチ権限と不要な参照権限も確認してください。