説明
IAM ユーザーに広い iam:SetDefaultPolicyVersion を許可すると、カスタマー管理ポリシーの既存バージョンをデフォルトに変更できます。自身に直接、またはグループを通じて適用されるポリシーに、より多くの権限を許可するバージョンが残っていれば、有効化して権限を増やせるおそれがあります。
この操作で任意の新しいポリシー内容を作成できるわけではありません。リスクは既存バージョンの内容と適用先によって異なり、他の適用可能な制限や明示的な拒否も引き続き適用されます。
想定される影響
- 以前縮小したアクセス権限が再び有効になる可能性があります。
- 同じポリシーを共有する他のユーザーやロールの権限も変わるおそれがあります。
対処方法
一般ユーザーに不要な iam:SetDefaultPolicyVersion を削除し、承認済みのロールでバージョンを管理してください。Resource を対象のカスタマー管理ポリシー ARN に限定し、既存バージョンの内容と適用先を確認してください。iam:CreatePolicyVersion も確認し、承認された変更が機能し、未承認の変更が阻止されることを試験してください。
例
同じユーザーのインラインポリシーを比較します。このインラインポリシーは、カスタマー管理ポリシーのデフォルトバージョンを変更する権限を付与します。
変更前
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:SetDefaultPolicyVersion",
]
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 の参照操作だけを残します。他のポリシーのバージョン変更権限と、実際に必要な参照範囲も確認してください。