説明
グループを通じて広い iam:AddUserToGroup を許可すると、メンバーが自身や他の IAM ユーザーを同じアカウントの別のグループに追加できます。追加先のグループによって実効権限が増える場合、権限昇格に利用されるおそれがあります。
Resource には追加先のグループ ARN を指定します。グループを制限するだけでは追加するユーザーは限定されないため、ユーザーと追加先の両方を承認する必要があります。アクセス許可の境界、組織のポリシー、明示的な拒否は、追加されたユーザーのアクセスを引き続き制限できます。
想定される影響
- 未承認のユーザーが、より強い権限を持つグループのアクセス権限を得る可能性があります。
- メンバー変更による権限付与が、既存の承認手順を迂回するおそれがあります。
対処方法
一般グループから不要な iam:AddUserToGroup を削除し、メンバー管理は承認済みの管理ロールで行ってください。Resource を承認済みの追加先グループ ARN に限定し、追加するユーザーも確認してください。必要な変更が機能し、未承認の追加が阻止されることを試験し、メンバー変更ログを確認してください。
例
同じグループのインラインポリシーから、ユーザー追加権限を削除する比較です。
変更前
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:AddUserToGroup",
]
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 の参照操作に限定します。他のポリシーのメンバー管理権限と参照範囲も確認してください。