説明
グループを通じて広い iam:AttachUserPolicy を許可すると、メンバーが自身や他の IAM ユーザーに強い管理ポリシーをアタッチできる場合があります。アタッチが許可され、他の制限でアクセスが阻止されなければ、対象ユーザーの権限が拡大するおそれがあります。
この操作は対象ユーザーの権限を変更します。アクセス許可の境界や明示的な拒否を自動的に回避するものではありません。
想定される影響
- メンバーが承認なしに自身のリソースアクセス権限を増やせる可能性があります。
- 他のユーザーへの不要な管理権限付与により、被害が広がるおそれがあります。
対処方法
一般のグループに不要な iam:AttachUserPolicy を削除してください。必要な場合は Resource を対象ユーザー ARN に限定し、iam:PolicyARN 条件で承認済みポリシーだけを許可してください。他の権限制限を維持し、正常な管理操作と未承認のアタッチの拒否を確認してください。
例
同じグループのインラインポリシーからアタッチ権限を削除する比較です。実際のメンバーと他のアタッチ済みポリシーも別途確認してください。
変更前
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:AttachUserPolicy",
]
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 の参照操作だけを残します。他のポリシーを通じて同じアタッチ権限が残っていないか確認してください。