Workload Identity

GKE 適用的工作負載身分聯盟 (WIF) 是一種機制,可讓叢集的工作負載透過 Kubernetes 服務帳戶存取外部雲端資源。建議您使用 WIF,讓 GKE 連結叢集內執行的應用程式存取 Google Cloud 服務。註冊叢集時,GKE 連結的叢集 API 會建立 WIF 所需的所有基礎架構,並支援使用公開或私密 OIDC 簽發者的叢集。

所有會連回 Google Cloud的 GKE Enterprise 服務 (例如 Connect 和遙測代理程式),都會使用 Workload Identity Federation for GKE。

Kubernetes 服務帳戶和 GKE 適用的工作負載身分聯盟

Pod 執行時,會使用 Kubernetes 服務帳戶授權存取叢集內託管的資源。使用 WIF 時,Pod 可以使用相同的 Kubernetes 服務帳戶 (KSA) 取得短期權杖,存取叢集外部託管的資源。

WIF 需要叢集內的 OIDC 身分識別提供者與外部資源供應商 (例如 Google Cloud IAM) 建立信任關係。註冊連結的叢集時,註冊程序會將叢集的 OIDC 服務新增至繫結至 Google Cloud 專案的預設工作負載身分識別集區,自動建立這項信任關係。

這個 workload identity pool 是 Google 專案的信任身分提供者集區,名稱為 PROJECT_ID.svc.id.goog,其中 PROJECT_ID 是與所連結叢集相關聯的 Google 專案 ID。

您可以使用一般 Google Cloud IAM 政策,控管 Kubernetes 服務帳戶對 Google Cloud 服務的存取權。Kubernetes 服務帳戶主體是工作負載身分集區中 KSA 的代表。格式如下:

serviceAccount:WORKLOAD_IDENTITY_POOL_NAME[KSA_NAMESPACE/KSA_NAME]

如要將角色授予 Kubernetes 服務帳戶,請使用下列指令:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_ID.svc.id.goog[KSA_NAMESPACE/KSA_NAME]" \
  --role=IAM_ROLE

取代:

  • PROJECT_ID:您的 Google Cloud 專案 ID
  • KSA_NAMESPACE:這個服務帳戶所在的叢集命名空間
  • KSA_NAME:要授予權限的 Kubernetes 服務帳戶名稱
  • IAM_ROLE:要授予這個 KSA 的 Google Cloud 角色