GKE のレガシー Basic 認証設定の確認

GKE 構成に残るレガシー Basic 認証設定とログイン手順を整理します。

説明

ユーザー名とパスワードを使う GKE Basic 認証は、GKE 1.19 以降ではサポートされていません。古いクラスターの固定認証情報や、それを使う自動化が残っている場合は、現在の認証方法に移行する必要があります。

想定される影響

共有認証情報が漏えいすると、その権限でクラスターにアクセスされるおそれがあります。古い認証への依存は利用者の追跡や認証情報の交換を難しくし、管理処理の失敗にもつながります。

対処方法

master_auth.username と master_auth.password のレガシー値を削除してください。Google Cloud の OAuth トークンによるアクセスに移行し、IAM と Kubernetes RBAC の権限を最小限にしてください。自動化や運用手順からも古い認証情報を削除してください。

例

過去の Basic 認証フィールドを比較する抜粋であり、現在の GKE で Basic 認証を有効にする方法ではありません。プロジェクトと、保護されたサービスアカウントの JSON ファイルのパスを環境に合わせて指定してください。

変更前

yaml
- name: create a cluster4
  google.cloud.gcp_container_cluster:
    name: my-cluster4
    initial_node_count: 2
    master_auth:
      username: cluster_admin
      password: ""
    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

- name: create a cluster5
  google.cloud.gcp_container_cluster:
    name: my-cluster5
    initial_node_count: 2
    master_auth:
      username: ""
      password: my-secret-password
    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

最初のタスクはユーザー名を指定しています。2 番目のようにユーザー名なしでパスワードだけを指定する構成は無効です。どちらも現在の GKE で推奨されるログイン方法ではありません。

変更後

yaml
- name: create a cluster
  google.cloud.gcp_container_cluster:
    name: my-cluster
    initial_node_count: 2
    master_auth:
      username: ""
      password: ""
    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

両方を空にすると、レガシー Basic 認証情報を使用しません。この設定は現在の認証を無効にしたり、IAM 権限を付与したりするものではありません。

参考資料