Configurare 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 all'interno del cluster, consulta Installare le funzionalità predefinite e il servizio Certificate Authority (CA).

Oltre all'autorità di certificazione Cloud Service Mesh, puoi configurare Cloud Service Mesh in modo da utilizzare Certificate Authority Service. Questa guida ti offre l'opportunità di eseguire l'integrazione con CA Service, consigliato per i seguenti casi d'uso:

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

Il costo dell'autorità di certificazione Cloud Service Mesh è incluso nei prezzi di Cloud Service Mesh. Il servizio CA non è incluso nel prezzo base di Cloud Service Mesh e viene addebitato separatamente. Inoltre, il servizio CA è dotato di un SLA esplicito, ma l'autorità di certificazione Cloud Service Mesh no.

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 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 l'autorità di certificazione 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 carichi di lavoro di Cloud Service Mesh. Prendi nota del pool di CA corrispondente alla CA subordinata.
  3. Se è destinata a gestire solo i certificati per i carichi di lavoro Cloud Service Mesh, imposta 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 il criterio di emissione del pool di CA, usa il seguente comando:

    gcloud privateca pools update CA_POOL --location ca_region --issuance-policy policy.yaml
    

    Per informazioni su come impostare un criterio in un pool, consulta Utilizzare una norma di emissione dei certificati.

  5. Se utilizzi un modello di certificato, configuralo ora. Per saperne di più, consulta la guida di CA Service per i certificati Workload Identity. Assicurati che il modello di certificato venga creato nella stessa regione del pool di CA. Se sono presenti 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. Queste associazioni di ruoli devono essere applicate esplicitamente per i carichi di lavoro 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 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 piano di controllo di Cloud Service Mesh. La modifica della CA non è supportata.

Configurare Cloud Service Mesh gestito per utilizzare il servizio CA

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

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

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

      kubectl create configmap -n istio-system asm-options
    
  4. Esegui il patching del 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.