설명
컨테이너가 사용하는 숫자 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 이상이라는 숫자 자체가 안전 기준을 충족한다는 보장은 없으므로 실제 할당과 파일 권한을 확인하세요.