Configura Certificate Authority Service per Cloud Service Mesh gestito
L'integrazione di Certificate Authority Service con Cloud Service Mesh gestito ti consente di emettere certificati workload utilizzando CA private anziché l'autorità di certificazione Cloud Service Mesh predefinita. Questa configurazione ti aiuta a eseguire il backup delle chiavi di firma in Cloud HSM, concatenare i certificati a una radice aziendale personalizzata e soddisfare i requisiti di conformità legale in più cluster.
A differenza della CA mesh predefinita, Certificate Authority Service prevede uno SLA esplicito e viene addebitato separatamente. Poiché Certificate Authority Service non è supportato nella configurazione predefinita del parco risorse durante la creazione del cluster, devi configurare Cloud Service Mesh per cluster. Per i control plane in-cluster, consulta Installa le funzionalità predefinite e Certificate Authority Service (CAS).
Prerequisiti
Come punto di partenza, questa guida presuppone che tu abbia:
- Un progetto Cloud
- Un account di fatturazione Cloud
- Ottenuto le autorizzazioni necessarie per eseguire il provisioning di Cloud Service Mesh
- Abilitato Workload Identity Federation for GKE sui tuoi cluster e pool di nodi.
-
Uno o più cluster con una versione supportata di GKE, in una delle regioni supportate. Per scoprire come creare un cluster Google Kubernetes Engine con Cloud Service Mesh abilitato, consulta la configurazione per cluster nel documento Esegui il provisioning di un control plane Cloud Service Mesh gestito su Google Kubernetes Engine. L'abilitazione di Cloud Service Mesh gestito come configurazione predefinita per il parco risorse e la registrazione dei cluster nel parco risorse durante la creazione del cluster supportano solo Mesh CA. Devi configurare Cloud Service Mesh per cluster e attivare Certificate Authority Service in modo esplicito per ogni cluster.
Requisiti
Abilita l'API richiesta nel progetto in cui verrà configurato il pool CA.
gcloud services enable privateca.googleapis.com \
--project=CA_PROJECT_ID
Configura Certificate Authority Service
- Crea il pool CA nel livello
DevOpse nella stessa regione del cluster che gestisce per evitare problemi di latenza eccessiva o potenziali interruzioni tra regioni. Per saperne di più, consulta Livelli ottimizzati per i workload. - Crea la CA per avere almeno un'autorità di certificazione attiva nel pool di CA nello stesso progetto del cluster GKE. Utilizza le CA subordinate per firmare i certificati dei workload di Cloud Service Mesh. Prendi nota del pool CA corrispondente alla CA subordinata.
Se è destinato solo ai certificati di servizio per i workload di Cloud Service Mesh, configura la seguente policy di emissione per il pool 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/") )Per aggiornare la policy di emissione del pool CA, utilizza il seguente comando:
gcloud privateca pools update CA_POOL --location ca_region --issuance-policy policy.yaml
Per informazioni sull'impostazione di una policy su un pool, consulta Utilizzo di una policy di emissione dei certificati.
Se utilizzi un template di certificato, configuralo ora. Per saperne di più, segui la guida di Certificate Authority Service per i certificati Workload Identity. Assicurati che il template di certificato sia creato nella stessa regione del pool CA. Se esistono più regioni per i pool CA, crea un template di certificato per regione.
Ruoli richiesti per utilizzare CA Service
Per questa integrazione, tutti i workload in Cloud Service Mesh richiedono i seguenti ruoli IAM. Queste associazioni di ruoli devono essere applicate esplicitamente ai workload di 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"
Se utilizzi i template di certificato:
gcloud privateca templates add-iam-policy-binding CERT_TEMPLATE_ID \
--member "group:${WORKLOAD_IDENTITY}" \
--role "roles/privateca.templateUser"
Limitazioni
- Configura e scegli la CA prima di eseguire il provisioning del control plane di Cloud Service Mesh. La modifica della CA non è supportata.
Configura Cloud Service Mesh gestito per l'utilizzo di Certificate Authority Service
Verifica che lo spazio dei nomi
istio-systemesista o crealo se non è presente:kubectl create ns istio-systemControlla se la ConfigMap
asm-optionsesiste nello spazio dei nomiistio-system:kubectl get configmap/asm-options -n istio-systemCrea il ConfigMap se non esiste:
kubectl create configmap -n istio-system asm-optionsApplica la patch a ConfigMap per aggiungere la configurazione di 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"}}'Se è necessario un template di certificato, aggiungi l'ID template all'indirizzo del pool CA utilizzando
:come separatore: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"}}'
Dopo aver completato i passaggi di configurazione, continua l'installazione di Cloud Service Mesh gestito attivando la gestione automatica.