설명
Privileged 실행을 허용하는 PodSecurityPolicy는 해당 정책을 사용하는 워크로드에 광범위한 권한을 요청할 수 있는 여지를 줍니다. 실제 privileged 컨테이너는 기본 격리가 크게 약해져 침해가 노드에 영향을 줄 수 있습니다. 정책의 허용만으로 모든 Pod가 privileged 모드가 되는 것은 아닙니다.
PodSecurityPolicy는 Kubernetes v1.21에서 사용 중단되었고 v1.25에서 제거되었습니다. 현재 클러스터에서는 Pod Security Admission이나 정책 엔진으로 제한하세요.
잠재적 영향
- 필요 이상의 권한을 가진 워크로드가 배포될 수 있습니다.
- Privileged 컨테이너의 침해가 노드와 다른 워크로드에 영향을 줄 수 있습니다.
해결 방법
- 레거시 PSP에서
spec.privileged = false를 명시하세요. - 특수 운영 작업은 더 좁은 권한으로 대체할 수 있는지 검토하고 필요한 예외는 정책과 노드로 분리하세요.
- 권한 상승, capabilities와 호스트 네임스페이스 공유도 함께 제한하세요.
예시
과거 PSP 지원 환경에서 privileged 허용을 비교하는 부분 예시입니다. 다른 필수 정책 설정은 생략했습니다.
변경 전
hcl
resource "kubernetes_pod_security_policy" "policy" {
metadata {
name = "terraform-example"
}
spec {
privileged = true
}
}
이 정책을 사용할 수 있는 Pod는 privileged 실행을 요청할 수 있습니다.
변경 후
hcl
resource "kubernetes_pod_security_policy" "policy" {
metadata {
name = "terraform-example"
}
spec {
privileged = false
}
}
이 정책은 privileged 실행을 허용하지 않습니다. 다른 정책의 허용과 실제 Pod 권한도 확인하세요.