컨테이너 실행 UID 설정 점검

이미지와 볼륨에 맞는 전용 비 root UID를 지정하고 실제 사용자 매핑과 파일 권한을 확인하세요.

설명

컨테이너가 사용하는 숫자 UID가 호스트나 공유 볼륨의 다른 사용자와 겹치면 의도하지 않은 파일 접근이 가능해질 수 있습니다. 실제 영향은 사용자 네임스페이스의 UID 매핑, 접근 가능한 마운트와 파일 권한에 달려 있습니다. 낮은 UID라는 이유만으로 호스트 권한을 얻는 것은 아닙니다.

운영 환경에서는 전용 비 root UID 범위를 정하고 이미지와 매니페스트에 일관되게 적용하세요. 숫자를 높이는 것만으로 격리가 보장되지는 않습니다.

잠재적 영향

접근 가능한 파일의 소유자 UID가 겹치면 해당 사용자의 파일을 읽거나 변경할 수 있습니다. UID를 계획 없이 변경하면 애플리케이션이 필요한 파일에 접근하지 못해 시작이나 데이터 처리가 실패할 수도 있습니다.

해결 방법

  • 조직에서 할당한 전용 비 root UID를 runAsUser에 지정하고 파드 기본값과 컨테이너별 재정의를 함께 확인하세요.
  • runAsGroup, 볼륨 소유권과 파일 권한을 실제 UID 매핑에 맞추고 불필요한 호스트 마운트를 제거하세요.
  • 변경 후 필요한 파일 접근과 애플리케이션 동작은 유지되고 다른 사용자의 파일 접근은 차단되는지 검증하세요.

예시

UID 할당의 비교 예시입니다. 이미지가 지정 UID로 실행될 수 있어야 하며, 필요한 파일과 볼륨 권한을 별도로 준비하세요.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo-2
spec:
  securityContext:
    runAsUser: 1000
  containers:
    - name: sec-ctx-demo-2
      image: gcr.io/google-samples/node-hello:1.0
      securityContext:
        runAsUser: 2000
        allowPrivilegeEscalation: false

이 컨테이너는 파드의 1000을 재정의해 UID 2000으로 실행됩니다. 해당 UID가 실제 마운트의 다른 사용자와 겹치는지 확인해야 합니다.

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo-2
spec:
  securityContext:
    runAsUser: 10000
  containers:
    - name: sec-ctx-demo-2
      image: gcr.io/google-samples/node-hello:1.0
      securityContext:
        runAsUser: 10100
        allowPrivilegeEscalation: false

컨테이너에 UID 10100을 지정합니다. 10000 이상이라는 숫자 자체가 안전 기준을 충족한다는 보장은 없으므로 실제 할당과 파일 권한을 확인하세요.

참조