설명
TLS를 사용하더라도 취약한 암호군을 허용하면 연결 보호 수준이 낮아질 수 있습니다. API 서버와 kubelet이 허용하는 암호군에서 지원 버전이 안전하지 않다고 분류한 조합을 제거하세요.
암호군 목록을 생략하면 구현의 기본값이 사용되며, 생략 자체가 약한 암호화를 뜻하지는 않습니다. 이 설정은 TLS 1.3 암호군을 제어하지 않습니다.
잠재적 영향
- 취약한 조합이 협상되면 암호화된 통신의 보호 수준이 낮아질 수 있습니다.
- 지원되지 않는 조합만 남기면 정상 클라이언트의 TLS 연결이 실패할 수 있습니다.
해결 방법
- 사용 버전의 권장 목록을 기준으로 AES-GCM이나 ChaCha20-Poly1305 등 적절한 암호군을 선택하세요.
- TLS 최소 버전과 인증서 유형 및 클라이언트 호환성을 함께 검토하세요.
- 변경 후 실제 TLS 협상과 정상 연결을 시험하고 취약한 조합이 허용되지 않는지 확인하세요.
예시
kubelet과 과거 API 서버의 암호군 인자를 각각 보여 주는 발췌입니다. 동일 프로세스의 완전한 교체 예시는 아니며 실제 버전·인증서와 실행 이미지를 적용해야 합니다.
변경 전
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: foo/bar
command: ["kubelet"]
args:
[
"--tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
]
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256을 허용합니다. 현재 Kubernetes 참조는 이 조합을 안전하지 않은 암호군으로 분류합니다.
변경 후
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
command: ["kube-apiserver"]
args:
[
"--tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
]
AES-GCM 조합을 지정했습니다. 사용 버전과 서버 인증서·클라이언트가 이를 지원하는지 확인하세요.