使用設定檔登入

透過 GKE Identity Service,您可以使用第三方身分識別提供者的使用者名稱和密碼,從指令列登入已設定的叢集。如果叢集管理員選擇分享登入設定檔,供您使用 gcloud CLI 進行驗證,請按照本頁的操作說明進行。如要進一步瞭解如何存取叢集,請參閱「選擇登入叢集的存取方法」。

登入工作流程

以下是 GKE Identity Service 的工作流程,可讓您使用登入設定檔登入已設定的叢集。確切流程取決於使用的身分識別提供者類型。

OIDC 工作流程

使用 OIDC 提供者時,叢集管理員會將 GKE Identity Service 註冊為身分識別提供者的用戶端應用程式,並設定每個叢集。如有需要,他們可以使用 Kubernetes 角色型存取權控管 (RBAC) 新增精細的存取權控管。

您可以透過下列方式登入叢集:

指令列存取權

  1. 驗證:執行 gcloud anthos auth login 指令,然後輸入 OIDC 登入憑證。這會從提供者擷取身分權杖。
  2. 更新 Kubeconfig:系統會自動將擷取的權杖新增至 kubeconfig 檔案。
  3. 存取叢集:使用 kubectl 與叢集互動。Kubernetes API 伺服器會使用 GKE Identity Service 驗證權杖,並授權存取權。

Google Cloud 控制台存取權

  1. 啟動登入程序:從 Google Cloud 控制台登入時,系統會將您重新導向至身分識別提供者的登入頁面。
  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

如果您或管理員選擇使用不同的檔案名稱或位置 (例如,管理員透過安全網址提供檔案),則可使用 --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] (選用) 指定自訂路徑或網址,指出驗證設定檔的儲存或代管位置。如果檔案位於預設位置,則可省略這個參數。 範例:--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 檔案現在應會包含 ID 權杖,kubectl 指令會使用該權杖向叢集上的 Kubernetes API 伺服器進行驗證。

  3. 執行其中一個 kubectl 指令,存取叢集中的資源,確認驗證是否成功。舉例來說,如果您有權存取叢集上的「節點」資源 (這項存取權由叢集管理員設定),應該就能執行下列指令並查看叢集的節點:

    kubectl get nodes --kubeconfig [CLUSTER_KUBECONFIG]

如需使用者存取權相關的疑難排解資訊,請參閱「排解使用者存取權問題」。

選擇驗證方式

如果叢集管理員為叢集設定了多個身分識別提供者 (例如 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 重新導向網址設定的通訊埠。您可以在驗證設定檔的 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