本文說明如何在負載平衡器的後端服務上設定代管工作負載身分。指派受管理的身分後,負載平衡器及其後端即可使用後端 mTLS 相互驗證。
如要使用受管理的工作負載身分設定後端 mTLS,您必須已設定工作負載身分集區。
如果沒有已設定的工作負載身分集區,您需要設定工作負載身分集區,然後將受管理的工作負載身分附加至負載平衡器的後端服務。
設定 workload identity pool。
- 設定憑證授權單位服務憑證授權單位 (CA) 集區,為代管工作負載身分核發 X.509 憑證。
- 建立工作負載身分集區,並設定命名空間、受管理的身分、驗證政策、內嵌憑證核發設定資源,以及內嵌信任設定資源,即可設定信任網域。
- 授權受管理的工作負載身分,向 CA 集區要求憑證。
將代管型 Workload Identity 附加至負載平衡器的後端服務。
本文中的範例會逐步說明如何設定新的 workload identity pool,然後將代管 Workload Identity 附加至負載平衡器的後端服務。
如果您已有現有的工作負載身分集區,可以採用下列方法:
您可以為負載平衡器的後端服務資源新增認證政策,加入工作負載身分集區。
將代管型 Workload Identity 附加至負載平衡器的後端服務。
事前準備
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
-
建立專案:如要建立專案,您需要「專案建立者」角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 Google Cloud 專案:
gcloud projects create PROJECT_ID
將
PROJECT_ID替換為您要建立的 Google Cloud 專案名稱。 -
選取您建立的 Google Cloud 專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID替換為 Google Cloud 專案名稱。
詳閱這份文件,瞭解如何使用受管理的工作負載身分,進行後端 mTLS。
瞭解如何使用憑證授權單位服務核發憑證。
啟用 IAM、憑證授權單位服務、Compute Engine、Certificate Manager 和 Network Security API:
啟用 API 時所需的角色
如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。gcloud services enable iam.googleapis.com
privateca.googleapis.com compute.googleapis.com certificatemanager.googleapis.com networksecurity.googleapis.com 將 Google Cloud CLI 設為使用已加入帳單和配額許可清單的專案。
gcloud config set billing/quota_project PROJECT_ID
將
PROJECT_ID替換為您的Google Cloud 專案名稱。為後端建立受管理身分。詳情請參閱「受管理的工作負載身分總覽」。
必要的角色
如要取得建立受管理 Workload Identity,以及佈建受管理 Workload Identity 憑證所需的權限,請要求系統管理員在專案中授予您下列 IAM 角色:
-
如要建立及設定受管理的工作負載身分,請按照下列步驟操作:
- 身分與存取權管理 Workload Identity 集區管理員 (
roles/iam.workloadIdentityPoolAdmin) - 服務帳戶管理員 (
roles/iam.serviceAccountAdmin)
- 身分與存取權管理 Workload Identity 集區管理員 (
-
如要建立及設定 CA 集區:CA 服務管理員 (
roles/privateca.admin) -
如要建立負載平衡器資源 (例如
TargetHTTPSProxy): Compute 負載平衡器管理員 (roles/compute.loadBalancerAdmin) -
如要使用 Certificate Manager 資源:
Certificate Manager 擁有者 (
roles/certificatemanager.owner) -
如要建立安全性與網路元件,請按照下列步驟操作:
- Compute 網路管理員 (
roles/compute.networkAdmin) - Compute 安全管理員 (
roles/compute.securityAdmin)
- Compute 網路管理員 (
-
如要建立專案 (選用):
專案建立者 (
roles/resourcemanager.projectCreator)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
設定 CA 服務,為受管理的工作負載身分核發憑證
您可以使用 CA 集區設定根 CA。CA 集區會向代管工作負載身分核發 X.509 憑證。
建立根 CA 集區
使用 gcloud privateca pools create 指令,在 Enterprise 層級中建立根 CA 集區。
這個層級適用於長期、低用量的憑證核發作業。
gcloud privateca pools create ROOT_CA_POOL_ID \
--location=REGION \
--project=PROJECT_ID \
--tier=enterprise
更改下列內容:
ROOT_CA_POOL_ID:根 CA 集區的專屬 IDREGION:根 CA 集區所在的區域PROJECT_ID:專案 ID
如要進一步瞭解 CA 集區,請參閱「建立 CA 集區」。
建立根 CA
使用 gcloud privateca roots create 指令在根 CA 集區中建立根 CA。
如要建立根 CA,請執行下列指令:
gcloud privateca roots create ROOT_CA_ID \
--pool=ROOT_CA_POOL_ID \
--subject="CN=ROOT_CA_CN, O=ROOT_CA_ORGANIZATION" \
--key-algorithm="KEY_ALGORITHM" \
--location=REGION \
--project=PROJECT_ID \
--auto-enable
更改下列內容:
ROOT_CA_ID:根 CA 的專屬名稱。CA 名稱最多可有 64 個字元,且只能包含大小寫英數字元、底線或連字號。CA 名稱在區域內不得重複。ROOT_CA_POOL_ID:根 CA 集區的 ID。ROOT_CA_CN:根 CA 的一般名稱。ROOT_CA_ORGANIZATION:根 CA 的機構。KEY_ALGORITHM:用於建立 Cloud KMS 金鑰的演算法。這個標記是選用的,如未加入此標記,金鑰演算法預設為rsa-pkcs1-4096-sha256。REGION:根 CA 集區所在的區域。PROJECT_ID:專案 ID。
如要進一步瞭解根 CA,請參閱「建立根 CA」。
設定 workload identity pool
使用代管工作負載身分時,「 Google Cloud 」可以自動佈建及管理憑證授權單位服務的 X.509 憑證。工作負載身分是在 workload identity pool 中定義,並整理到稱為「命名空間」的管理邊界。
建立 workload identity pool
您必須在 TRUST_DOMAIN 模式下建立集區,才能建立受管理的工作負載身分。如要為受管理的工作負載身分建立 workload identity pool,請使用 gcloud iam workload-identity-pools create 指令。
gcloud iam workload-identity-pools create WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--mode="TRUST_DOMAIN"
將 WORKLOAD_IDENTITY_POOL_ID 替換為集區的專屬 ID。ID 長度必須介於 4 至 32 個字元之間,只能包含小寫英數字元和連字號,且開頭和結尾必須為英數字元。建立 Workload Identity 集區後,就無法變更其 ID。
如要確認工作負載身分集區是否以 TRUST_DOMAIN 模式建立,請使用 gcloud iam workload-identity-pools describe 指令。
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global"
輸出結果會與下列內容相似:
mode: TRUST_DOMAIN name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID state: ACTIVE
這項輸出內容包含下列值:
PROJECT_NUMBER:您Google Cloud 專案的專案編號WORKLOAD_IDENTITY_POOL_ID:Workload Identity Pool ID
建立命名空間
您可以使用 gcloud iam workload-identity-pools namespaces create 指令在 workload identity pool 中建立命名空間。
gcloud iam workload-identity-pools namespaces create NAMESPACE_ID \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
更改下列內容:
NAMESPACE_ID:命名空間的專屬 ID。ID 長度必須介於 2 至 63 個字元之間,只能包含小寫英數字元和破折號,且開頭和結尾須為英數字元。建立命名空間後,您就無法變更其 ID。WORKLOAD_IDENTITY_POOL_ID:您先前建立的 Workload Identity Pool ID。
建立受管理的工作負載身分
您可以使用 gcloud iam workload-identity-pools managed-identities create 指令,在 workload identity pool 命名空間中建立受管理的工作負載身分。
gcloud iam workload-identity-pools managed-identities create MANAGED_IDENTITY_ID \
--namespace="NAMESPACE_ID" \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
更改下列內容:
MANAGED_IDENTITY_ID:受管理身分識別的專屬 ID。ID 長度必須介於 2 至 63 個字元之間,只能使用小寫英數字元和破折號,且開頭和結尾須為英數字元。代管 Workload Identity 建立後,就無法變更其 ID。NAMESPACE_ID:您先前建立的命名空間 ID。WORKLOAD_IDENTITY_POOL_ID:您先前建立的 Workload Identity Pool ID。
受管理的工作負載身分 ID 是 SPIFFE ID,格式如下:
spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
建立認證政策
在本範例中,認證政策包含一項認證規則,可驗證後端服務是否屬於特定專案。如果通過認證政策驗證,IAM 會向憑證授權單位服務要求受管理身分的 X.509 憑證。
如要建立驗證政策,請執行下列指令來新增驗證規則。
gcloud iam workload-identity-pools managed-identities add-attestation-rule MANAGED_IDENTITY_ID \
--namespace=NAMESPACE_ID \
--workload-identity-pool=WORKLOAD_IDENTITY_POOL_ID \
--google-cloud-resource='//compute.googleapis.com/projects/PROJECT_NUMBER/type/BackendService/*' \
--location=global
更改下列內容:
MANAGED_IDENTITY_ID:代管身分的專屬 ID。ID 長度必須介於 2 至 63 個字元之間,只能使用小寫英數字元和破折號,且開頭和結尾須為英數字元。代管 Workload Identity 建立後,就無法變更其 ID。NAMESPACE_ID:您先前建立的命名空間 ID。WORKLOAD_IDENTITY_POOL_ID:您先前建立的 Workload Identity Pool ID。PROJECT_NUMBER: Google Cloud 專案的專案編號。
建立內嵌憑證核發設定
如要將 CA 繫結至 workload identity pool,該 pool 必須具有內嵌憑證核發設定。
如要設定內嵌憑證核發設定,請建立 JSON 格式的設定檔 (cic.json)。
cat << EOF > cic.json
{
"inlineCertificateIssuanceConfig": {
"caPools": {
"REGION": "projects/PROJECT_NUMBER/locations/REGION/caPools/ROOT_CA_POOL_ID",
},
"lifetime": "CERTIFICATE_LIFETIME",
"rotationWindowPercentage": ROTATION_WINDOW_PERCENTAGE,
"keyAlgorithm": "ALGORITHM"
}
}
EOF
更改下列內容:
REGION:CA 所在的區域。PROJECT_NUMBER:專案編號。如要從PROJECT_ID變數指定的專案取得專案編號,請執行下列指令:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
ROOT_CA_POOL_ID:根 CA 集區的 ID。CERTIFICATE_LIFETIME:CA 集區核發的工作負載憑證生命週期 (以秒為單位),例如:86400 秒 (24 小時)。CERTIFICATE_LIFETIME必須是介於 24 小時至 30 天之間的值。如未指定CERTIFICATE_LIFETIME,憑證生命週期預設為 24 小時。CERTIFICATE_LIFETIME為選填欄位。ROTATION_WINDOW_PERCENTAGE:憑證效期達到這個百分比時,就會觸發更新。ROTATION_WINDOW_PERCENTAGE的值必須介於 50 至 80 之間。預設值為 50。ROTATION_WINDOW_PERCENTAGE為選填欄位。ALGORITHM:用來產生私密金鑰的加密演算法。ALGORITHM的有效值為ECDSA_P256(預設值)、ECDSA_P384、RSA_2048、RSA_3072和RSA_4096。ALGORITHM為選用項目。
建立內嵌憑證核發設定檔後,您需要使用 CA 的憑證核發設定更新 workload identity pool。
建立內嵌信任設定 (選用)
信任網域中的所有工作負載都會收到憑證和信任錨點,預設可在信任網域中進行驗證。如要讓不同信任網域中的工作負載相互驗證,您必須在工作負載身分集區中明確宣告信任關係。方法是建立內嵌信任設定, 識別並接受來自其他信任網域的憑證。
內嵌信任設定檔包含一組信任錨點,受管理的工作負載身分會使用這些錨點驗證對等互連憑證。信任設定檔會將 SPIFFE 信任網域對應至 CA 憑證。
如要建立內嵌信任設定,請按照下列步驟操作:
下載信任網域的憑證。
gcloud privateca pools get-ca-certs ROOT_CA_POOL_ID \ --output-file=CERTIFICATE_PATH \ --location=REGION更改下列內容:
ROOT_CA_POOL_ID:根 CA 集區的 IDCERTIFICATE_PATH:PEM 編碼憑證的輸出路徑REGION:根 CA 集區的區域
建立 JSON 格式的設定檔 (
tc.json),其中包含您的內嵌信任設定,以及您在上一個步驟下載的 PEM 格式憑證。cat << EOF > tc.json { "inlineTrustConfig": { "additionalTrustBundles": { "TRUST_DOMAIN_NAME1": { "trustAnchors": [ { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----" }, { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----" } ] }, "TRUST_DOMAIN_NAME2": { "trustAnchors": [ { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL3\n-----END CERTIFICATE-----" }, { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL4\n-----END CERTIFICATE-----" } ] } } } } EOF更改下列內容:
TRUST_DOMAIN_NAME:信任網域可以是任何信任網域 (例如「example.com」),包括另一個 (甚至是同一個) Workload Identity Pool 信任網域。工作負載身分集區信任網域的信任網域名稱格式如下:
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog
在格式中,請替換下列項目:
WORKLOAD_IDENTITY_POOL_ID:Workload Identity Pool 的 IDPROJECT_NUMBER:包含 Workload Identity Pool 的專案專案編號
CERTIFICATE_MATERIAL:PEM 格式的 CA 憑證,信任網域中的憑證是由該憑證核發。您可以使用下列指令,將 PEM 格式的憑證檔案編碼為單行字串:cat trust-anchor.pem | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g'
建立內嵌信任設定後,您需要更新工作負載身分集區,加入信任設定。
更新 workload identity pool
如要將 CA 繫結至 workload identity pool,您需要使用 --inline-certificate-issuance-config-file 標記,以 CA 的憑證核發設定更新 workload identity pool。如果您已建立內嵌信任設定,請使用 --inline-trust-config-file 旗標,透過信任設定更新 Workload Identity 集區。
gcloud iam workload-identity-pools update WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--inline-certificate-issuance-config-file=CIC_JSON_FILE_PATH \
--inline-trust-config-file=TC_JSON_FILE_PATH \
--project=PROJECT_ID
更改下列內容:
WORKLOAD_IDENTITY_POOL_ID:Workload Identity Pool ID。CIC_JSON_FILE_PATH:您先前建立的內嵌憑證核發設定,其 JSON 格式設定檔 (cic.json) 的路徑。TC_JSON_FILE_PATH:您先前建立的內嵌信任設定,其 JSON 格式設定檔 (tc.json) 的路徑。如果工作負載會跨不同信任網域進行驗證,您必須指定這個檔案。否則可以省略--inline-trust-config。
確認工作負載身分集區已更新
如要確認 workload identity pool 已更新憑證核發設定和信任設定,請執行下列指令:
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--project=PROJECT_ID
更改下列內容:
WORKLOAD_IDENTITY_POOL_ID:Workload Identity Pool ID。PROJECT_ID:專案 ID
輸出結果會與下列內容相似:
inlineCertificateIssuanceConfig:
caPools:
REGION: projects/PROJECT_NUMBER/locations/REGION1/caPools/ROOT_CA_POOL_ID
keyAlgorithm: ALGORITHM
lifetime: CERTIFICATE_LIFETIME
rotationWindowPercentage: ROTATION_WINDOW_PERCENTAGE
inlineTrustConfig:
additionalTrustBundles:
TRUST_DOMAIN_NAME1:
trustAnchors:
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL1
-----END CERTIFICATE-----
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL2
-----END CERTIFICATE-----
TRUST_DOMAIN_NAME2:
trustAnchors:
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL3
-----END CERTIFICATE-----
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL4
-----END CERTIFICATE-----
mode: TRUST_DOMAIN
name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID
state: ACTIVE
這項輸出內容包含下列值:
PROJECT_NUMBER:專案編號REGION:根 CA 集區所在的區域ROOT_CA_POOL_ID:根 CA 集區的 IDALGORITHM:用來產生私密金鑰的加密演算法CERTIFICATE_LIFETIME:CA 集區核發的工作負載憑證生命週期 (以秒為單位)ROTATION_WINDOW_PERCENTAGE:憑證效期達到這個百分比時,就會觸發更新。TRUST_DOMAIN_NAME:信任網域可以是任何信任網域 (例如「example.com」),包括另一個 (甚至是同一個) Workload Identity Pool 信任網域。CERTIFICATE_MATERIAL:PEM 格式的 CA 憑證,信任網域中核發憑證時會信任該憑證WORKLOAD_IDENTITY_POOL_ID:Workload Identity Pool ID
如果輸出內容中沒有 inlineCertificateIssuanceConfig 或 inlineTrustConfig,請確認您已正確設定 gcloud CLI,以便使用正確的專案進行帳單和配額作業。您可能需要更新至新版 gcloud CLI。
授權受管理的工作負載身分,從 CA 集區要求憑證
將 CA 繫結至工作負載身分集區後,您必須授權受管理的工作負載身分,才能向 CA 集區要求憑證。
將 CA 服務工作負載憑證要求者角色 (
roles/privateca.workloadCertificateRequester) 授予信任網域。這個角色會授權信任網域,要求 CA 服務憑證鏈結提供憑證。gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \ --location=REGION \ --role=roles/privateca.workloadCertificateRequester \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \ --project=PROJECT_ID更改下列內容:
ROOT_CA_POOL_ID:根 CA 集區的 IDREGION:根 CA 集區的區域PROJECT_NUMBER:專案編號如要從
PROJECT_ID取得PROJECT_NUMBER,請執行下列指令:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
WORKLOAD_IDENTITY_POOL_ID:Workload Identity Pool IDPROJECT_ID:專案 ID
將CA 服務集區讀取者角色 (
roles/privateca.poolReader) 授予信任網域。這個角色會授權信任網域,從 CA 的憑證鏈取得已簽署的 X.509 憑證。gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \ --location=REGION \ --role=roles/privateca.poolReader \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \ --project=PROJECT_ID更改下列內容:
ROOT_CA_POOL_ID:根 CA 集區的 IDREGION:根 CA 集區的區域PROJECT_NUMBER:專案編號WORKLOAD_IDENTITY_POOL_ID:Workload Identity Pool IDPROJECT_ID:專案 ID
建立負載平衡器,並將受管理身分指派給後端服務
只有在建立後端服務時,才能指派受管理的身分。
本節中的步驟僅適用於將受管理的身分指派給負載平衡器的後端服務。這是負載平衡器的後端設定。
如要設定全域外部應用程式負載平衡器,請按照「設定具備 VM 執行個體群組後端的全域外部應用程式負載平衡器」一文中的步驟操作。在設定負載平衡器的後端服務時,您還需要執行下列操作:
控制台
前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
在「後端設定」部分,新增相關詳細資料來建立後端服務。
展開「進階設定」部分。
在「Backend authentication」(後端驗證) 部分,選取「Managed Identity」(受管理的身分) 選項。
如要將受管理的身分指派給後端服務,請在「受管理的身分」欄位中,輸入先前建立的受管理工作負載身分。
點選「建立」。
請按照「設定負載平衡器」一文中的步驟,完成負載平衡器設定。
gcloud
如要將受管理的身分指派給後端服務,請在使用
gcloud beta compute backend-services create指令時,加入--identity旗標。gcloud beta compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --health-checks=HEALTH_CHECK_NAME \ --identity='//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID' \ --global更改下列內容:
BACKEND_SERVICE_NAME:後端服務的名稱HEALTH_CHECK_NAME:健康狀態檢查的名稱WORKLOAD_IDENTITY_POOL_ID:Workload Identity Pool IDPROJECT_NUMBER:專案編號NAMESPACE_ID:命名空間 IDMANAGED_IDENTITY_ID:受管理的身分 ID
自動建立的資源
在負載平衡器的後端服務上設定代管身分後,代管 Workload Identity 會自動建立下列資源:
- 後端驗證設定:附加至負載平衡器的後端服務
- Certificate Manager 受管理的身分憑證:附加至後端驗證設定
- Certificate Manager 信任設定:附加至後端驗證設定
下列各節與驗證設定相關,可檢查自動建立的資源是否已設定完成。
驗證您的設定
驗證設定,檢查是否已設定自動建立的資源。
自動建立的資源會加上 mi 前置字元,表示資源是由受管理的工作負載身分建立。
確認後端驗證設定和受管理的身分已建立
如要驗證後端驗證設定和受管理身分是否已建立,請使用 gcloud beta compute backend-services describe 指令說明後端服務。
gcloud beta compute backend-services describe BACKEND_SERVICE_NAME --global
輸出結果會與下列內容相似:
affinityCookieTtlSec: 0 connectionDraining: drainingTimeoutSec: 0 creationTimestamp: '2025-11-06T02:15:43.680-08:00' description: '' enableCDN: false fingerprint: lTZwas8aylg= healthChecks: - https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME id: '719352032' kind: compute#backendService loadBalancingScheme: EXTERNAL_MANAGED name: BACKEND_SERVICE_NAME port: 80 portName: PORT_NAME protocol: HTTPS selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME sessionAffinity: NONE timeoutSec: 30 tlsSettings: authenticationConfig: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/global/backendAuthenticationConfigs/mi-bac-423b651f-d549-4a9f-a4f2-g2bcaa7108bd identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
這項輸出內容包含下列值:
PROJECT_ID:專案 IDHEALTH_CHECK_NAME:健康狀態檢查的名稱BACKEND_SERVICE_NAME:後端服務的名稱PORT_NAME:通訊埠名稱REGION:根 CA 集區所在的區域WORKLOAD_IDENTITY_POOL_ID:Workload Identity Pool IDPROJECT_NUMBER:專案編號NAMESPACE_ID:命名空間 IDMANAGED_IDENTITY_ID:受管理的身分 ID
系統會自動建立後端驗證設定,並附加至 backendService.tlsSettings.authenticationConfig 欄位。以 mi 前置字元開頭的後端驗證設定,在下節中稱為 MI_BACKEND_AUTHENTICATION_CONFIG_ID。
代管型 Workload Identity 也會附加至 backendService.tlsSettings.identity 欄位。格式如下:
//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
驗證是否已建立 Certificate Manager 代管身分憑證和 Certificate Manager 信任設定
如要確認 Certificate Manager 管理的身分憑證和 Certificate Manager 信任設定已附加至後端驗證設定資源,請使用 gcloud network-security backend-authentication-configs describe 指令。
gcloud network-security backend-authentication-configs describe MI_BACKEND_AUTHENTICATION_CONFIG_ID \
--location=global
輸出結果會與下列內容相似:
clientCertificate: projects/PROJECT_NUMBER/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d createTime: '2025-11-06T10:15:56.237734973Z' etag: xwyxl1VYVoh4QIwf3nhKhAVXgcuOqoN7xdqAiS8Esvs name: projects//locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd trustConfig: projects/PROJECT_NUMBER/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742 updateTime: '2025-11-06T10:16:01.964275141Z'
clientCertificate 和 trustConfig 會由受管理的工作負載身分自動建立,並附加至後端驗證設定資源。
以 mi 前置字元開頭的 clientCertificate 在下節中稱為 MI_CLIENT_CERTIFICATE_ID。
以 mi 前置字元開頭的 trustConfig 在下節中稱為 MI_TRUST_CONFIG_ID。
確認 Certificate Manager 憑證是代管身分憑證
如要查看 Certificate Manager 管理的憑證詳細資料,請使用 gcloud certificate-manager certificates describe 指令。
gcloud certificate-manager certificates describe MI_CLIENT_CERTIFICATE_ID
輸出結果會與下列內容相似:
createTime: '2025-11-06T10:15:46.187892797Z' expireTime: '2025-11-07T22:55:47Z' extendedKeyUsage: clientAuth: true managedIdentity: identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID state: ACTIVE name: projects/PROJECT_ID/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE----- scope: CLIENT_AUTH updateTime: '2025-11-06T10:15:49.427339950Z' usedBy: - name: //networksecurity.googleapis.com/projects/PROJECT_NUMBER/locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd
這項輸出內容包含下列值:
WORKLOAD_IDENTITY_POOL_ID:Workload Identity Pool IDPROJECT_NUMBER:專案編號NAMESPACE_ID:命名空間 IDMANAGED_IDENTITY_ID:受管理的身分 IDCERTIFICATE_MATERIAL:PEM 編碼格式的 X.509-SVID
Certificate Manager 代管的身分憑證具有 managedIdentity 屬性,可將其識別為代管的身分憑證。Certificate Manager 管理的身分憑證資源會以 PEM 編碼格式儲存 X.509-SVID。
Certificate Manager 代管的身分識別憑證範圍為 CLIENT_AUTH,表示這項憑證在後端 mTLS 中做為用戶端憑證使用。
確認 SPIFFE ID 是 X.509-SVID 中 SAN 的一部分
X.509-SVID 包含在 SAN 欄位中編碼為 URI 的 SPIFFE ID。 這個 SPIFFE ID 對應於 workload identity pool 中的受管理身分。
如要以方便閱讀的格式列印憑證,請執行下列指令:
echo -e \ "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----" | openssl x509 -text -noout
輸出內容會類似以下內容 (已省略部分內容):
Certificate:
Data:
Version: 3 (0x2)
Signature Algorithm: ecdsa-with-SHA256
Issuer: O = example.com, CN = Example CA
Validity
Not Before: Nov 6 10:15:48 2025 GMT
Not After : Nov 7 10:15:47 2025 GMT
Subject:
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
X509v3 extensions:
X509v3 Subject Alternative Name: critical
URI:spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
這項輸出內容包含下列值:
WORKLOAD_IDENTITY_POOL_ID:Workload Identity Pool IDPROJECT_NUMBER:專案編號NAMESPACE_ID:命名空間 IDMANAGED_IDENTITY_ID:受管理的身分 ID
確認 Certificate Manager 信任設定包含 spiffeTrustStores 欄位
Certificate Manager 信任設定包含名為 spiffeTrustStores 的欄位。spiffeTrustStores 欄位包含與 workload identity pool 信任網域相關聯的信任組合 (以輸出內容中的 表示),以及 workload identity pool 內嵌信任設定中 WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.googadditionalTrustBundles 欄位指定的任何其他信任組合。
如要查看 Certificate Manager 信任設定的詳細資料,請使用 gcloud certificate-manager trust-configs describe 指令。
gcloud certificate-manager trust-configs describe MI_TRUST_CONFIG_ID
將 MI_TRUST_CONFIG_ID 替換為代管身分自動建立的信任設定。
在下列輸出範例中,主機 example.com 是信任關係延伸的額外信任網域。
createTime: '2025-11-06T10:15:50.048030758Z'
etag: kDoKfm5W6Il2HPvduKZWpuYpyrKrNVq4jqMEICE-6rQ
name: projects/PROJECT_ID/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742
spiffeTrustStores:
example.com:
trustAnchors:
- pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog:
trustAnchors:
- pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----
updateTime: '2025-11-07T08:25:15.760754841Z'
這項輸出內容包含下列值:
PROJECT_ID:專案 IDCERTIFICATE_MATERIAL:PEM 格式的 CA 憑證,信任網域中核發憑證時會信任該憑證WORKLOAD_IDENTITY_POOL_ID:Workload Identity Pool IDPROJECT_NUMBER:專案編號MANAGED_IDENTITY_ID:受管理的身分 ID
如要進一步瞭解 Certificate Manager 信任設定,請參閱「Certificate Manager 信任設定」。