GKE Identity Service を使用したクラスタへのアクセス

GKE Identity Service は、組織の既存の ID プロバイダを使用して複数の GKE Enterprise 環境のクラスタを認証できる認証サービスであり、同じ ID を使用して Google Cloud、オンプレミス、その他のパブリック クラウド上のクラスタにログインできます。このドキュメントは、このサービスを使用してクラスタにアクセスする必要がある開発者やその他の GKE クラスタ ユーザーを対象としています。代わりに Connect Gateway で Google Cloud ID を使用してクラスタにログインする必要がある場合は、Connect Gateway の使用をご覧ください。

組織またはチームに対して GKE Identity Service を設定する必要があるクラスタまたはプラットフォーム管理者は、サポートされるクラスタ環境、その他の前提条件、関連する設定ガイドについて、GKE Identity Service の概要をご覧ください。

コマンドラインからクラスタへのログイン

コマンドラインからクラスタに対する認証を行うには、クラスタ管理者から提供された特別なログイン構成ファイルを使用して、gcloud 認証コマンドを実行する必要があります。

始める前に

  1. 次のコマンドライン ツールがインストールされていることを確認します。

    • 最新バージョンの Google Cloud CLI、Google Cloud とやり取りするためのコマンドライン ツールである gcloud が含まれています。Google Cloud CLI をインストールする必要がある場合は、インストール ガイドをご覧ください。
    • Kubernetes クラスタに対してコマンドを実行するために使用する kubectlkubectl をインストールする必要がある場合は、インストール ガイドをご覧ください。
  2. 以下のコマンドを実行して、anthos-auth コンポーネントをインストールまたは更新します。

    gcloud components update
    gcloud components install anthos-auth
  3. 次のコマンドを実行して、ツールが正常にインストールされたことを確認します。

    gcloud anthos auth version

    バージョンが返されたら、インストールは正常に完了しています。

構成ファイルを取得する

gcloud CLI は、認証構成ファイルのファイル名とローカルマシン上の場所を想定しています。管理者があなたのマシンにファイルをコピーすることもできます。ファイルを手動で提供され、マシンに保存する必要がある場合は、デフォルト値を使用して gcloud 認証コマンドを簡素化します。

認証構成ファイルをデフォルトの場所にコピーするには、次のコマンドを使用します。

Linux

mkdir -p  $HOME/.config/google/anthos/
cp [AUTH_CONFIG_FILE] $HOME/.config/google/anthos/kubectl-anthos-config.yaml

ここで、[AUTH_CONFIG_FILE] は認証構成ファイルの名前です。例: kubectl-anthos-config.yaml

macOS

mkdir -p  $HOME/Library/Preferences/google/anthos/
cp [AUTH_CONFIG_FILE] $HOME/Library/Preferences/google/anthos/kubectl-anthos-config.yaml

ここで、[AUTH_CONFIG_FILE] は認証構成ファイルの名前です。例: kubectl-anthos-config.yaml

Windows

md "%APPDATA%\google\anthos"
copy [AUTH_CONFIG_FILE] "%APPDATA%\google\anthos\kubectl-anthos-config.yaml"

ここで、[AUTH_CONFIG_FILE] は認証構成ファイルの名前です。例: kubectl-anthos-config.yaml

別のファイル名や場所を使用する場合(たとえば、管理者が安全な URL でファイルを提供する場合など)、認証リクエストごとに --login-config フラグを使用して、これを指定できます。詳細については次のセクションをご覧ください。

クラスタに対して認証する

gcloud コマンドを実行してクラスタで認証します。

  1. gcloud anthos auth login コマンドを実行して認証フローを開始します。

    gcloud anthos auth login \
     --cluster [CLUSTER_NAME] \
     --user [USER_NAME] \
     --login-config [AUTH_CONFIG_FILE_PATH] \
     --login-config-cert [CA_CERT_PEM_FILE] \
     --kubeconfig [CLUSTER_KUBECONFIG]

    ここで

    • [CLUSTER_NAME](省略可)には、クラスタの名前を指定します。このフラグを省略すると、認証構成ファイルで指定されたクラスタから選択するよう求められます。

    • [USER_NAME](省略可)には、kubeconfig ファイルに格納されている認証情報のユーザー名を指定します。デフォルト値は [CLUSTER_NAME]-anthos-default-user です。

    • [AUTH_CONFIG_FILE_PATH](省略可)には、認証構成ファイルが保存またはホストされるカスタムパスまたは URL を指定します。ファイルがデフォルトの場所にある場合、このパラメータは省略できます。例: --login-config /path/to/custom/authentication-config.yaml

    • [CA_CERT_PEM_FILE](省略可)には、CA からの PEM 証明書ファイルのパスを指定します。認証構成ファイルが安全にホストされている場合は、HTTPS 接続を使用してファイルにアクセスできます。例: --login-config-cert my-cert.pem

    • [CLUSTER_KUBECONFIG](省略可)には、クラスタの kubeconfig ファイルへのカスタムパスを指定します。OpenID プロバイダから返される OIDC ID トークンは、kubeconfig ファイルに格納されます。

      このフラグは、kubeconfig ファイルがデフォルト以外の場所にある場合に使用します。このフラグを省略すると、認証トークンがデフォルトの場所にある kubeconfig ファイルに追加されます。例: --kubeconfig /path/to/custom.kubeconfig

    :

    • 特定のクラスタに対して認証します。

      gcloud anthos auth login --cluster my-production-cluster
      
    • プロンプトを使用して、認証するクラスタを選択します。

      gcloud anthos auth login
      

      結果:

      Please use the --cluster flag to specify a cluster from the list below:
      Source: $HOME/.config/google/anthos/kubectl-anthos-config.yaml
      1. Cluster: projects/1000000000000/locations/global/memberships/gke-gcp-cluster ServerIP: https://104.198.180.50:440
      2. Cluster: projects/1000000000000/locations/global/memberships/gke-baremetal-cluster ServerIP: https://104.198.180.51:440
      3. Cluster: projects/1000000000000/locations/global/memberships/gke-onprem-cluster ServerIP: https://104.198.180.52:440
      4. Cluster: projects/1000000000000/locations/global/memberships/gke-aws-cluster ServerIP: https://104.198.180.53:440
      
    • ホストされている認証構成ファイルを使用します。

      gcloud anthos auth login \
       --cluster my-production-cluster \
       --login-config HTTPS://my-secure-server/kubectl-anthos-config.yaml \
       --login-config-cert my-cert.pem
      
    • プロンプトを使用して認証オプションを選択します。サンプルを含む詳細については、後述の認証オプションを選択するをご覧ください。

  2. 開いたブラウザベースの同意画面で認証情報を入力します。成功すると、kubeconfig ファイルに、kubectl コマンドでクラスタの Kubernetes API サーバーでの認証に使用する ID トークンが含まれるようになります。

  3. いずれかの kubectl コマンドを実行して、クラスタのリソースにアクセスし、認証が成功したことを確認します。たとえば、クラスタの「nodes」リソースにアクセスできる場合(このアクセス権はクラスタ管理者が構成しています)、次のコマンドを実行して、クラスタのノードを表示できます。

    kubectl get nodes --kubeconfig [CLUSTER_KUBECONFIG]

ユーザー アクセスに関する問題のトラブルシューティングについては、ユーザー アクセスの問題のトラブルシューティングをご覧ください。

認証方法を選択する

クラスタ管理者がクラスタ用に複数の ID プロバイダ(OIDC プロバイダや LDAP サーバーなど)を構成し、クラスタのデフォルト プロバイダを構成していない場合は、ログイン時に次の例に示すように、認証オプションを選択するよう求めるプロンプトが表示されます。

gcloud anthos auth login

Please select your preferred authentication option for cluster [gke-onprem-ldap]
[1] LDAP Server
[2] OIDC
[3] cancel

Please enter your numeric choice:

1

Setting Preferred Authentication option to [LDAP Server]

数値を入力してから、上記のクラスタに対して認証するの説明に従ってログインを続けます。

選択した認証オプションは、クラスタ管理者がこのクラスタのデフォルト プロバイダを変更するか、ユーザーが自分で変更するまで保持されます。おすすめの認証オプションを変更するには、--set-preferred-authentication フラグを使用します。

gcloud anthos auth login --set-preferred-authentication

次の例のような結果が表示されます。任意の新しい認証オプションを選択できます。

Your current authentication method is [1] AD Server. Please select your preferred authentication option for cluster [gke-onprem-ldap]
[1] LDAP Server
[2] OIDC
[3] cancel

Please enter your numeric choice:

2

Setting Preferred Authentication option to [OIDC]

SSH を使用したリモートマシンからの認証

リモートマシンに SSH 接続し、リモートマシンからクラスタに対して認証を行うものとします。これを実行するには、認証構成ファイルがリモートマシン上にあり、ローカルマシンから Open ID プロバイダにアクセスできる必要があります。

ローカルマシンで、次のコマンドを実行します。

ssh [USER_NAME]@[REMOTE_MACHINE] -L [LOCAL_PORT]:localhost:[REMOTE_PORT]

ここで

  • [USER_NAME][REMOTE_MACHINE] は、SSH でのログインに使用される標準の値です。

  • [LOCAL_PORT] は、リモートマシンへのアクセスに使用するローカルマシン上の任意のオープンポートです。

  • [REMOTE_PORT] は、OIDC リダイレクト URL 用に構成したポートです。これは、認証構成ファイルの kubectlRedirectURI フィールドで確認できます。

SSH シェルで次のコマンドを実行して、認証を開始します。

gcloud anthos auth login --login-config [AUTH_CONFIG_FILE]

ここで、[AUTH_CONFIG_FILE] はリモートマシン上の認証構成ファイルのパスです。

ローカルマシンのブラウザで、http://localhost:[LOCAL_PORT]/login にアクセスして OIDC ログインフローを完了します。

これで、リモートマシンの kubeconfig ファイルに、クラスタにアクセスするために必要なトークンが付与されました。

SSH シェルで、クラスタへのアクセスできることを確認します。

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get nodes

Google Cloud コンソールからクラスタにログインする(OIDC プロバイダのみ)

Google Cloud コンソールからクラスタを操作するの手順に従います。