설명
IAM 그룹에 iam:CreatePolicyVersion을 광범위하게 허용하면 구성원이 고객 관리형 정책의 새 버전을 만들고 기본 버전으로 지정할 수 있습니다. 자신이 속한 그룹 등에 연결된 정책을 더 강한 내용으로 바꾸면 권한 상승으로 이어질 수 있습니다.
기본 버전이 실제 적용되는 버전입니다. 인라인 정책은 이 버전 관리 대상이 아니며, 새 버전 생성 요청에서 기본값으로 지정할 때 별도의 iam:SetDefaultPolicyVersion 권한은 필요하지 않습니다.
잠재적 영향
- 공유 정책의 변경이 여러 사용자나 역할의 접근 권한을 확대할 수 있습니다.
- 승인 없는 정책 내용 변경으로 권한 부여 절차가 무력화될 수 있습니다.
해결 방법
일반 그룹에 불필요한 iam:CreatePolicyVersion을 제거하고 필요한 관리 작업은 승인된 역할로 수행하세요. Resource를 대상 고객 관리형 정책 ARN으로 제한하세요. iam:SetDefaultPolicyVersion 권한도 함께 검토하고 정책 내용과 사용 대상을 확인하며 미승인 변경이 차단되는지 시험하세요.
예시
같은 그룹의 인라인 정책으로 관리형 정책 버전 생성 권한을 부여하는 비교입니다.
변경 전
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:CreatePolicyVersion",
]
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 조회만 남습니다. 다른 정책의 버전 관리 권한과 실제 필요한 조회 범위도 확인하세요.