클라이언트 인증서 CA 설정 점검이 필요한 Kubernetes 구성

클라이언트 인증서를 사용할 때 실제로 신뢰할 CA와 인증 동작을 확인하세요.

설명

클라이언트 인증서로 kube-apiserver나 kubelet에 접속한다면 신뢰할 CA를 올바르게 구성해야 합니다. --client-ca-file 또는 authentication.x509.clientCAFile은 클라이언트 신원을 검증할 CA 인증서를 가리킵니다. 파일 확장자만으로 인증서 내용이나 신뢰 범위가 정해지지는 않습니다.

다른 지원 인증 방식을 사용할 수도 있으므로 CA 설정의 유무만으로 익명 접근이 허용된다고 단정할 수는 없습니다. 인증 방식과 별도로 인가 정책도 확인하세요.

잠재적 영향

  • 잘못된 CA나 사용할 수 없는 파일은 정상 클라이언트 인증을 실패하게 만들 수 있습니다.
  • 신뢰 범위가 과도하면 의도하지 않은 인증서로 신원을 주장할 수 있어 권한 구성에 따라 접근 위험이 커집니다.

해결 방법

  • 인증서 인증이 필요하면 신뢰할 CA의 PEM 인증서 묶음을 지정하고 실제 경로·마운트·읽기 권한을 확인하세요.
  • CA 발급·교체 권한을 제한하고 인증서 유효기간과 필요한 사용자·그룹 권한을 검토하세요.
  • 변경 후 승인된 인증서는 성공하고 신뢰하지 않는 인증서는 거부되는지, 필요한 인가 정책이 적용되는지 시험하세요.

예시

kubelet의 CA 경로만 비교하는 발췌입니다. foo/bar는 이미지 자리표시자이며 실제 kubelet과 설정·파일 마운트는 별도로 준비해야 합니다.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kubelet
spec:
  containers:
    - name: kubelet
      image: foo/bar
      command:
        - "kubelet"
      args:
        - "--client-ca-file=/var/lib/ca.txt"

ca.txt라는 이름도 유효한 PEM CA 인증서를 담을 수 있습니다. 파일의 실제 내용과 신뢰할 발급자인지 확인해야 합니다.

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kubelet
spec:
  containers:
    - name: kubelet
      image: foo/bar
      command:
        - "kubelet"
      args:
        - "--client-ca-file=/var/lib/ca.pem"

ca.pem 경로를 지정합니다. 이름 변경만으로 인증을 보장하지 않으므로 실제 CA 인증서와 클라이언트 인증을 검증하세요.

참조