IAM 사용자의 iam:SetDefaultPolicyVersion 권한 점검

사용자가 관리형 정책의 이전 버전을 활성화할 수 있는 범위를 제한하세요.

설명

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 조회만 남습니다. 다른 정책의 버전 변경 권한과 실제 필요한 조회 범위도 확인하세요.

참조