完全修飾ドメイン名(FQDN)を使用してログインする

GKE Identity Service を使用すると、サードパーティ ID プロバイダでのユーザー名とパスワードを使用して、コマンドラインから構成済みのクラスタにログインできます。クラスタ管理者が、ユーザーが完全修飾ドメイン名(FQDN)を使用して GKE Identity Service サーバーで直接認証できるようにしている場合は、このページで説明する手順に沿って操作してください。SAML プロバイダの場合、ログイン アクセスは、この認証方法でのみサポートされます。

この認証方法がサポートされるクラスタは、バージョン 1.29 以降の VMware およびベアメタル上のオンプレミス クラスタ(Google Distributed Cloud)のみです。他のクラスタタイプはサポートされません。

指定の FQDN でログインするために必要な gcloud CLI のバージョンは、477.0.0 以降です。

ログイン ワークフロー

ユーザーが FQDN アクセス アプローチを使用してログインする際のワークフロー ステップは次のとおりです。

  1. ログインの開始: ユーザーが gcloud anthos auth login --server APISERVER-URL コマンドを実行してログイン プロセスを開始します。
  2. ID プロバイダの選択: 構成済みの ID プロバイダのリストがユーザーに表示されます。ユーザーは、自分の認証情報が保存されているプロバイダを選択します。
  3. ID プロバイダによる認証: 認証プロセスは、選択した ID プロバイダのプロトコルに応じて異なります。

    • OIDC: ユーザーが OIDC プロバイダのログインページにリダイレクトされます。ログインに成功すると、プロバイダは GKE Identity Service にコードを返します。GKE Identity Service はこのコードを、バックチャネル通信を介してアクセス トークンと交換します。
    • SAML: ユーザーが SAML プロバイダのログインページにリダイレクトされます。ログインが成功すると、プロバイダはトークン(アサーション)を GKE Identity Service に直接送信して、追加のコールバックを回避します。
    • LDAP: GKE Identity Service はユーザーを外部プロバイダにリダイレクトする代わりに、ログインページを表示します。ユーザーがこのページで LDAP 認証情報を入力すると、その情報が LDAP サーバーで直接検証されます。
  4. トークンの検証と kubeconfig ファイルの生成: GKE Identity Service は受信したトークン(アサーション)を検証して、ユーザー用の新しいトークンを作成し、このトークンを含む kubeconfig ファイルを返します。

  5. クラスタへのアクセス: ユーザーは kubectl コマンドを使用してクラスタにアクセスできます。kubectl クライアントは、各リクエストで kubeconfig ファイルに含まれるトークンを自動的に送信します。

  6. トークンの検証と RBAC 認可: Kubernetes API サーバーがトークンを受信すると、GKE Identity Service はこのトークンを検証し、ユーザー クレーム(ユーザー名とグループ)を取得します。検証が成功すると、API サーバーはロールベース アクセス制御(RBAC)チェックを実行し、ユーザーにアクセスが許可されているリソースを特定します。

信頼できる SNI 証明書を使用してログインする

会社所有のデバイスにすでに存在する信頼できる SNI 証明書を活用することで、クラスタへのアクセスが簡素化されます。管理者は、クラスタの作成時にこの証明書を指定できます。クラスタが、クラスタレベルで信頼できる SNI 証明書を使用している場合は、このセクションに記載するコマンドと管理者から提供された FQDN を使用して、そのクラスタにログインし、アクセス トークンを受け取ります。認証が成功した後にトークンが保存される安全な kubeconfig ファイルを使用することもできます。

次のコマンドを実行して、サーバーに対する認証を行います。

gcloud anthos auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE

次のように置き換えます。

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

クラスタ CA が発行した証明書を使用してログインする

ユーザーがクラスタレベルで信頼できる SNI 証明書を使用しない場合、ID サービスで使用される証明書はクラスタの認証局(CA)によって発行されます。管理者は、この CA 証明書をユーザーに配布します。クラスタの CA 証明書を使用して次のコマンドを実行し、クラスタにログインします。

gcloud anthos auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --login-config-cert CLUSTER_CA_CERTIFICATE

クロスデバイス認証

クロスデバイス認証を使用すると、ブラウザがインストールされていないデバイスから Google Distributed Cloud(GDC)クラスタにログインできます。認証プロセスは、(ブラウザがインストールされていない)メインのデバイスで開始し、ブラウザがインストールされているセカンダリ デバイスで完了します。

クロスデバイス認証の設定は、次の手順で行います。

  1. メインのデバイスにログインする

    次のコマンドを実行して、プライマリ デバイスでサーバーに対する認証を行います。クラスタにアクセスする必要があるデバイスにブラウザがインストールされていないことを示すため、引数 --no-browser を指定します。

    gcloud anthos auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --no-browser

    GKE Identity Service は、2 台目のデバイスからログインするときに使用するコマンドを返します。コマンドの例を次に示します。

    You are authorizing gcloud CLI without access to a web browser. Please run the following command on a machine with a web browser and copy its output back here.
    
    gcloud auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --remote-bootstrap="URL_TO_COPY_ON_THE_SECOND_DEVICE"
    
    Enter the output of the above command:
    

    gcloud コマンドをコピーします。

  2. 2 台目のデバイスでクラスタにログインする

    2 台目のデバイスからログインする前に、ブラウザがインストールされ、Kubernetes API サーバーへのネットワーク接続があることを確認します。2 台目のデバイスで、前の手順でコピーしたコマンドを実行します。

    gcloud auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --remote-bootstrap="URL_TO_COPY_ON_THE_SECOND_DEVICE"
    

    このデバイスからログインしようとすると、警告メッセージが表示されます。ブラウザに表示される標準の認証プロセスに従います。認証が完了すると、ワンタイム コードが提供されます。そのコードをコピーします。

    WARNING: The following line enables access to your Cluster resources. ONLY COPY IT TO A MACHINE YOU TRUST AND RUN 'gcloud auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --no-browser' EARLY ON.
    
    Or_mHYQFm90efgJdwhajx0KeC_WXkuvBPuWv_83nFX9J_Eawm3tQcBpxBBWszj6Ix8dAWCgc1QjJBrlt67bzIYIBTexU7dc_ggtkMTNkG7wCIGYZ75zfg9P1gBshP33STe0ks-AoVonzk01YekMbyNugeYSO18CBwFhaDDSMABq4PI-clgbaSh8CPqrvDKRLenbvfD9BSK6SW945I0bOgPURxNzUX4sICWcvFozhQdLYICuwRM0AgarNFwoeh-0wbJGyRqUjq2NJbaYdf-VCaByiZaGPR2B1QVGXO7deKGtUnk1_tTFOnB6sJQvT6UJ8Ge5nkR38rqBeeGkYdlVIBTXShENG80An1Ve524xZupSzCHNSVTJqYg
    
  3. メインのデバイスでログインを完了する

    前の手順でコピーしたコードをメインデバイスのプロンプトに貼り付けます。

    Enter the code you received on the other device: Or_mHYQFm90efgJdwhajx0KeC_WXkuvBPuWv_83nFX9J_Eawm3tQcBpxBBWszj6Ix8dAWCgc1QjJBrlt67bzIYIBTexU7dc_ggtkMTNkG7wCIGYZ75zfg9P1gBshP33STe0ks-AoVonzk01YekMbyNugeYSO18CBwFhaDDSMABq4PI-clgbaSh8CPqrvDKRLenbvfD9BSK6SW945I0bOgPURxNzUX4sICWcvFozhQdLYICuwRM0AgarNFwoeh-0wbJGyRqUjq2NJbaYdf-VCaByiZaGPR2B1QVGXO7deKGtUnk1_tTFOnB6sJQvT6UJ8Ge5nkR38rqBeeGkYdlVIBTXShENG80An1Ve524xZupSzCHNSVTJqYg
    

    デバイスはこのコードを使用して、kubeconfig ファイルに保存される認証情報を生成します。このファイルにより、プライマリ デバイスのクラスタへのアクセスが可能になります。ログインすると、次のメッセージが表示されます。

     You are logged in!
     Context is stored under the name '{cluster-name}'