설명
레거시 PodSecurityPolicy의 hostIPC: true는 Pod가 호스트의 IPC 네임스페이스를 공유하도록 허용합니다. 실제로 공유하는 Pod는 노드의 공유 메모리, 세마포어, 메시지 큐 같은 IPC 자원에 접근할 수 있는 범위가 넓어집니다. 데이터 읽기나 변경에는 해당 자원의 권한도 적용됩니다.
PSP는 Kubernetes 1.21에서 사용 중단되고 1.25에서 제거되었습니다. 현재 클러스터에서는 Pod Security Admission이나 대체 정책으로 호스트 IPC 공유를 제한하세요.
잠재적 영향
- IPC 자원과 상태에 대한 정보가 워크로드에 노출될 수 있습니다.
- 접근 권한이 충분하면 다른 프로세스의 데이터나 동작에 영향을 줄 수 있습니다.
해결 방법
- 레거시 정책의
hostIPC를false로 설정하고 실제 Pod의 불필요한 호스트 IPC 공유도 제거하세요. hostPID,hostNetwork와 특권 실행도 함께 제한하세요.- 필수 시스템 도구의 예외만 승인하고, 정책이 적용된 상태에서 필요한 기능이 동작하는지 확인하세요.
예시
다음은 Kubernetes 1.25 이전 PSP의 IPC 제어 부분입니다. 다른 필수 정책 필드는 생략한 발췌입니다.
변경 전
yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: example
spec:
hostIPC: true
정책을 사용할 권한이 있는 Pod가 호스트 IPC 공유를 요청할 수 있습니다. 이 설정이 모든 Pod에 공유를 강제하지는 않습니다.
변경 후
yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: example
spec:
hostIPC: false
이 정책은 호스트 IPC 공유를 허용하지 않습니다. 다른 사용 가능한 정책이나 예외가 더 넓은 권한을 부여하지 않는지도 확인해야 합니다.