構成ファイルを使用してログインする

GKE Identity Service を使用すると、サードパーティ ID プロバイダでのユーザー名とパスワードを使用して、コマンドラインから構成済みのクラスタにログインできます。クラスタ管理者が、gcloud CLI で認証する際に使用するログイン構成ファイルを共有する場合は、このページの手順に沿って操作します。クラスタへのアクセスの詳細については、クラスタにログインするためのアクセス方法を選択するをご覧ください。

ログイン ワークフロー

以下は、GKE Identity Service がログイン構成ファイルを使用して構成済みのクラスタにログインするために使用するワークフローです。具体的なフローについては、使用する ID プロバイダの種類によって異なります。

OIDC ワークフロー

OIDC プロバイダを使用する場合、クラスタ管理者は GKE Identity Service を ID プロバイダのクライアント アプリケーションとして登録し、各クラスタを設定します。必要に応じて、Kubernetes ロールベース アクセス制御(RBAC)を使用して、きめ細かいアクセス制御を追加できます。

クラスタにログインする方法は次のとおりです。

コマンドライン アクセス

  1. 認証: gcloud anthos auth login コマンドを実行し、OIDC ログイン認証情報を入力します。これにより、プロバイダから ID トークンを取得します。
  2. Kubeconfig の更新: 取得したトークンは kubeconfig ファイルに自動的に追加されます。
  3. クラスタにアクセスする: kubectl を使用してクラスタとやり取りします。Kubernetes API サーバーは、GKE Identity Service を使用してトークンを検証し、アクセスを認可します。

Google Cloud コンソールへのアクセス

  1. ログインの開始: Google Cloud コンソールからログインすると、ID プロバイダのログインページにリダイレクトされます。
  2. 認証: 認証情報を入力してログインします。
  3. クラスタにアクセスする: Google Cloud コンソールに移動して、クラスタ リソースを表示、管理します。

LDAP ワークフロー

LDAP プロバイダでは、クラスタ管理者がクラスタごとに GKE Identity Service を設定します。これには、LDAP クライアント認証情報も含まれます。クラスタ管理者は、必要に応じて Kubernetes ロールベース アクセス制御(RBAC)を使用して、詳細なアクセス制御を追加できます。

コマンドライン アクセス

  1. ログインの開始: gcloud anthos auth login コマンドを実行し、LDAP ログイン認証情報を入力します。
  2. トークンの生成: GKE Identity Service は LDAP サーバーにクエリを実行してユーザー属性を取得し、これらの属性を有効期間の短いトークン(STS)にパッケージ化します。LDAP 認証情報はローカルに保存されません。
  3. Kubeconfig の更新: STS トークンが kubeconfig ファイルに自動的に追加されます。
  4. クラスタへのアクセス: kubectl を使用してクラスタとやり取りします。Kubernetes API サーバーは、GKE Identity Service を使用してトークンを検証し、アクセスを認可します。 デフォルトでは、トークンは 1 時間後に期限切れになり、ユーザーは再度ログインする必要があります。

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

構成ファイルを取得する

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. ブラウザベースの同意画面で認証情報を入力します。成功すると、kubectl コマンドでクラスタの Kubernetes API サーバーでの認証に使用する ID トークンが kubeconfig ファイルに保存されます。

  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 でクラスタを認証するには、認証構成ファイルがリモートマシン上にある必要があります。また、ローカルマシンから OpenID プロバイダにアクセスできる必要があります。

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

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