PSP의 Host PID 공유 허용

PodSecurityPolicy가 hostPID 공유를 허용하면 파드가 호스트 프로세스 네임스페이스를 공유할 수 있습니다.

설명

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 공유를 막아 호스트와 파드 사이 격리를 유지합니다.

참조