使用完整網域名稱 (FQDN) 登入

透過 GKE Identity Service,您可以使用第三方身分識別提供者的使用者名稱和密碼,從指令列登入已設定的叢集。如果叢集管理員選擇讓您使用完整網域名稱 (FQDN) 直接在 GKE Identity Service 伺服器上進行驗證,請按照本頁的指示操作。如果是 SAML 供應商,則僅支援透過這種驗證方式登入。

只有 VMware 和 Bare Metal 上的地端部署叢集 (Google Distributed Cloud) 支援這種驗證方法,且版本須為 1.29 以上。系統不支援其他叢集類型。

如要使用提供的 FQDN 登入,gcloud CLI 版本必須至少為 477.0.0。

登入工作流程

使用者透過 FQDN 存取方法登入時,工作流程步驟如下:

  1. 啟動登入程序:使用者執行 gcloud anthos auth login --server APISERVER-URL 指令,啟動登入程序。
  2. 選取識別資訊提供者:系統會向使用者提供已設定的識別資訊提供者清單。使用者選取憑證的儲存位置。
  3. 使用身分識別提供者進行驗證:驗證程序會因您選擇的身分識別提供者通訊協定而異:

    • OIDC:系統會將使用者重新導向至 OIDC 提供者登入頁面。登入成功後,供應商會將代碼傳回 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 憑證,身分識別服務使用的憑證是由叢集的憑證授權單位 (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 傳回的指令。以下是指令範例:

    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. 在第二部裝置上登入叢集

    從第二部裝置登入前,請確認您已安裝瀏覽器,且網路連線可連上 Kubernetes API 伺服器。在第二部裝置上執行上一個步驟複製的指令。

    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}'