排解 Google Distributed Cloud 驗證問題

您可以檢查 gcloud anthos auth 安裝、權杖、RBAC 權限、網路連線和 GKE 身分認證服務 設定,診斷並解決 Google Distributed Cloud 的驗證和授權失敗問題。這些檢查可協助您找出 OpenID Connect (OIDC) 和輕量型目錄存取通訊協定 (LDAP) 錯誤,並還原使用者對叢集的存取權。

排解驗證問題前,請先確認您已設定外部識別資訊提供者,例如 Google OIDC、Microsoft AD FS、Microsoft Entra ID、Okta 或 LDAP 供應商。如要檢查詳細的要求記錄,並測試供應商是否可連線,請參閱 GKE 身分認證服務身分提供者疑難排解指南。

一般疑難排解

下列疑難排解提示可協助您解決 Google Distributed Cloud 的一般驗證和授權問題。如果這些問題不適用,或您遇到 OIDC 或 LDAP 相關問題,請繼續參閱 GKE 身分認證服務疑難排解一節。

將 gcloud anthos auth 保持在最新狀態

確認 gcloud anthos auth 安裝元件為最新版本,即可避免許多常見問題。

您必須驗證兩個部分。gcloud anthos auth 指令在 Google Cloud CLI 核心元件中具有邏輯,並有獨立封裝的 anthos-auth 元件。

  1. 如要更新 Google Cloud CLI,請按照下列步驟操作:

    gcloud components update
    
  2. 如要更新 anthos-auth 元件,請按照下列步驟操作:

    gcloud components install anthos-auth
    

供應商設定無效

如果識別資訊提供者設定無效,點選「LOGIN」(登入)LOGIN 後,系統會顯示識別資訊提供者的錯誤畫面。請按照供應商專屬的操作說明,正確設定供應商或叢集。

設定無效

如果 Google Cloud 控制台無法從叢集讀取 OIDC 設定,系統會停用「LOGIN」(登入)LOGIN 按鈕。如要排解叢集 OIDC 設定問題,請參閱本文的「排解 OIDC 問題」一節。

權限無效

如果您完成驗證流程,但仍未看到叢集的詳細資料,請確認您已將正確的 RBAC 權限授予與 OIDC 搭配使用的帳戶。這個帳戶可能與您用來存取 Google Cloud 控制台的帳戶不同。

缺少更新權杖

授權伺服器提示使用者提供同意聲明,但未提供必要的驗證參數時,就會發生下列問題。

Error: missing 'RefreshToken' field in 'OAuth2Token' in credentials struct

如要解決這個問題,請在 ClientConfig 資源中,將 prompt=consent 新增至 authentication.oidc.extraParams 欄位。然後重新產生用戶端驗證檔案。

更新權杖已過期

如果 kubeconfig 檔案中的更新權杖已過期,會發生下列問題:

Unable to connect to the server: Get {DISCOVERY_ENDPOINT}: x509:
    certificate signed by unknown authority

如要解決這個問題,請再次執行 gcloud anthos auth login 指令。

gcloud anthos auth login 失敗,並顯示 proxyconnect tcp

如果 https_proxy 或 HTTPS_PROXY 環境變數設定有誤,就會發生這個問題。如果環境變數中指定了 https://,且 Proxy 設定為使用 SOCK5 等其他通訊協定處理 HTTPS 連線,GoLang HTTP 用戶端程式庫可能會失敗。

系統可能會傳回下列錯誤訊息範例:

proxyconnect tcp: tls: first record does not look like a TLS handshake

如要解決這個問題,請修改 https_proxy 和 HTTPS_PROXY 環境變數,省略 https:// prefix。在 Windows 中,修改系統環境變數。例如,將 https_proxy 環境變數的值從 https://webproxy.example.com:8000 變更為 webproxy.example.com:8000。

使用 gcloud anthos auth login 產生的 kubeconfig 時,無法存取叢集

如果 Kubernetes API 伺服器無法授權使用者,就會發生這個問題。如果缺少適當的 RBAC 或 RBAC 有誤,或是叢集的 OIDC 設定有誤,就可能發生這種情況。系統可能會顯示以下錯誤範例:

Unauthorized

如要解決這個問題,請完成下列步驟:

  1. 在 gcloud anthos auth login 產生的 kubeconfig 檔案中,複製 id-token 的值。

    kind: Config
    ...
    users:
    - name: ...
      user:
        auth-provider:
          config:
            id-token: xxxxyyyy
    
  2. 安裝 jwt-cli 並執行:

    jwt ID_TOKEN
    
  3. 驗證 OIDC 設定。

    ClientConfig 資源包含 group 和 username 欄位。這些欄位用於設定 Kubernetes API 伺服器中的 --oidc-group-claim 和 --oidc-username-claim 旗標。API 伺服器收到權杖後,會將權杖轉送至 GKE 身分認證服務,該服務會將擷取的 group-claim 和 username-claim 傳回 API 伺服器。API 伺服器會使用回應,驗證對應的群組或使用者是否具備正確權限。

    確認 ClientConfig 資源中為 group 和 user 設定的宣告存在於 ID 權杖中。

  4. 檢查已套用的 RBAC。

    確認 RBAC 具備正確權限,可供 username-claim 指定的使用者或上一步列出的 group-claim 群組之一使用。RBAC 中的使用者或群組名稱應加上 ClientConfig 資源中指定的 usernameprefix 或 groupprefix 前置字元。

    如果 usernameprefix 為空白,且 username 的值不是 email,則前置字串預設為 issuerurl#。如要停用使用者名稱前置字串,請將 usernameprefix 設為 -。

    如要進一步瞭解使用者和群組前置字元,請參閱「使用 OIDC 進行驗證」。

    ClientConfig 資源:

    oidc:
      ...
      username: "unique_name"
      usernameprefix: "-"
      group: "group"
      groupprefix: "oidc:"
    

    ID 權杖:

    {
      ...
      "email": "cluster-developer@example.com",
      "unique_name": "EXAMPLE\cluster-developer",
      "group": [
        "Domain Users",
        "EXAMPLE\developers"
      ],
    ...
    }
    

    下列 RBAC 繫結會將 pod-reader 叢集角色授予這個群組和使用者。請注意,名稱欄位中只有一個斜線,而非雙斜線:

    群組 ClusterRoleBinding:

    apiVersion:
    kind: ClusterRoleBinding
    metadata:
      name: example-binding
    subjects:
    - kind: Group
      name: "oidc:EXAMPLE\developers"
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: ClusterRole
      name: pod-reader
      apiGroup: rbac.authorization.k8s.io
    

    使用者 ClusterRoleBinding:

    apiVersion:
    kind: ClusterRoleBinding
    metadata:
      name: example-binding
    subjects:
    - kind: User
      name: "EXAMPLE\cluster-developer"
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: ClusterRole
      name: pod-reader
      apiGroup: rbac.authorization.k8s.io
    
  5. 檢查 Kubernetes API 伺服器記錄。

    如果 Kubernetes API 伺服器中設定的 OIDC 外掛程式未正確啟動,API 伺服器會在收到 ID 權杖時傳回 Unauthorized 錯誤。如要查看 API 伺服器中的 OIDC 外掛程式是否有任何問題,請執行:

    kubectl logs statefulset/kube-apiserver -n USER_CLUSTER_NAME \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    更改下列內容:

    • USER_CLUSTER_NAME:要查看記錄檔的使用者叢集名稱。
    • ADMIN_CLUSTER_KUBECONFIG:管理員叢集 kubeconfig 檔案。

驗證叢集設定時發生錯誤

嘗試執行 bmctl 指令時,可能會遇到下列錯誤:

Error validating cluster config: 3 errors occurred:
        * GKEConnect check failed: Get https://gkehub.googleapis.com/v1beta1/projects/project/locations/global/memberships/admin: oauth2: cannot fetch token: 400 Bad Request
Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
        * ClusterOperations check failed: Post https://cloudresourcemanager.googleapis.com/v1/projects/project:testIamPermissions?alt=json&prettyPrint=false: oauth2: cannot fetch token: 400 Bad Request
Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
        * GCR pull permission for bucket: artifacts.anthos-baremetal-release.appspot.com failed: Get https://storage.googleapis.com/storage/v1/b/artifacts.anthos-baremetal-release.appspot.com/iam/testPermissions?alt=json&permissions=storage.objects.get&permissions=storage.objects.list&prettyPrint=false: oauth2: cannot fetch token: 400 Bad Request
Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}

這項錯誤可能是因為您使用的服務帳戶金鑰已過期。如要產生新的服務帳戶金鑰,請按照「建立及刪除服務帳戶金鑰」中的操作說明進行。

OIDC 疑難排解

如果 Google Distributed Cloud 的 OIDC 驗證功能無法運作,通常是因為 ClientConfig 資源中的 OIDC 規格設定不當。ClientConfig 資源提供查看記錄和 OIDC 規格的操作說明,協助您找出 OIDC 問題的原因。

請參閱 GKE 身分認證服務身分提供者疑難排解指南,瞭解如何啟用及查看身分記錄,以及測試連線能力。確認 GKE 身分認證服務正常運作或找出問題後,請查看下列 OIDC 疑難排解資訊。

檢查叢集中的 OIDC 規格

叢集的 OIDC 資訊是在 kube-public 命名空間的 ClientConfig 資源中指定。

  1. 使用 kubectl get 列印使用者叢集的 OIDC 資源:

    kubectl --kubeconfig KUBECONFIG -n kube-public get \
      clientconfig.authentication.gke.io default -o yaml
    

    將 KUBECONFIG 替換為使用者叢集 kubeconfig 檔案的路徑。

  2. 請檢查欄位值,確認規格已正確設定 OIDC 供應商。

  3. 如果您在規格中發現設定問題,請重新設定 OIDC。

  4. 如果無法自行診斷及解決問題,請與 Google Cloud 支援團隊聯絡。

    Google Cloud 支援團隊需要 GKE 身分認證服務記錄和 OIDC 規格,才能診斷及解決 OIDC 問題。

確認已啟用 OIDC 驗證

測試 OIDC 驗證前,請先確認叢集已啟用 OIDC 驗證。

  1. 檢查 GKE 身分認證服務記錄:

    kubectl logs -l k8s-app=ais -n anthos-identity-service
    

    以下輸出範例顯示 OIDC 驗證已正確啟用:

    ...
    I1011 22:14:21.684580      33 plugin_list.h:139] OIDC_AUTHENTICATION[0] started.
    ...
    

    如果 OIDC 驗證未正確啟用,系統會顯示類似下列範例的錯誤:

    Failed to start the OIDC_AUTHENTICATION[0] authentication method with error:
    

    查看回報的特定錯誤,並嘗試修正。

測試 OIDC 驗證

如要使用 OIDC 功能,請使用已啟用 UI 和瀏覽器的工作站。您無法透過文字型 SSH 工作階段執行這些步驟。如要測試 OIDC 是否在叢集中正常運作,請完成下列步驟:

  1. 下載 Google Cloud CLI。
  2. 如要產生登入設定檔,請執行下列 gcloud anthos create-login-config 指令:

    gcloud anthos create-login-config \
      --output user-login-config.yaml \
      --kubeconfig KUBECONFIG
    

    將 KUBECONFIG 替換為使用者叢集 kubeconfig 檔案的路徑。

  3. 如要驗證使用者,請執行下列指令:

    gcloud anthos auth login --cluster CLUSTER_NAME \
      --login-config user-login-config.yaml \
      --kubeconfig AUTH_KUBECONFIG
    

    更改下列內容:

    • CLUSTER_NAME 替換為要連線的使用者叢集名稱。
    • AUTH_KUBECONFIG 替換為要建立的新 kubeconfig 檔案,其中包含存取叢集所需的憑證。詳情請參閱「向叢集進行驗證」。
  4. 本機工作站的預設網路瀏覽器應會開啟登入同意聲明頁面。請在這個登入提示中,提供使用者的有效驗證資訊。

    成功完成上一個登入步驟後,系統會在您目前的目錄中產生 kubeconfig 檔案。

  5. 如要測試包含憑證的新 kubeconfig 檔案,請列出使用者叢集中的 Pod:

    kubectl get pods --kubeconfig AUTH_KUBECONFIG
    

    將 AUTH_KUBECONFIG 替換為上一個步驟中產生的新 kubeconfig 檔案路徑。

    系統可能會傳回下列範例訊息,顯示您可以成功驗證,但沒有指派給帳戶的角色式存取控管 (RBAC):

    Error from server (Forbidden): pods is forbidden: User "XXXX" cannot list resource "pods" in API group "" at the cluster scope
    

查看 OIDC 驗證記錄

如果無法透過 OIDC 進行驗證,GKE 身分認證服務記錄會提供最相關且實用的資訊,協助您偵錯。

  1. 使用 kubectl logs 列印 GKE 身分認證服務記錄:

    kubectl --kubeconfig KUBECONFIG \
      -n anthos-identity-service logs \
      deployment/ais --all-containers=true
    

    將 KUBECONFIG 替換為使用者叢集 kubeconfig 檔案的路徑。

  2. 查看記錄中的錯誤,協助診斷 OIDC 問題。

    舉例來說,ClientConfig 資源的 issuerURL 欄位可能有錯字,例如 htps://accounts.google.com (https 缺少 t)。GKE 身分認證服務記錄會包含類似下列範例的項目:

    OIDC (htps://accounts.google.com) - Unable to fetch JWKs needed to validate OIDC ID token.
    
  3. 如果記錄顯示設定有問題,請重新設定 OIDC 並修正問題。

  4. 如果無法自行診斷及解決問題,請與 Google Cloud 支援團隊聯絡。

    Google Cloud 支援團隊需要 GKE 身分認證服務記錄和 OIDC 規格,才能診斷及解決 OIDC 問題。

常見的 OIDC 問題

如果 OIDC 驗證發生問題,請查看下列常見問題。按照指引解決問題。

沒有適用於「ais」服務的端點

儲存 ClientConfig 資源時,系統會傳回下列錯誤訊息:

  Error from server (InternalError): Internal error occurred: failed calling webhook "clientconfigs.validation.com":
  failed to call webhook: Post "https://ais.anthos-identity-service.svc:15000/admission?timeout=10s":
  no endpoints available for service "ais"

這項錯誤是由 GKE 身分認證服務端點健康狀態不佳所造成。GKE 身分認證服務 Pod 無法提供驗證用 Webhook。

  1. 如要確認 GKE 身分認證服務 Pod 是否健康狀態不佳,請執行下列指令:

    kubectl get pods -n anthos-identity-service \
      --kubeconfig KUBECONFIG
    

    將 KUBECONFIG 替換為使用者叢集 kubeconfig 檔案的路徑。

    下列範例輸出內容表示 GKE 身分認證服務 Pod 發生異常終止:

    NAME                  READY  STATUS            RESTARTS  AGE
    ais-5949d879cd-flv9w  0/1    ImagePullBackOff  0         7m14s
    
  2. 如要瞭解 Pod 發生問題的原因,請查看 Pod 事件:

    kubectl describe pod -l k8s-app=ais \
      -n anthos-identity-service \
      --kubeconfig KUBECONFIG
    

    將 KUBECONFIG 替換為使用者叢集 kubeconfig 檔案的路徑。

    下列範例輸出內容回報了提取映像檔時的權限錯誤:

    Events:
      Type     Reason     Age                     From               Message
      ----     ------     ----                    ----               -------
      Normal   Scheduled  10m                     default-scheduler  Successfully assigned anthos-identity-service/ais-5949d879cd-flv9w to pool-1-76bbbb8798-dknz5
      Normal   Pulling    8m23s (x4 over 10m)     kubelet            Pulling image "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00"
      Warning  Failed     8m21s (x4 over 10m)     kubelet            Failed to pull image "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00": rpc error: code = Unknown desc = failed to pull and unpack image "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00": failed to resolve reference "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00": pulling from host gcr.io failed with status code [manifests hybrid_identity_charon_20220808_2319_RC00]: 401 Unauthorized
      Warning  Failed     8m21s (x4 over 10m)     kubelet            Error: ErrImagePull
      Warning  Failed     8m10s (x6 over 9m59s)   kubelet            Error: ImagePullBackOff
      Normal   BackOff    4m49s (x21 over 9m59s)  kubelet            Back-off pulling image "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00"
    
  3. 如果 Pod 事件回報問題,請繼續在受影響的區域進行疑難排解。如需其他協助,請與 Google Cloud 支援團隊聯絡。

無法讀取伺服器的回應位元組

GKE 身分認證服務記錄中可能會顯示下列錯誤:

  E0516 07:24:38.314681      65 oidc_client.cc:207] Failed fetching the Discovery URI
  "https://oidc.idp.cloud.example.com/auth/idp/k8sIdp/.well-known/openid-configuration" with error:
  Failed reading response bytes from server.

  E0516 08:24:38.446504      65 oidc_client.cc:223] Failed to fetch the JWKs URI
  "https://oidc.idp.cloud.example.com/auth/idp/k8sIdp/certs" with error:
  Failed reading response bytes from server.

這些網路錯誤可能會以下列其中一種方式顯示在記錄中:

  • 記錄中偶爾出現:這類錯誤可能不是主要問題,而是間歇性網路問題。

    GKE 身分認證服務 OIDC 外掛程式具有 daemon 程序,每 5 秒會定期同步處理 OIDC 導覽網址。如果網路連線不穩定,這項輸出要求可能會失敗。偶爾失敗不會影響 OIDC 驗證。現有的快取資料可以重複使用。

    如果記錄中出現備用錯誤,請繼續執行其他疑難排解步驟。

  • 持續出現在記錄中,或 GKE 身分認證服務從未成功連至已知端點:這些持續發生的問題,表示 GKE 身分認證服務與 OIDC 身分提供者之間有連線問題。

    下列疑難排解步驟可協助診斷這些連線問題:

    1. 確認防火牆未封鎖 GKE 身分認證服務的傳出要求。
    2. 確認識別資訊提供者伺服器運作正常。
    3. 確認 ClientConfig 資源中的 OIDC 核發者網址設定正確。
    4. 如果您在 ClientConfig 資源中啟用了 Proxy 欄位,請查看輸出 Proxy 伺服器的狀態或記錄。
    5. 測試 GKE 身分認證服務 Pod 與 OIDC 識別資訊提供者伺服器之間的連線能力。

必須登入伺服器 (未經授權)

嘗試使用 OIDC 驗證登入時,可能會收到下列錯誤訊息:

  You must be logged in to the server (Unauthorized)

這項錯誤是一般 Kubernetes 驗證問題,不會提供任何其他資訊。不過,這項錯誤確實表示設定有問題。

如要判斷問題,請參閱前幾節,檢查叢集中的 OIDC 規格並設定 ClientConfig 資源。

無法提出 Webhook 驗證器要求

在 GKE 身分認證服務記錄中,您可能會看到下列錯誤:

  E0810 09:58:02.820573       1 webhook.go:127] Failed to make webhook authenticator request:
  error trying to reach service: net/http: TLS handshake timeout

這項錯誤表示 API 伺服器無法與 GKE 身分認證服務 Pod 建立連線。

  1. 如要確認是否能從外部連上 GKE 身分認證服務端點,請執行下列 curl 指令:

    curl -k  -s -o /dev/null -w "%{http_code}" -X POST \
      https://APISERVER_HOST/api/v1/namespaces/anthos-identity-service/services/https:ais:https/proxy/authenticate -d '{}'
    

    將 APISERVER_HOST 替換為 API 伺服器的位址。

    預期的回應是 HTTP 400 狀態碼。如果要求逾時,請重新啟動 GKE 身分認證服務 Pod。如果錯誤持續發生,表示 GKE 身分認證服務 HTTP 伺服器無法啟動。如需其他協助,請與 Google Cloud 支援團隊聯絡。

找不到登入網址

如果 Google Cloud 控制台無法連線至識別資訊提供者,就會發生下列問題。嘗試登入時,系統會重新導向至顯示 URL not found 錯誤的頁面。

如要解決這個問題,請參閱下列疑難排解步驟。每完成一個步驟,請嘗試再次登入:

  1. 如果無法透過公開網際網路連上識別資訊提供者,請啟用 OIDC HTTP Proxy,以便使用 Google Cloud 控制台登入。編輯 ClientConfig 自訂資源,並將 useHTTPProxy 設為 true:

    kubectl edit clientconfig default -n kube-public --kubeconfig USER_CLUSTER_KUBECONFIG
    

    將 USER_CLUSTER_KUBECONFIG 替換為使用者叢集 kubeconfig 檔案的路徑。

  2. 如果已啟用 HTTP Proxy,但仍發生這項錯誤,可能是 Proxy 啟動時發生問題。查看 Proxy 的記錄:

    kubectl logs deployment/clientconfig-operator -n kube-system --kubeconfig USER_CLUSTER_KUBECONFIG
    

    將 USER_CLUSTER_KUBECONFIG 替換為使用者叢集 kubeconfig 檔案的路徑。

    即使您的識別資訊提供者具有知名 CA,您仍須在 ClientConfig 自訂資源中為 oidc.caPath 提供值,HTTP Proxy 才能成功啟動。

  3. 如果授權伺服器提示您同意,而您尚未加入 extraparam prompt=consent 參數,請編輯 ClientConfig 自訂資源,並將 prompt=consent 新增至 extraparams 參數:

    kubectl edit clientconfig default -n kube-public --kubeconfig USER_CLUSTER_KUBECONFIG
    

    將 USER_CLUSTER_KUBECONFIG 替換為使用者叢集 kubeconfig 檔案的路徑。

  4. 如果變更儲存空間服務的配置設定,可能需要明確登出現有工作階段。在 Google Cloud 控制台中,前往叢集詳細資料頁面,然後選取「Log out」(登出)。

疑難排解 LDAP

如果 LDAP 驗證發生問題,請務必按照下列其中一份適當的設定文件設定環境:

此外,您也必須填入 LDAP 服務帳戶密鑰,並設定 ClientConfig 資源來啟用 LDAP 驗證機制。

請參閱 GKE 身分認證服務身分提供者疑難排解指南,瞭解如何啟用及查看身分記錄,以及測試連線能力。確認 GKE 身分認證服務運作正常或找出問題後,請查看下列 LDAP 疑難排解資訊。

確認已啟用 LDAP 驗證

測試 LDAP 驗證前,請先確認叢集已啟用 LDAP 驗證。

  1. 檢查 GKE 身分認證服務記錄:

    kubectl logs -l k8s-app=ais -n anthos-identity-service
    

    以下輸出範例顯示 LDAP 驗證已正確啟用:

    ...
    I1012 00:14:11.282107      34 plugin_list.h:139] LDAP[0] started.
    ...
    

    如果未正確啟用 LDAP 驗證,系統會顯示類似下列範例的錯誤:

    Failed to start the LDAP_AUTHENTICATION[0] authentication method with error:
    

    查看回報的特定錯誤,並嘗試修正。

測試 LDAP 驗證

如要使用 LDAP 功能,請使用已啟用 UI 和瀏覽器的工作站。您無法透過文字型 SSH 工作階段執行這些步驟。如要測試 LDAP 驗證是否在叢集中正常運作,請完成下列步驟:

  1. 下載 Google Cloud CLI。
  2. 如要產生登入設定檔,請執行下列 gcloud anthos create-login-config 指令:

    gcloud anthos create-login-config \
      --output user-login-config.yaml \
      --kubeconfig KUBECONFIG
    

    將 KUBECONFIG 替換為使用者叢集 kubeconfig 檔案的路徑。

  3. 如要驗證使用者,請執行下列指令:

    gcloud anthos auth login --cluster CLUSTER_NAME \
      --login-config user-login-config.yaml \
      --kubeconfig AUTH_KUBECONFIG
    

    更改下列內容:

    • CLUSTER_NAME 替換為要連線的使用者叢集名稱。
    • AUTH_KUBECONFIG 替換為要建立的新 kubeconfig 檔案,其中包含存取叢集的憑證。詳情請參閱「向叢集進行驗證」。
  4. 本機工作站的預設網路瀏覽器應會開啟登入同意聲明頁面。請在這個登入提示中,提供使用者的有效驗證資訊。

    成功完成上一個登入步驟後,系統會在您目前的目錄中產生 kubeconfig 檔案。

  5. 如要測試包含憑證的新 kubeconfig 檔案,請列出使用者叢集中的 Pod:

    kubectl get pods --kubeconfig AUTH_KUBECONFIG
    

    將 AUTH_KUBECONFIG 替換為上一個步驟產生的使用者叢集 kubeconfig 路徑。

    Error from server (Forbidden): pods is forbidden: User "XXXX" cannot list resource "pods" in API group "" at the cluster scope
    

常見 LDAP 問題

如果 LDAP 驗證發生問題,請查看下列常見問題。按照指引解決問題。

使用者的 CN 含有半形逗號,因此無法驗證

使用 LDAP 時,如果使用者的 CN 包含半形逗號 (例如 CN="a,b"),可能會發生無法驗證的問題。如果啟用 GKE 身分認證服務的偵錯記錄檔,系統會回報下列錯誤訊息:

  I0207 20:41:32.670377 30 authentication_plugin.cc:977] Unable to query groups from the LDAP server directory.example.com:636, using the LDAP service account
  'CN=svc.anthos_dev,OU=ServiceAccount,DC=directory,DC=example,DC=com'.
  Encountered the following error: Empty entries.

這是因為 GKE 身分認證服務 LDAP 外掛程式會對逗號進行雙重逸出。這個問題只會發生在 Google Distributed Cloud 1.13 以下版本。

如要修正這個問題,請完成下列任一步驟:

  1. 將叢集升級至 Google Distributed Cloud 1.13 以上版本。
  2. 請選擇其他 identifierAttribute (例如 sAMAccountName),而非使用 CN。
  3. 請移除 LDAP 目錄中 CN 內的逗號。

Google Cloud CLI 1.4.2 驗證失敗

使用 Google Cloud CLI anthos-auth 1.4.2 時,執行 gcloud anthos auth login 指令可能會看到下列錯誤訊息:

  Error: LDAP login failed: could not obtain an STS token: Post "https://127.0.0.1:15001/sts/v1beta/token":
  failed to obtain an endpoint for deployment anthos-identity-service/ais: Unauthorized
  ERROR: Configuring Anthos authentication failed

在 GKE 身分認證服務記錄中,您也會看到下列錯誤:

  I0728 12:43:01.980012      26 authentication_plugin.cc:79] Stopping STS   authentication, unable to decrypt the STS token:
  Decryption failed, no keys in the current key set could decrypt the payload.

如要解決這個問題,請完成下列步驟:

  1. 確認您是否使用 Google Cloud CLI anthos-auth 1.4.2 版:

    gcloud anthos auth version
    

    以下輸出範例顯示版本為 1.4.2:

    Current Version: v1.4.2
    
  2. 如果您執行的是 Google Cloud CLI anthos-auth 1.4.2 版,請升級至 1.4.3 以上版本。

後續步驟

如需其他協助,請與 Cloud Customer Care 團隊聯絡。您也可以參閱「取得支援」,進一步瞭解支援資源,包括:

  • 建立客服案件的需求條件。
  • 工具:協助您疑難排解,例如您的環境設定、記錄和指標。
  • 支援的元件。