説明
GKE コントロールプレーンはワークロードと権限を管理するため、アクセス主体と権限を明確にする必要があります。master_auth の省略は認証の無効化を意味しません。このブロックのユーザー名とパスワードによる Basic 認証は、GKE 1.19 以降ではサポートされていません。
想定される影響
過剰な管理権限や認証情報の漏えいにより、ワークロードの変更やデータへのアクセスを許すおそれがあります。古いログイン方法に依存する管理処理が失敗する場合もあります。
対処方法
Google Cloud の OAuth トークンによる現在の認証方法を使用し、IAM と Kubernetes RBAC の権限を必要な操作に限定してください。古いユーザー名とパスワードによるログイン手順を削除し、承認された運用担当者がアクセスできることを確認してください。
例
クラスター設定の抜粋です。プロジェクトと、保護されたサービスアカウントの JSON ファイルのパスを指定してください。Ansible の実行用認証情報とクラスター運用担当者の権限は別々に管理します。
変更前
yaml
- name: GKE 클러스터 생성
google.cloud.gcp_container_cluster:
name: my-cluster1
initial_node_count: 2
node_config:
machine_type: n1-standard-4
location: us-central1-a
project: "{{ gcp_project }}"
auth_kind: serviceaccount
service_account_file: "{{ gcp_service_account_file }}"
state: present
master_auth がないだけで、未認証のアクセスが許可されるわけではありません。
変更後
yaml
- name: GKE 클러스터 생성
google.cloud.gcp_container_cluster:
name: my-cluster1
initial_node_count: 2
master_auth:
username: ""
password: ""
node_config:
machine_type: n1-standard-4
location: us-central1-a
project: "{{ gcp_project }}"
auth_kind: serviceaccount
service_account_file: "{{ gcp_service_account_file }}"
state: present
空の username と password は、レガシー Basic 認証情報を使用しない設定です。IAM と RBAC の権限は別途設定する必要があります。