説明
iam:AttachGroupPolicy を持つロールは、許可された IAM グループに管理ポリシーをアタッチして、所属ユーザーの権限を拡大できる場合があります。IAM ロールはグループメンバーではないため、この操作が呼び出し元ロール自身の権限を直接増やすわけではありません。
強いポリシーを受け取れるグループとユーザーを合わせて確認してください。明示的な拒否やアクセス許可の境界は、アタッチ後も適用されます。
想定される影響
- 自動化やサービス用のロールが、複数ユーザーの権限を意図せず変更するおそれがあります。
- 拡大したユーザー権限の悪用により、情報漏えいやリソース変更のリスクが高まる可能性があります。
対処方法
ロールに不要な iam:AttachGroupPolicy を削除してください。必要な管理操作は、Resource のグループ ARN と iam:PolicyARN 条件の承認済みポリシー ARN で制限してください。グループメンバーと変更ログを確認し、正常な管理操作と未承認のアタッチの拒否を試験してください。
例
同じロールとインラインポリシーの抜粋です。ロールの信頼ポリシーは省略しているため、実際の構成では別途定義してください。
変更前
hcl
resource "aws_iam_role" "example" {
name = "cosmic"
}
resource "aws_iam_role_policy" "example" {
name = "test_inline_policy"
role = aws_iam_role.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"iam:AttachGroupPolicy",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
このロールを使う主体に、グループ全体へのポリシーのアタッチを許可します。
変更後
hcl
resource "aws_iam_role" "example" {
name = "cosmic"
}
resource "aws_iam_role_policy" "example" {
name = "test_inline_policy"
role = aws_iam_role.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
この許可文には EC2 の参照操作だけを残します。ロールの他の権限も確認してください。この抜粋はロールの完全な構成ではありません。