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 nel cluster, consulta Installa le funzionalità predefinite e il servizio dell'autorità di certificazione (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 del carico 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, CA Service include SLA esplicito, al contrario dell'autorità di certificazione Cloud Service Mesh.

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 avere almeno un'autorità di certificazione attiva nel pool di CA in stesso progetto del cluster GKE. Utilizza CA subordinate per firmare Certificati per i carichi di lavoro di Cloud Service Mesh. Prendi nota del pool di CA corrispondente alla CA subordinata.
  3. Se intendi utilizzare solo certificati di servizio per i carichi di lavoro di Cloud Service Mesh, imposta i seguenti criteri 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 un criterio di emissione dei certificati.

  5. Se utilizzi un modello di certificato, configuralo ora. Per ulteriori informazioni, Segui la guida di CA Service per i certificati di identità per i carichi di lavoro. Assicurati che il modello di certificato sia 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 necessari 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 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 oppure crealo, se è mancanti:

      kubectl create ns istio-system
    
  2. Controlla se esiste una 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 le 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 abilitando la gestione automatica.