host PID namespace를 공유하는 Kubernetes 워크로드

hostPID를 사용하면 컨테이너가 노드의 프로세스 네임스페이스를 공유해 격리가 약해집니다.

설명

hostPID: true가 설정된 Pod는 호스트의 프로세스 ID 네임스페이스를 공유합니다. 컨테이너에서 노드와 다른 워크로드의 프로세스를 볼 수 있어 일반 애플리케이션에는 불필요한 정보 접근 범위를 만들 수 있습니다.

프로세스를 보는 것과 제어하는 것은 다릅니다. 신호 전송이나 프로세스 추적에는 사용자 ID, Linux capability 등 추가 권한 조건이 적용됩니다.

잠재적 영향

  • 노드에서 실행 중인 프로세스와 실행 인자 등 운영 정보가 노출될 수 있습니다.
  • 추가 권한이 있으면 다른 프로세스의 동작을 방해하거나 민감한 정보를 얻는 데 악용될 수 있습니다.

해결 방법

  • 필요하지 않은 hostPID를 제거하거나 false로 설정하세요.
  • hostIPC, hostNetwork, privileged와 추가 capability도 함께 검토하세요.
  • 진단이나 운영 도구에 필요한 예외는 승인된 워크로드로 제한하고 사용 권한을 관리하세요.

예시

다음 예제는 Pod의 호스트 PID 네임스페이스 공유 여부를 비교합니다. 이미지와 실행 명령은 실제 용도에 맞게 구성하세요.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo
spec:
  hostPID: true
  containers:
    - name: sec-ctx-demo
      image: busybox

호스트 PID 네임스페이스를 공유하여 노드 프로세스에 대한 가시성이 커집니다.

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo
spec:
  hostPID: false
  containers:
    - name: sec-ctx-demo
      image: busybox

호스트 PID 네임스페이스를 공유하지 않습니다. 파일 접근이나 다른 네임스페이스 공유에 대한 제어도 별도로 유지해야 합니다.

참조