권한 상승을 허용하는 Kubernetes PodSecurityPolicy

권한 상승 제한을 보안 정책에 적용해 여러 워크로드의 최소 권한 기준을 유지하세요.

설명

컨테이너의 권한 상승을 허용하는 정책은 setuid 실행 파일이나 파일 capabilities를 통한 추가 권한 획득 경로를 남길 수 있습니다. 실제 권한 획득 여부는 Pod 설정과 실행 파일 등에도 달려 있습니다. allow_privilege_escalation = false는 이미 가진 권한을 제거하는 설정은 아닙니다.

PodSecurityPolicy는 Kubernetes v1.21에서 사용 중단되었고 v1.25에서 제거되었습니다. 현재는 Pod Security Admission이나 정책 엔진으로 같은 제한을 적용하세요.

잠재적 영향

  • 개별 Pod의 설정 실수가 정책에서 차단되지 않을 수 있습니다.
  • 침해된 프로세스가 추가 권한을 얻을 수 있는 실행 파일을 악용할 수 있습니다.

해결 방법

  • 레거시 PSP의 spec.allow_privilege_escalation을 false로 명시하세요.
  • 이 제한과 양립하지 않는 privileged와 SYS_ADMIN을 금지하고 불필요한 capabilities도 제한하세요.
  • 실제 워크로드와 적용 가능한 다른 정책을 확인하고, 마이그레이션 후에도 제한이 유지되는지 검증하세요.

예시

PSP를 지원하는 과거 클러스터의 부분 예시입니다. 다른 필수 정책 항목은 생략하고 권한 상승 허용만 비교합니다.

변경 전

hcl
resource "kubernetes_pod_security_policy" "policy" {
  metadata {
    name = "terraform-example"
  }

  spec {
    allow_privilege_escalation = true
  }
}

이 정책은 Pod의 권한 상승 허용을 금지하지 않습니다. 모든 컨테이너가 실제로 추가 권한을 얻는다는 뜻은 아닙니다.

변경 후

hcl
resource "kubernetes_pod_security_policy" "policy" {
  metadata {
    name = "terraform-example"
  }

  spec {
    allow_privilege_escalation = false
  }
}

이 정책을 통해 권한 상승이 허용된 컨테이너를 실행할 수 없도록 제한합니다. 이미 부여된 권한도 별도로 최소화해야 합니다.

참조