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:

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

  1. Crea il pool CA nel livello DevOps e 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.
  2. 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.
  3. 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/") )
    
  4. 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.

  5. 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

  1. Verifica che lo spazio dei nomi istio-system esista o crealo se non è presente:

      kubectl create ns istio-system
    
  2. Controlla se la ConfigMap asm-options esiste nello spazio dei nomi istio-system:

      kubectl get configmap/asm-options -n istio-system
    
  3. Crea il ConfigMap se non esiste:

      kubectl create configmap -n istio-system asm-options
    
  4. Applica 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.