IAM 역할의 iam:CreatePolicyVersion 권한 점검

역할의 관리형 정책 버전 생성 권한을 승인된 정책으로 제한하세요.

설명

iam:CreatePolicyVersion을 가진 역할을 사용하면 고객 관리형 정책의 새 버전을 만들고 기본 버전으로 활성화할 수 있습니다. 해당 정책이 자신이나 제어 가능한 워크로드의 역할에 연결되어 있다면 권한 상승에 이용될 수 있습니다.

기본값으로 지정하지 않은 새 버전은 적용되지 않습니다. 생성 시 기본 버전으로 지정하는 데 별도의 iam:SetDefaultPolicyVersion 권한은 필요하지 않으며, 이 작업은 인라인 정책을 버전 관리하는 기능이 아닙니다.

잠재적 영향

  • 같은 정책을 공유하는 여러 역할과 사용자의 접근 권한이 바뀔 수 있습니다.
  • 워크로드가 필요 이상의 리소스에 접근하거나 변경할 수 있습니다.

해결 방법

불필요한 iam:CreatePolicyVersion을 제거하고 필요한 작업은 승인된 배포·관리 역할로 제한하세요. Resource에 대상 고객 관리형 정책 ARN을 지정하세요. iam:SetDefaultPolicyVersion 권한과 연결 대상을 함께 검토하고 새 버전의 권한 및 변경 로그를 확인하세요.

예시

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

변경 전

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:CreatePolicyVersion",
        ]
        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 조회로 제한합니다. 다른 경로의 버전 관리 권한과 불필요한 조회 권한도 검토하세요.

참조