使用設定檔登入
透過 GKE Identity Service,您可以使用第三方身分識別提供者的使用者名稱和密碼,從指令列登入已設定的叢集。如果叢集管理員選擇分享登入設定檔,供您使用 gcloud CLI 進行驗證,請按照本頁的操作說明進行。如要進一步瞭解如何存取叢集,請參閱「選擇登入叢集的存取方法」。
登入工作流程
以下是 GKE Identity Service 的工作流程,可讓您使用登入設定檔登入已設定的叢集。確切流程取決於使用的身分識別提供者類型。
OIDC 工作流程
使用 OIDC 提供者時,叢集管理員會將 GKE Identity Service 註冊為身分識別提供者的用戶端應用程式,並設定每個叢集。如有需要,他們可以使用 Kubernetes 角色型存取權控管 (RBAC) 新增精細的存取權控管。
您可以透過下列方式登入叢集:
指令列存取權
- 驗證:執行
gcloud anthos auth login
指令,然後輸入 OIDC 登入憑證。這會從提供者擷取身分權杖。 - 更新 Kubeconfig:系統會自動將擷取的權杖新增至 kubeconfig 檔案。
- 存取叢集:使用
kubectl
與叢集互動。Kubernetes API 伺服器會使用 GKE Identity Service 驗證權杖,並授權存取權。
Google Cloud 控制台存取權
- 啟動登入程序:從 Google Cloud 控制台登入時,系統會將您重新導向至身分識別提供者的登入頁面。
- 驗證:輸入憑證並成功登入。
- 存取叢集:返回 Google Cloud 控制台,即可查看及管理叢集資源。
LDAP 工作流程
使用 LDAP 供應商時,叢集管理員會為每個叢集設定 GKE Identity Service,包括 LDAP 用戶端憑證。叢集管理員可視需要使用 Kubernetes 角色式存取權控管 (RBAC) 新增精細的存取權控管機制。
指令列存取權
- 啟動登入程序:執行
gcloud anthos auth login
指令,然後輸入 LDAP 登入憑證。 - 產生權杖:GKE Identity Service 會查詢 LDAP 伺服器、擷取使用者屬性,並將這些屬性封裝成短期權杖 (STS)。系統不會在本機儲存 LDAP 憑證。
- 更新 Kubeconfig:系統會自動將 STS 權杖新增至
kubeconfig
檔案。 - 叢集存取權:使用
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
指令,向叢集進行驗證:
執行
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
使用提示選取驗證方式。詳情請參閱「選擇驗證方法」。
在開啟的瀏覽器同意畫面中輸入憑證。如果成功,您的
kubeconfig
檔案現在應會包含 ID 權杖,kubectl
指令會使用該權杖向叢集上的 Kubernetes API 伺服器進行驗證。執行其中一個
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