etcd 피어 TLS 인증서·키 설정 점검

etcd 피어 통신의 인증서·키와 상호 TLS 설정을 함께 확인하세요.

설명

etcd 피어 통신은 노드 간 데이터 복제와 합의에 사용됩니다. 신뢰할 인증서와 대응하는 개인 키를 사용해 피어 연결을 암호화하고, 상대 노드의 신원도 검증해야 합니다.

인증서·키 경로만 지정하는 것으로 상호 TLS 구성이 완성되지는 않습니다. HTTPS 피어 주소와 신뢰할 CA, 피어 인증서 검증을 함께 구성하세요.

잠재적 영향

  • 보호되지 않은 피어 경로에서는 통신을 가로챈 주체가 데이터를 엿보거나 변조할 수 있습니다.
  • 잘못된 인증서·키나 만료된 인증서는 피어 연결을 실패하게 하여 클러스터 가용성에 영향을 줄 수 있습니다.

해결 방법

  • 수동 인증서 구성을 사용하면 --peer-cert-file과 --peer-key-file에 서로 대응하는 인증서와 키를 지정하세요. 개인 키 접근 권한을 제한하세요.
  • 피어의 수신·광고 주소에 HTTPS를 사용하고 --peer-trusted-ca-file 및 --peer-client-cert-auth로 신뢰할 피어 인증서를 검증하세요.
  • 인증서 이름·유효기간과 갱신 절차를 확인하고, 변경 후 피어 연결과 클러스터 상태를 검증하세요. 클라이언트 연결의 TLS는 별도로 점검하세요.

예시

과거 etcd 3.2.18 컨테이너 인자의 발췌입니다. 전체 Deployment, 파일 마운트와 피어 주소 설정은 생략되어 있으며 새 배포에는 지원되는 버전을 사용하세요.

변경 전

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:
            - "--peer-cert-file=/etc/env/file.crt"

피어 인증서만 지정하고 대응하는 개인 키를 지정하지 않았습니다. 의도한 수동 TLS 구성을 완성하려면 키가 필요합니다.

변경 후

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:
            - "--peer-cert-file=/etc/env/file.crt"
            - "--peer-key-file=/etc/env/file2.key"

피어 인증서와 키를 함께 지정합니다. 실제 HTTPS 주소, 신뢰할 CA와 상대 인증서 검증도 준비해야 상호 인증된 피어 통신을 구성할 수 있습니다.

참조