설명
--auto-tls=true는 etcd가 자체 서명 인증서를 자동으로 생성해 클라이언트 연결에 사용하도록 합니다. 통신을 암호화할 수 있지만, 이 자동 구성만으로 연결 상대의 신원을 인증하는 것은 아닙니다.
etcd는 Kubernetes 핵심 데이터를 저장하는 컴포넌트입니다. 운영 환경에서는 관리하는 CA와 인증서로 신뢰 체계를 구성하고 인증서 검증을 유지해야 합니다.
잠재적 영향
연결 상대를 검증하지 않으면 통신 경로를 장악한 주체의 위장을 충분히 방어하지 못할 수 있습니다. 인증서 발급·갱신과 신뢰 범위를 조직 기준에 맞게 관리하기 어려워질 수도 있습니다.
해결 방법
- 관리하는 인증서·키와 HTTPS 연결을 먼저 준비한 뒤
--auto-tls=true를 제거하거나false로 설정하세요. - 클라이언트가 신뢰할 CA로 서버 인증서를 검증하도록 설정하고, 필요한 클라이언트 인증도 함께 구성하세요.
- 인증서 만료와 갱신을 관리하고 정상 연결 및 신뢰하지 않는 인증서의 거부를 확인하세요.
예시
기존 etcd 버전의 실행 인자를 비교하는 발췌입니다. 실제 배포에는 지원 버전, HTTPS 주소와 인증서 파일 마운트 등 나머지 설정이 필요합니다.
변경 전
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-etcd-deployment
spec:
template:
spec:
containers:
- name: database
image: gcr.io/google_containers/etcd:v3.2.18
command: ["etcd"]
args: ["--auto-tls=true"]
자동 생성한 자체 서명 인증서를 사용하도록 설정합니다. 암호화와 연결 상대의 인증은 구분해야 합니다.
변경 후
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-etcd-deployment
spec:
template:
spec:
containers:
- name: database
image: gcr.io/google_containers/etcd:v3.2.18
command: ["etcd"]
args: []
자동 TLS 인자를 제거했을 뿐입니다. 이 예제만으로 TLS가 구성되지는 않으므로 관리하는 인증서·키와 HTTPS 설정을 함께 적용하세요.