설명
GKE 노드가 기본 서비스 계정을 공유하거나 필요 이상의 IAM 역할을 가지면, 노드가 침해되었을 때 다른 Google Cloud 리소스로 영향이 퍼질 수 있습니다. 기본 계정이라는 이유만으로 관리자 권한을 갖는 것은 아니므로 실제 역할을 확인해야 합니다.
잠재적 영향
노드 자격 증명이 악용되면 해당 계정에 허용된 리소스를 조회하거나 변경할 수 있습니다. 계정 공유는 권한 분리와 사용 주체 추적도 어렵게 만듭니다.
해결 방법
node_config.service_account에 노드 운영에 필요한 역할만 가진 전용 서비스 계정의 이메일을 지정하세요. 계정과 역할을 먼저 준비하고 변경 영향을 확인하세요. 애플리케이션의 Google Cloud 권한은 Workload Identity Federation for GKE로 별도 관리하세요.
예시
노드 서비스 계정 선택을 보여 주는 발췌입니다. node_service_account_email에는 미리 만든 계정의 이메일을 넣고 필요한 노드 역할을 별도로 부여하세요. 프로젝트와 Ansible 실행용 JSON 자격 증명 파일 경로도 입력해야 합니다.
변경 전
yaml
- name: create a cluster
google.cloud.gcp_container_cluster:
name: my-cluster
initial_node_count: 2
node_config:
machine_type: n1-standard-4
disk_size_gb: 500
location: us-central1-a
project: "{{ gcp_project }}"
auth_kind: serviceaccount
service_account_file: "{{ gcp_service_account_file }}"
state: present
노드 계정을 지정하지 않아 기본 서비스 계정을 사용합니다. 실제 위험은 그 계정에 부여된 역할에 따라 달라집니다.
변경 후
yaml
- name: create a cluster
google.cloud.gcp_container_cluster:
name: my-cluster
initial_node_count: 2
node_config:
machine_type: n1-standard-4
disk_size_gb: 500
service_account: "{{ node_service_account_email }}"
location: us-central1-a
project: "{{ gcp_project }}"
auth_kind: serviceaccount
service_account_file: "{{ gcp_service_account_file }}"
state: present
노드에 별도 계정을 지정합니다. 이름을 분리하는 것만으로 최소 권한이 보장되지는 않으므로 연결된 IAM 역할을 확인하세요.