説明
IAM ユーザーが iam:AttachRolePolicy で強い管理ポリシーをアタッチすると、対象ロールの権限が拡大する場合があります。そのロールを引き受けるか、ロールを使うワークロードを制御できれば、拡大した権限を利用できるおそれがあります。
アタッチだけでは、ユーザー自身の権限やロールの信頼設定は変わりません。境界、組織ポリシー、明示的な拒否も実際のアクセスを制限する場合があります。
想定される影響
- ロールを使うアプリケーションに、不要なリソースへのアクセス権限が追加される可能性があります。
- 未承認のポリシー変更により、サービスの権限や運用上の制御が変わるおそれがあります。
対処方法
不要な iam:AttachRolePolicy を削除し、必要な管理操作は承認済みロールで行ってください。Resource を対象ロール ARN に限定し、iam:PolicyARN 条件で許可するポリシーを指定してください。ロールを使う経路と他の権限を確認し、正常な操作と未承認のアタッチの拒否を試験してください。
例
同じユーザーとインラインポリシーを変更します。この比較に、別の管理ポリシーアタッチリソースは不要です。
変更前
hcl
resource "aws_iam_user" "example" {
name = "cosmic"
}
resource "aws_iam_user_policy" "example" {
name = "test_inline_policy"
user = aws_iam_user.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"iam:AttachRolePolicy",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
ユーザーに、ロール全体への管理ポリシーのアタッチを許可します。
変更後
hcl
resource "aws_iam_user" "example" {
name = "cosmic"
}
resource "aws_iam_user_policy" "example" {
name = "test_inline_policy"
user = aws_iam_user.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
この許可文には EC2 の参照操作だけを残します。他のポリシーのロール管理権限と参照範囲も、業務に必要な範囲に限定してください。