為代管型 Cloud Service Mesh 設定憑證授權單位服務
本指南說明如何為受管理 Cloud Service Mesh 設定憑證授權單位服務。如要瞭解叢內 Cloud Service Mesh,請參閱「安裝預設功能和憑證授權單位 (CA) 服務」。
除了 Cloud Service Mesh 憑證授權單位,您也可以設定 Cloud Service Mesh 使用憑證授權單位服務。本指南提供整合 CA 服務的機會,建議用於下列用途:
- 如果需要不同的憑證授權單位,在不同叢集上簽署工作負載憑證。
- 如需在 Cloud HSM 中備份簽署金鑰。
- 如果您所處的產業受到嚴格監管,且必須遵守法規。
- 如要將 Cloud Service Mesh CA 鏈結至自訂企業根憑證,以便簽署工作負載憑證。
Cloud Service Mesh 憑證授權單位的費用包含在 Cloud Service Mesh 定價中。CA 服務不包含在 Cloud Service Mesh 基本價格中,且會另外收費。此外,憑證授權單位服務提供明確的服務水準協議,但 Cloud Service Mesh 憑證授權單位則無。
必要條件
本指南假設您已具備以下條件:
- 雲端專案
- Cloud Billing 帳戶
- 取得佈建 Cloud Service Mesh 的必要權限
- 在叢集和節點集區上啟用 GKE 適用的工作負載身分聯盟。
-
一或多個叢集,且叢集位於支援的區域,並使用支援的 GKE 版本。如要瞭解如何建立已啟用 Cloud Service Mesh 的 Google Kubernetes Engine 叢集,請參閱「在 Google Kubernetes Engine 上佈建代管式 Cloud Service Mesh 控制層」一文中的叢集設定。為機群啟用代管 Cloud Service Mesh 做為預設設定,並在叢集建立期間向機群註冊叢集,僅支援 Mesh CA。您必須為每個叢集設定 Cloud Service Mesh,並為每個叢集明確啟用 CA 服務。
需求條件
在要設定 CA 集區的專案中,啟用必要的 API。
gcloud services enable privateca.googleapis.com \
--project=CA_PROJECT_ID
設定 CA 服務
- 在層級
DevOps中建立 CA 集區,並與其服務的叢集位於相同區域,以免發生延遲時間過長的問題,或潛在的跨區域服務中斷。詳情請參閱「已最佳化調整工作負載的級別」。 - 建立 CA,確保 GKE 叢集所在的專案中,CA 集區至少有一個有效的憑證授權單位。使用下層 CA 簽署 Cloud Service Mesh 工作負載憑證。記下從屬 CA 對應的 CA 集區。
如果只打算為 Cloud Service Mesh 工作負載提供服務憑證,請為 CA 集區設定下列核發政策:
policy.yaml
baselineValues: keyUsage: baseKeyUsage: digitalSignature: true keyEncipherment: true extendedKeyUsage: serverAuth: true clientAuth: true caOptions: isCa: false identityConstraints: allowSubjectPassthrough: false allowSubjectAltNamesPassthrough: true celExpression: expression: subject_alt_names.all(san, san.type == URI && san.value.startsWith("spiffe://PROJECT_ID.svc.id.goog/ns/") )如要更新 CA 集區的簽發政策,請使用下列指令:
gcloud privateca pools update CA_POOL --location ca_region --issuance-policy policy.yaml
如要瞭解如何為集區設定政策,請參閱「使用憑證核發政策」。
如果您使用憑證範本,請立即設定。如要瞭解詳情,請參閱工作負載身分憑證的 CA 服務指南。請確認憑證範本與 CA 集區位於相同區域。如果 CA 集區有多個區域,請為每個區域建立憑證範本。
使用憑證授權單位服務所需的角色
如要整合,Cloud Service Mesh 中的所有工作負載都必須具備下列 IAM 角色。您必須明確套用這些角色繫結,才能用於 Cloud Service Mesh 工作負載:
WORKLOAD_IDENTITY="FLEET_PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/"
gcloud privateca pools add-iam-policy-binding CA_POOL \
--project FLEET_PROJECT_ID \
--location ca_region \
--member "group:${WORKLOAD_IDENTITY}" \
--role "roles/privateca.workloadCertificateRequester"
gcloud privateca pools add-iam-policy-binding CA_POOL \
--project FLEET_PROJECT_ID \
--location ca_region \
--member "group:${WORKLOAD_IDENTITY}" \
--role "roles/privateca.auditor"
使用憑證範本時的做法:
gcloud privateca templates add-iam-policy-binding CERT_TEMPLATE_ID \
--member "group:${WORKLOAD_IDENTITY}" \
--role "roles/privateca.templateUser"
限制
- 請先設定並挑選 CA,再佈建 Cloud Service Mesh 控制層。不支援變更 CA。
設定代管型 Cloud Service Mesh 以使用憑證授權單位服務
確認
istio-system命名空間是否存在,如果沒有,請建立該命名空間:kubectl create ns istio-system檢查
istio-system命名空間中是否有asm-optionsconfigmap:kubectl get configmap/asm-options -n istio-system如果沒有,請建立 configmap:
kubectl create configmap -n istio-system asm-options修補 ConfigMap,加入 CAS 設定:
kubectl patch configmap/asm-options -n istio-system --type merge \ -p '{"data":{"ASM_OPTS": "CA=PRIVATECA;CAAddr=projects/CA_PROJECT_ID/locations/ca_region/caPools/CA_POOL"}}'如需憑證範本,請使用
:做為分隔符,將範本 ID 附加至 CA 集區地址:kubectl patch configmap/asm-options -n istio-system --type merge \ -p '{"data":{"ASM_OPTS": "CA=PRIVATECA;CAAddr=projects/CA_PROJECT_ID/locations/ca_region/caPools/CA_POOL:projects/PROJECT_ID/locations/ca_region/certificateTemplates/CERT_TEMPLATE_ID"}}'
完成設定步驟後,請啟用自動管理功能,繼續安裝受管理 Cloud Service Mesh。