説明
iam:AddUserToGroup を持つロールを使う主体は、同じアカウントの IAM ユーザーをグループに追加できます。自身が制御できるユーザーを、より広い実効権限を付与するグループに追加すると、そのユーザーを通じた権限昇格の経路になるおそれがあります。
ロール自体は IAM グループに参加できません。ユーザーを追加しても呼び出し元ロールの権限は変わらず、そのユーザーとしてログインできるようにもなりません。Resource は追加先グループを限定するため、追加するユーザーも別途承認する必要があります。
想定される影響
- 権限の強いグループに未承認のユーザーが追加され、アクセスが拡大する可能性があります。
- 侵害された管理ロールが、ユーザーへの権限付与に悪用されるおそれがあります。
対処方法
ロールに不要な iam:AddUserToGroup を削除し、必要な場合は Resource を承認済みの追加先グループ 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:AddUserToGroup",
]
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 の参照操作だけを残します。他のポリシーのユーザー追加権限と不要な参照権限も確認してください。