Kubernetes Pod와 컨테이너 보안 컨텍스트 점검

워크로드에 필요한 실행 사용자와 권한·파일 시스템 보호를 명시하세요.

설명

securityContext는 Pod와 컨테이너에 어떤 권한과 실행 조건을 적용할지 정하는 보안 설정입니다. 설정을 생략하면 이미지, 런타임과 admission 정책의 기본값에 의존하게 됩니다. 생략만으로 모든 보호가 없다고 단정할 수는 없지만, 필요한 보호가 실제로 적용되는지 확인하기 어렵습니다. 빈 securityContext만 추가해도 보호가 완성되는 것은 아닙니다.

잠재적 영향

  • 비루트 실행이나 권한 상승 방지 같은 필요한 보호가 빠질 수 있습니다.
  • 워크로드별 실행 조건이 달라져 침해 시 격리 수준이 기대보다 약할 수 있습니다.

해결 방법

  • Pod와 각 컨테이너에 필요한 securityContext를 해당 필드의 지원 범위에 맞게 지정하세요. 실행 사용자, allowPrivilegeEscalation, readOnlyRootFilesystem과 Linux capability를 검토하세요.
  • 컨테이너 설정이 Pod의 공통 설정을 재정의하는지 확인하고 실제 적용 값을 검증하세요. 이미지의 사용자·파일 권한과 필요한 쓰기 경로를 맞춘 뒤 시작과 정상 동작을 시험하세요.

예시

예시 이미지는 실제 검증된 이미지로 바꾸세요. UID 1000으로 실행할 수 있어야 하며, 쓰기가 필요한 경로는 별도 볼륨과 적절한 권한이 필요합니다.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  containers:
    - name: app
      image: images.my-company.example/app:v4

Pod와 컨테이너의 실행 조건을 명시하지 않아 기본값에 의존합니다.

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  securityContext:
    runAsUser: 1000
  containers:
    - name: app
      image: images.my-company.example/app:v4
      securityContext:
        allowPrivilegeEscalation: false
        readOnlyRootFilesystem: true

Pod에 UID 1000을 지정하고 컨테이너에 권한 상승 방지와 읽기 전용 루트 파일 시스템을 적용합니다. 필요한 다른 보안 설정은 별도로 검토해야 합니다.

참조