컨테이너/K8s 진단 - ServiceAccount Token Auto-Mount
점검 결과
| ServiceAccount | Auto-Mount | 평가 |
|---|
| default | 활성화 | 위험! |
| app-sa | 활성화 | 위험! |
| restricted-sa | 비활성화 | 안전 |
Auto-Mount Token 분석
apiVersion: v1
kind: ServiceAccount
metadata:
name: default
automountServiceAccountToken: true # 기본값
---
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
serviceAccountName: default
automountServiceAccountToken: true # Pod도 자동 마운트
containers:
- name: app
image: app:latest
[위험한 설정]
1. 토큰이 컨테이너에 자동 마운트됨
2. /var/run/secrets/kubernetes.io/serviceaccount/
에 토큰 저장됨
3. 컨테이너 탈출시 토큰 탈취 가능
# 컨테이너 내에서 토큰 접근
cat /var/run/secrets/kubernetes.io/serviceaccount/token
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
# 토큰으로 API 서버 접근
curl -H "Authorization: Bearer " \\
https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/default/pods
[공격 영향]
1. 토큰 탈취로 Pod 권한 상승
2. 다른 Pod/리소스 접근
3. Secret 읽기
4. ConfigMap 수정
5. Pod 삭제로 서비스 거부
조치 가이드
- 기본 auto-mount 비활성화: 필요시만 활성화
- Pod 레벨 제어: automountServiceAccountToken: false
- 권한 최소화: ServiceAccount 권한 제한
- 토큰 수명 제한: 만료 시간 설정