컨테이너/K8s 진단 - Container Root 실행
점검 결과
| Pod/컨테이너 | User | 평가 |
|---|
| nginx-prod | root (UID 0) | 위험! |
| redis-cache | root (UID 0) | 위험! |
| app-backend | appuser (UID 1000) | 안전 |
Root 실행 분석
apiVersion: v1
kind: Pod
metadata:
name: nginx-prod
spec:
containers:
- name: nginx
image: nginx:latest
# runAsUser 미설정 = root(0)로 실행
# kubectl 확인
kubectl exec -it nginx-prod -- id
uid=0(root) gid=0(root) groups=0(root)
[위험한 상황]
- 컨테이너가 root로 실행
- 컨테이너 탈출시 호스트도 root 권한
- 파일 시스템 임의 수정 가능
- Capabilities로 인한 권한 확대
[공격 영향]
1. 컨테이너 탈출 시 호스트 root 권한 획득
2. 호스트의 민감한 파일 접근/수정
3. 다른 컨테이너/Pod 제어
4. 클러스터 전체 제어
# Dockerfile 분석 (이상적)
FROM ubuntu:20.04
RUN useradd -m appuser
USER appuser
ENTRYPOINT ["./app"]
# 부적절한 Dockerfile
FROM ubuntu:20.04
ENTRYPOINT ["./app"]
# USER 미설정 = root 실행
조치 가이드
- Dockerfile에 USER 설정: 비root 사용자 명시
- K8s securityContext: runAsUser, runAsNonRoot 설정
- Pod Security Policy: MustRunAsNonRoot 정책
- 이미지 스캔: 빌드 시 root 실행 여부 확인