説明
iam:AttachUserPolicy を持つロールは、許可された IAM ユーザーに管理ポリシーをアタッチして、その権限を拡大できる場合があります。この操作は呼び出し元ロール自身の権限を変えず、対象ユーザーとしてサインインする権限も与えません。
影響は、アタッチできるポリシーと対象ユーザーを利用できる経路によって変わります。ユーザーのアクセス許可の境界、明示的な拒否、組織ポリシーも引き続き適用されます。
想定される影響
- 自動化ロールによる誤ったアタッチで、ユーザーに不要な管理権限が付与されるおそれがあります。
- 拡大したユーザー権限の悪用は、情報漏えいやリソース変更につながる可能性があります。
対処方法
ロールに不要な iam:AttachUserPolicy を削除してください。必要な管理操作は、Resource の対象ユーザー ARN と iam:PolicyARN 条件の承認済みポリシーで制限してください。境界と変更ログを確認し、正常な管理操作と未承認のアタッチの拒否を試験してください。
例
同じロールとインラインポリシーの抜粋です。実際の構成では、ロールの信頼ポリシーを別途定義してください。
変更前
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:AttachUserPolicy",
]
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 の参照操作に絞ります。他のユーザー管理権限と、実際に必要な参照範囲も確認してください。