本文說明在 Google Distributed Cloud (GDC) 實體隔離方案中,建立根憑證授權單位 (CA) 的步驟。
根 CA 位於公用金鑰基礎架構 (PKI) 階層頂端,可為 PKI 建立信任錨點。如要在 PKI 中使用憑證,裝置、軟體和元件必須信任根 CA。這項設定可確保根 CA 核發的所有憑證都值得信任,進而確保 PKI 本身值得信任。
本文適用於應用程式營運商群組中的對象,例如在專案中管理憑證生命週期的應用程式開發人員或數據資料學家。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。
事前準備
您必須先要求必要權限並準備環境,才能建立根憑證授權單位。
要求 IAM 角色
如要建立、更新及刪除根憑證授權單位,請向 IAM 機構組織管理員要求憑證授權單位服務管理員 (certificate-authority-service-admin) 角色。
準備環境
產生 kubeconfig 檔案,設定
kubectl存取權。
建立根憑證授權單位
如要建立根 CA,請將自訂資源套用至 Distributed Cloud 實體隔離執行個體。
建立
CertificateAuthority資源,並儲存為名為root-ca.yaml的 YAML 檔案:apiVersion: pki.security.gdc.goog/v1 kind: CertificateAuthority metadata: name: ROOT_CA_NAME namespace: USER_PROJECT_NAMESPACE spec: caProfile: commonName: COMMON_NAME duration: DURATION renewBefore: RENEW_BEFORE organizations: - ORGANIZATION organizationalUnits: - ORGANIZATIONAL_UNITS countries: - COUNTRIES localities: - LOCALTIES provinces: - PROVINCES streetAddresses: - STREET_ADDRESSES postalCodes: - POSTAL_CODES caCertificate: selfSignedCA: {} certificateProfile: keyUsage: - digitalSignature - keyCertSign - crlSign extendedKeyUsage: - EXTENDED_KEY_USAGE secretConfig: secretName: SECRET_NAME privateKeyConfig: algorithm: KEY_ALGORITHM size: KEY_SIZE acme: enabled: ACME_ENABLED請替換下列變數:
變數 說明 ROOT_CA_NAME 根 CA 的名稱。 USER_PROJECT_NAMESPACE 使用者專案所在的命名空間名稱。 COMMON_NAME CA 憑證的一般名稱。 DURATION CA 憑證要求的效期。請以小時為單位指定時間長度 (例如 1000h)。不支援天數 (d) 或年數 (y) 等單位。SECRET_NAME Kubernetes 密鑰的名稱,其中包含私密金鑰和已簽署的 CA 憑證。 以下變數為選用值:
變數 說明 RENEW_BEFORE CA 憑證到期前的輪替時間。 ORGANIZATION 憑證上使用的機構。 ORGANIZATIONAL_UNITS 憑證使用的組織單位。 COUNTRIES 憑證適用的國家/地區。 LOCALITIES 憑證上使用的城市。 PROVINCES 憑證上使用的州或省。 STREET_ADDRESSES 憑證上使用的街道地址。 POSTAL_CODES 憑證上使用的郵遞區號。 EXTENDED_KEY_USAGE 憑證的擴充金鑰使用方式。如有提供,允許的值為 serverAuth和clientAuth。KEY_ALGORITHYM 這個憑證使用的私密金鑰演算法。允許的值為 RSA、Ed25519或ECDSA。如未提供大小,ECDSA的預設值為 256,RSA的預設值為 2048。系統會忽略Ed25519的金鑰大小。KEY_SIZE 這個憑證的私密金鑰大小 (以位元為單位) 取決於演算法。 RSA允許 2048、3072、4096 或 8192 (預設為 2048)。ECDSA允許 256、384 或 521 (預設為 256)。Ed25519會忽略大小。ACME_ENABLED 如果設為 true,CA 會在 ACME 模式下執行,並輸出 ACME 伺服器網址。接著,您可以使用 ACME 用戶端和通訊協定管理憑證。將自訂資源套用至 Distributed Cloud 執行個體:
kubectl apply -f root-ca.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG將
MANAGEMENT_API_SERVER_KUBECONFIG替換為 Management API 伺服器的 kubeconfig 檔案路徑。確認根 CA 是否就緒。CA 通常需要約 40 分鐘才能準備就緒:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ -n USER_PROJECT_NAMESPACE \ get certificateauthority.pki.security.gdc.goog/ROOT_CA_NAME \ -o json | jq -r '.status.conditions[] | select(.type as $id | "Ready" | index($id))'輸出看起來類似以下內容:
{ "lastTransitionTime": "2025-01-24T17:09:19Z", "message": "CA reconciled", "observedGeneration": 2, "reason": "Ready", "status": "True", "type": "Ready" }
列出 CA
如要列出 Distributed Cloud 實體隔離執行個體中的所有憑證授權單位服務資源,請按照下列步驟操作:
使用 certificateauthorities 參數列出所有 CertificateAuthority 資源:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthorities
輸出看起來類似以下內容:
NAMESPACE NAME READY REASON AGE
foo root-ca True Ready 7h24m
foo sub-ca True Ready 7h24m