설명
GKE의 레거시 클라이언트 인증서는 클러스터 API에 접근할 때 사용하는 인증 수단입니다. Ansible의 google.cloud.gcp_container_cluster 모듈에서는 master_auth.client_certificate_config.issue_client_certificate로 발급 여부를 지정합니다. 이 옵션은 API 서버의 TLS 인증서를 검증하는 설정과 다릅니다.
레거시 인증은 GKE 1.12부터 기본적으로 비활성화되어 있으며 Autopilot에서는 사용할 수 없습니다. 클라이언트 인증서 발급을 끈 상태에서도 OAuth 인증과 API 서버의 TLS 검증을 사용할 수 있습니다.
잠재적 영향
클라이언트 인증서가 유출되면 다른 사람이 해당 인증서에 부여된 권한으로 클러스터에 접근할 수 있습니다. 발급 옵션을 끄는 것만으로 이미 발급된 인증서의 권한이 사라지지는 않으므로, 기존 인증서와 접근 권한을 함께 관리해야 합니다.
해결 방법
- 새 클러스터에서는 레거시 클라이언트 인증서 발급을 비활성화하고 OAuth 인증을 사용하세요. IAM 또는 Kubernetes RBAC를 통해 필요한 권한만 부여하세요.
kubectl을 사용하는 경우 GKE 인증 플러그인도 설정하세요. - 기존 클러스터에서는 인증 방식과 부여된 권한을 점검하세요. Google이 안내하는 RBAC 설정과 인증서 권한 제거 절차를 따른 뒤, 운영자와 자동화 작업이 계속 접근할 수 있는지 확인하세요.
예시
다음은 발급 옵션의 차이를 보여 주는 이전 버전의 구성 예시입니다. 두 예시의 기본 인증(username과 password)은 GKE 1.19부터 지원되지 않으므로 현재 환경에 그대로 적용하지 마세요.
발급을 비활성화한 설정
- name: create a cluster3
google.cloud.gcp_container_cluster:
name: my-cluster3
initial_node_count: 2
master_auth:
username: cluster_admin
password: my-secret-password
client_certificate_config:
issue_client_certificate: no
node_config:
machine_type: n1-standard-4
disk_size_gb: 500
location: us-central1-a
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: present
issue_client_certificate: no는 클라이언트 인증서 발급을 비활성화합니다.
발급을 활성화한 이전 설정
- name: create a cluster
google.cloud.gcp_container_cluster:
name: my-cluster
initial_node_count: 2
master_auth:
username: cluster_admin
password: my-secret-password
client_certificate_config:
issue_client_certificate: yes
node_config:
machine_type: n1-standard-4
disk_size_gb: 500
location: us-central1-a
project: test_project
auth_kind: serviceaccount
service_account_file: /tmp/auth.pem
state: present
issue_client_certificate: yes는 레거시 클라이언트 인증서를 발급합니다. 새 클러스터의 권장 인증 구성으로 사용하지 마세요.