컨트롤러의 API 서버 CA 신뢰 설정 점검

워크로드에 배포되는 CA 묶음이 실제 API 서버 인증서를 올바르게 검증하는지 확인하세요.

설명

kube-controller-manager의 --root-ca-file은 서비스 계정 토큰 Secret 등에 포함할 PEM 형식 CA 묶음을 지정합니다. 워크로드는 이 신뢰 정보를 사용해 API 서버의 TLS 인증서를 검증할 수 있습니다. 토큰을 서명하는 개인 키와는 다른 설정입니다.

최근 버전의 CA 게시 컨트롤러는 이 경로를 생략하면 자신의 클라이언트 설정에 있는 CA 데이터를 사용할 수 있습니다. 따라서 경로의 유무뿐 아니라 실제 배포된 CA가 API 서버 인증서와 맞는지 확인해야 합니다.

잠재적 영향

  • 잘못되거나 오래된 CA로 인해 워크로드의 API 서버 TLS 연결이 실패할 수 있습니다.
  • 장애를 우회하려고 인증서 검증을 끄면 서버 위장이나 중간자 공격 위험이 생길 수 있습니다.

해결 방법

  • API 서버 인증서를 검증할 수 있는 신뢰할 CA 묶음을 확인하고 필요한 경우 --root-ca-file로 명시하세요.
  • 실제 PEM CA 파일을 컨트롤러가 읽을 수 있게 제공하고 배포된 CA 및 인증서 갱신 절차를 확인하세요.
  • 워크로드에서 TLS 검증이 성공하는지 시험하고 인증서 검증을 비활성화하지 마세요.

예시

기존 v1.6.0 이미지가 포함된 명령 인수 비교용 발췌입니다. 해당 버전을 배포하라는 권장 사항이 아닙니다. 지원되는 버전과 실제 제어면 설정에 적용하고 필요한 인증서·접속 설정은 별도로 구성하세요. 예시 경로는 실제로 제공한 CA 인증서 파일로 바꾸세요.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0
      command: ["kube-controller-manager"]
      args: []

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0
      command: ["kube-controller-manager"]
      args: ["--root-ca-file=/path/to/ca/file.pem"]

설명:

  • 변경 전: CA 파일 경로를 명시하지 않습니다. 실제 신뢰 정보는 사용 버전과 클라이언트 설정을 함께 확인해야 합니다.
  • 변경 후: CA 파일 경로를 명시합니다. 파일이 존재하고 실제 API 서버 인증서를 검증하는 올바른 PEM CA 묶음이어야 합니다.

참조