설명
automountServiceAccountToken을 끄지 않으면 파드에 서비스 계정 토큰이 자동으로 주입될 수 있습니다. 애플리케이션이 Kubernetes API를 직접 호출하지 않는다면 이 토큰은 불필요한 자격 증명입니다.
파드에 설정이 없으면 ServiceAccount의 설정이 적용되고, 둘 다 지정했다면 파드의 설정이 우선합니다. 불필요한 토큰이 남아 있으면 애플리케이션 취약점이나 디버깅 도구를 통해 토큰이 노출될 가능성이 커집니다. 기본값에 의존하지 말고 필요한 경우만 예외적으로 허용하는 편이 안전합니다.
잠재적 영향
- Kubernetes API 접근이 필요하지 않은 파드가 접근 토큰을 보유할 수 있습니다.
- 침해된 컨테이너를 통해 토큰 탈취와 추가 이동이 발생할 수 있습니다.
- 워크로드별 API 접근 필요 여부가 불명확해질 수 있습니다.
해결 방법
- Kubernetes API가 필요하지 않은 파드에는
automountServiceAccountToken: false를 설정하세요. - 기본값 의존 대신 워크로드별 필요 여부를 명시적으로 판단하세요.
- 토큰이 필요한 워크로드는 전용 ServiceAccount와 함께 제한적으로 운영하세요.
예시
변경 전
yaml
apiVersion: v1
kind: Pod
metadata:
name: security.context.demo
spec:
automountServiceAccountToken: true
containers:
- name: sec-ctx-demo
image: busybox
변경 후
yaml
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
automountServiceAccountToken: false
containers:
- name: sec-ctx-demo
image: busybox
설명:
- 변경 전: 토큰이 필요하지 않은 파드에도 서비스 계정 토큰이 자동 주입될 수 있습니다.
- 변경 후: 자동 마운트를 끄고 토큰 노출 가능성을 줄입니다. 이 설정은 계정의 RBAC 권한을 회수하거나 별도로 제공한 자격 증명을 제거하지는 않습니다.