IAM 역할의 iam:SetDefaultPolicyVersion 권한 점검

역할이 관리형 정책의 기본 버전을 변경할 수 있는 범위를 제한하세요.

설명

iam:SetDefaultPolicyVersion을 가진 역할을 사용하는 주체는 고객 관리형 정책의 기존 버전을 기본값으로 지정할 수 있습니다. 해당 역할이나 제어 가능한 다른 주체에 적용되는 정책에 더 넓은 권한의 버전이 남아 있다면 권한 상승 경로가 될 수 있습니다.

새 정책 내용을 작성하는 권한과는 다릅니다. 기존 버전과 실제 적용 대상을 확인해야 하며, 다른 적용 가능한 제한과 명시적 거부도 유효합니다.

잠재적 영향

  • 공유 정책을 이전 버전으로 되돌리면서 여러 워크로드에 불필요한 권한이 다시 부여될 수 있습니다.
  • 승인된 권한 변경 절차를 벗어나 역할의 접근 범위가 바뀔 수 있습니다.

해결 방법

불필요한 iam:SetDefaultPolicyVersion을 제거하고 필요한 작업은 승인된 관리 역할로 제한하세요. Resource에 대상 고객 관리형 정책 ARN을 지정하고 전환할 버전과 적용 대상을 검토하세요. iam:CreatePolicyVersion을 통한 기본 버전 변경도 확인하고 미승인 변경이 차단되는지 시험하세요.

예시

같은 역할과 인라인 정책을 유지한 발췌입니다. 실제 구성에는 생략한 신뢰 정책을 별도로 정의하세요.

변경 전

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:SetDefaultPolicyVersion",
        ]
        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 조회 작업으로 제한합니다. 다른 경로의 정책 변경 권한과 조회 범위도 검토하세요.

참조