GKE コントロールプレーンの認証設定の確認

GKE コントロールプレーンの認証方法と IAM、RBAC の権限を確認します。

説明

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 の権限は別途設定する必要があります。

参考資料