Configura Certificate Authority Service per Cloud Service Mesh gestito

Questa guida descrive come configurare Certificate Authority Service per Cloud Service Mesh gestito. Per informazioni su Cloud Service Mesh in-cluster, consulta Installare le funzionalità predefinite e Certificate Authority (CA) Service.

Oltre all'autorità di certificazione Cloud Service Mesh, puoi configurare Cloud Service Mesh in modo che utilizzi Certificate Authority Service. Questa guida ti offre l'opportunità di stabilire l'integrazione con Certificate Authority Service, il che è consigliato per i seguenti casi d'uso:

  • Se hai bisogno di autorità di certificazione diverse per firmare i certificati dei workload su cluster diversi.
  • Se devi eseguire il backup delle chiavi di firma in un Cloud HSM.
  • Se operi in un settore altamente regolamentato e sei soggetto a conformità.
  • Se vuoi concatenare la CA Cloud Service Mesh a un certificato radice aziendale personalizzato per firmare i certificati dei workload.

Il costo dell'autorità di certificazione Cloud Service Mesh è incluso nei prezzi di Cloud Service Mesh. Certificate Authority Service non è incluso nel prezzo base di Cloud Service Mesh e viene addebitato separatamente. Inoltre, Certificate Authority Service include uno SLA esplicito, mentre l'autorità di certificazione Cloud Service Mesh non lo include.

Prerequisiti

Come punto di partenza, questa guida presuppone che tu disponga di quanto segue:

Requisiti

Abilita l'API richiesta nel progetto in cui verrà configurato il pool di CA.

 gcloud services enable privateca.googleapis.com \
      --project=CA_PROJECT_ID

Configura CA Service

  1. Crea il pool di CA nel livello DevOps e nella stessa regione del cluster a cui serve per evitare problemi di latenza eccessiva o potenziali interruzioni tra regioni. Per saperne di più, vedi Livelli ottimizzati per il carico di lavoro.
  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 Cloud Service Mesh. Prendi nota del pool di CA corrispondente alla CA subordinata.
  3. Se è destinato a gestire solo i certificati per i workload Cloud Service Mesh, configura il seguente criterio di emissione per il pool di 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 di 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, vedi Utilizzare una policy di emissione dei certificati.

  5. Se utilizzi un modello di certificato, configuralo ora. Per saperne di più, segui la guida al servizio CA per i certificati di identità del workload. Assicurati che il modello di certificato sia creato nella stessa regione del pool di CA. Se esistono più regioni per i pool di CA, crea un modello di certificato per regione.

Ruoli richiesti per utilizzare il servizio CA

Per questa integrazione, tutti i carichi di lavoro in Cloud Service Mesh richiedono i seguenti ruoli IAM. Questi binding dei ruoli devono essere applicati esplicitamente per i carichi di lavoro 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 modelli 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 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 esiste la configmap asm-options nello spazio dei nomi istio-system:

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

      kubectl create configmap -n istio-system asm-options
    
  4. Applica una patch a ConfigMap per aggiungere la configurazione 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 modello di certificato, aggiungi l'ID modello all'indirizzo del pool di 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.