privileged 실행을 허용하는 PodSecurityPolicy

특권 실행을 허용하는 PodSecurityPolicy는 컨테이너가 노드 자원에 광범위하게 접근할 수 있는 구성을 허용합니다.

설명

레거시 PodSecurityPolicy의 privileged: true는 특권 컨테이너 실행을 허용합니다. Linux 특권 컨테이너는 모든 capability를 받고 여러 런타임 격리 제약을 우회할 수 있어, 일반 애플리케이션보다 훨씬 큰 권한을 갖습니다. 정책이 허용한다는 사실이 모든 Pod를 자동으로 특권 모드로 실행한다는 뜻은 아닙니다.

PSP는 Kubernetes 1.21에서 사용 중단되고 1.25에서 제거되었습니다. 현재 클러스터에서는 Pod Security Admission이나 대체 정책으로 불필요한 특권 실행을 제한하세요.

잠재적 영향

  • 호스트 장치와 시스템 자원에 대한 접근 범위가 커질 수 있습니다.
  • 컨테이너가 침해되면 노드나 다른 워크로드에 미치는 영향이 확대될 수 있습니다.

해결 방법

  • 레거시 정책에 privileged: false를 설정하고 실제 워크로드에서도 특권 모드를 제거하세요.
  • 필요한 작업에만 최소 capability를 부여하고 hostPath와 호스트 네임스페이스 공유도 제한하세요.
  • 필수 시스템 도구의 예외는 사용 권한과 배포 범위를 좁히고, 대체 정책의 적용 및 정상 동작을 확인하세요.

예시

다음은 Kubernetes 1.25 이전 PSP의 특권 제어 부분입니다. 다른 필수 정책 필드는 생략했습니다.

변경 전

yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: example
spec:
  privileged: true

이 정책을 사용할 수 있는 Pod는 특권 실행을 요청할 수 있습니다.

변경 후

yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: example
spec:
  privileged: false

이 정책은 특권 실행을 허용하지 않습니다. 개별 capability나 다른 정책을 통한 과도한 권한도 별도로 제한해야 합니다.

참조