설명
hostPID: true를 허용하면 파드가 호스트의 프로세스 네임스페이스를 공유할 수 있습니다. 이 경우 컨테이너가 호스트 프로세스를 관찰하거나 간접적으로 영향을 줄 가능성이 커집니다.
일반 애플리케이션은 host PID 공유가 필요하지 않습니다. PodSecurityPolicy를 사용하는 환경에서는 기본적으로 금지하는 편이 안전합니다.
참고: PodSecurityPolicy는 Kubernetes v1.21에서 사용 중단되었고 v1.25에서 제거되었습니다. 이 문서는 PSP를 사용하는 레거시 클러스터나 PSP 리소스가 남아 있는 환경을 다룹니다. 최신 클러스터에서는 Pod Security Admission 또는 Gatekeeper나 Kyverno 같은 정책 엔진으로 같은 제한을 적용하세요.
잠재적 영향
- 파드가 호스트 프로세스 정보를 더 많이 볼 수 있습니다.
- 호스트와 컨테이너 사이의 격리 수준이 낮아질 수 있습니다.
- 침해 시 호스트 프로세스 관찰과 추가 공격 가능성이 커질 수 있습니다.
해결 방법
- PSP에서
hostPID: false를 설정하세요. - host PID가 꼭 필요한 시스템 워크로드만 예외적으로 허용하세요.
- 호스트 네임스페이스 공유 설정은 hostPID, hostIPC, hostNetwork를 함께 점검하세요.
예시
기존 PSP의 일부 필드만 발췌했습니다. 다른 필수 필드와 정책 사용 권한은 별도로 구성해야 합니다.
변경 전
yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: example
spec:
hostPID: true
seLinux:
rule: RunAsAny
변경 후
yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: example
spec:
hostPID: false
seLinux:
rule: RunAsAny
설명:
- 변경 전: host PID 공유를 요청하는 Pod를 허용합니다. 모든 Pod에 공유를 강제하는 것은 아닙니다.
- 변경 후: host PID 공유를 막아 호스트와 파드 사이 격리를 유지합니다.