설명
컨테이너의 권한 상승을 허용하는 정책은 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
}
}
이 정책을 통해 권한 상승이 허용된 컨테이너를 실행할 수 없도록 제한합니다. 이미 부여된 권한도 별도로 최소화해야 합니다.