Configurare mTLS di backend utilizzando l'identità dei workload gestita

Questo documento spiega come configurare un'identità del carico di lavoro gestita sul servizio di backend di un bilanciatore del carico. Dopo aver assegnato un'identità gestita, il bilanciatore del carico e i relativi backend possono autenticarsi reciprocamente utilizzando mTLS del backend.

Per configurare mTLS del backend utilizzando un'identità del workload gestita, devi:

  1. Configura un pool di autorità di certificazione (CA) di Certificate Authority Service per emettere certificati X.509 per le identità dei workload gestite.
  2. Configura un dominio attendibile creando un pool di identità del workload con uno spazio dei nomi, un'identità gestita, una policy di attestazione, una risorsa di configurazione dell'emissione di certificati inline e una risorsa di configurazione dell'attendibilità inline.1
  3. Associa la CA al pool di identità del workload utilizzando la configurazione dell'emissione dei certificati incorporata.
  4. Autorizza le identità dei workload gestite a richiedere certificati dal pool CA.
  5. Crea il bilanciatore del carico e collega l'identità gestita al servizio di backend.

1 Devi creare una configurazione dell'attendibilità inline solo se il bilanciatore del carico e i relativi backend si trovano in domini di attendibilità diversi. Ai fini di questo esempio, sia il bilanciatore del carico sia i backend fanno parte dello stesso dominio di attendibilità e, di conseguenza, la configurazione della risorsa di configurazione dell'attendibilità incorporata è facoltativa.

Per creare un'identità gestita per i backend, consulta la panoramica delle Workload Identity gestite.

Prima di iniziare

  1. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  2. Consulta il documento Panoramica di mTLS di backend con le Workload Identity gestite.

  3. Scopri di più sull'emissione di certificati utilizzando Certificate Authority Service.

  4. Enable the IAM, Certificate Authority Service, Compute Engine, Certificate Manager, and Network Security APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable iam.googleapis.com privateca.googleapis.com compute.googleapis.com certificatemanager.googleapis.com  networksecurity.googleapis.com

  5. Configura Google Cloud CLI in modo da utilizzare il progetto aggiunto alla lista consentita per la fatturazione e la quota.

    gcloud config set billing/quota_project PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID del progetto che è stato aggiunto alla lista consentita per l'anteprima dell'identità del workload gestita.

  6. Crea un'identità gestita per il backend. Per scoprire di più, consulta la panoramica delle identità dei workload gestite.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare identità dei carichi di lavoro gestite e eseguire il provisioning dei certificati di identità dei carichi di lavoro gestiti, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Configura CA Service per emettere certificati per le identità dei workload gestite

Puoi utilizzare i pool di CA per configurare una CA radice. Il pool di CA emette i certificati X.509 per le Workload Identity gestite.

Crea il pool di CA radice

Crea il pool di CA radice nel livello Enterprise utilizzando il comando gcloud privateca pools create. Questo livello è destinato all'emissione di certificati di lunga durata e a basso volume.

gcloud privateca pools create ROOT_CA_POOL_ID \
    --location=REGION \
    --project=PROJECT_ID \
    --tier=enterprise

Sostituisci quanto segue:

  • ROOT_CA_POOL_ID: un ID univoco per il pool di CA radice

  • REGION: la regione in cui si trova il pool di CA radice

  • PROJECT_ID: l'ID progetto

Per scoprire di più sui pool di CA, consulta Crea un pool di CA.

Crea una CA radice

Crea una CA radice nel pool di CA radice utilizzando il comando gcloud privateca roots create.

Per creare una CA radice, esegui questo comando:

gcloud privateca roots create ROOT_CA_ID \
    --pool=ROOT_CA_POOL_ID \
    --subject="CN=ROOT_CA_CN, O=ROOT_CA_ORGANIZATION" \
    [--key-algorithm="KEY_ALGORITHM"] \
    --max-chain-length=1 \
    --location=REGION \
    --project=PROJECT_ID \
    --auto-enable

Sostituisci quanto segue:

  • ROOT_CA_ID: un nome univoco per la CA radice. Il nome della CA può contenere fino a 64 caratteri e deve contenere solo caratteri alfanumerici minuscoli e maiuscoli, trattini bassi o trattini. Il nome della CA deve essere univoco all'interno della regione.
  • ROOT_CA_POOL_ID: l'ID del pool di CA radice.
  • ROOT_CA_CN: il nome comune della CA radice.
  • ROOT_CA_ORGANIZATION: l'organizzazione della CA radice.
  • KEY_ALGORITHM: l'algoritmo da utilizzare per creare una chiave Cloud KMS. Questo flag è facoltativo. Se non includi questo flag, l'algoritmo della chiave è impostato su rsa-pkcs1-4096-sha256 per impostazione predefinita.
  • REGION: la regione in cui si trova il pool di CA radice.
  • PROJECT_ID: l'ID progetto

Per scoprire di più su una CA radice, consulta Crea una CA radice.

Crea identità dei workload gestite

Quando utilizzi le identità dei workload gestite, Google Cloud può eseguire automaticamente il provisioning e la gestione dei certificati X.509 da Certificate Authority Service. Le identità del workload sono definite all'interno di un pool di identità del workload e sono organizzate in limiti amministrativi chiamati spazi dei nomi.

Crea un pool di identità del workload

Per creare identità dei workload gestite, devi creare un pool in modalità TRUST_DOMAIN. Per creare un pool di identità del workload per le identità del workload gestite, utilizza il comando gcloud iam workload-identity-pools create.

gcloud iam workload-identity-pools create WORKLOAD_IDENTITY_POOL_ID \
    --location="global" \
    --mode="TRUST_DOMAIN"

Sostituisci WORKLOAD_IDENTITY_POOL_ID con l'ID univoco del pool. L'ID deve contenere da 4 a 32 caratteri, solo caratteri alfanumerici minuscoli e trattini e deve iniziare e terminare con un carattere alfanumerico. Dopo aver creato un pool di identità del workload, non puoi modificarne l'ID.

Per verificare che il pool di identità dei workload sia stato creato in modalità TRUST_DOMAIN, utilizza il comando gcloud iam workload-identity-pools describe.

gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
    --location="global"

L'output è simile al seguente:

mode: TRUST_DOMAIN
name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID
state: ACTIVE

Questo output include i seguenti valori:

  • PROJECT_NUMBER: il numero di progetto del tuo Google Cloud progetto
  • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload

Crea uno spazio dei nomi

Il comando gcloud iam workload-identity-pools namespaces create consente di creare uno spazio dei nomi in un pool di identità del workload.

gcloud iam workload-identity-pools namespaces create NAMESPACE_ID \
    --workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
    --location="global"

Sostituisci quanto segue:

  • NAMESPACE_ID: l'ID univoco per lo spazio dei nomi. L'ID deve essere compreso tra 2 e 63 caratteri, contenere solo caratteri alfanumerici minuscoli e trattini e deve iniziare e terminare con un carattere alfanumerico. Dopo aver creato uno spazio dei nomi, non puoi modificarne l'ID.
  • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload che hai creato in precedenza.

Crea un'identità del workload gestita

Il comando gloud iam workload-identity-pools managed-identities create consente di creare un'identità del workload gestita in uno spazio dei nomi del pool di identità del workload.

gcloud iam workload-identity-pools managed-identities create MANAGED_IDENTITY_ID \
    --namespace="NAMESPACE_ID" \
    --workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
    --location="global"

Sostituisci quanto segue:

  • MANAGED_IDENTITY_ID: l'ID univoco dell'identità gestita. L'ID deve contenere da 2 a 63 caratteri, solo caratteri alfanumerici minuscoli e trattini e deve iniziare e terminare con un carattere alfanumerico. Dopo aver creato un'identità del workload gestita, non puoi modificarne l'ID.
  • NAMESPACE_ID: l'ID dello spazio dei nomi che hai creato in precedenza.
  • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload creato in precedenza.

L'ID identità del workload gestita è l'identificatore SPIFFE, che ha il seguente formato:

spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID

Crea una policy di attestazione

In questo esempio, una policy di attestazione contiene una regola di attestazione che verifica se il servizio di backend fa parte di un progetto specifico. Se la verifica della policy di attestazione viene superata, IAM richiede un certificato X.509 per l'identità gestita dal servizio di autorità di certificazione.

Per creare una policy di attestazione, esegui questo comando per aggiungere una regola di attestazione.

gcloud iam workload-identity-pools managed-identities add-attestation-rule MANAGED_IDENTITY_ID \
    --namespace=NAMESPACE_ID \
    --workload-identity-pool=WORKLOAD_IDENTITY_POOL_ID \
    --google-cloud-resource='//compute.googleapis.com/projects/PROJECT_NUMBER/type/BackendService/*' \
    --location=global

Sostituisci quanto segue:

  • MANAGED_IDENTITY_ID: l'ID univoco dell'identità gestita. L'ID deve essere compreso tra 2 e 63 caratteri, contenere solo caratteri alfanumerici minuscoli e trattini e deve iniziare e terminare con un carattere alfanumerico. Dopo aver creato un'identità del workload gestita, non puoi modificarne l'ID.
  • NAMESPACE_ID: l'ID spazio dei nomi che hai creato in precedenza.
  • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload che hai creato in precedenza.
  • PROJECT_NUMBER: il numero di progetto del Google Cloud progetto.

Crea una configurazione dell'emissione dei certificati inline

Per associare una CA a un pool di identità del workload, il pool di identità del workload deve avere una configurazione dell'emissione di certificati inline.

Per configurare una configurazione di emissione di certificati inline, crea un file di configurazione in formato JSON (cic.json). Il formato del file è simile al seguente:

{
  "inlineCertificateIssuanceConfig": {
      "caPools": {
        "REGION": "projects/PROJECT_NUMBER/locations/REGION/caPools/ROOT_CA_POOL_ID",
      },
      ["lifetime": "CERTIFICATE_LIFETIME"],
      ["rotationWindowPercentage": ROTATION_WINDOW_PERCENTAGE],
      ["keyAlgorithm": "ALGORITHM"]
  }
}

Sostituisci quanto segue:

  • REGION: la regione in cui si trova la CA.

  • PROJECT_NUMBER: il numero del progetto. Per ottenere il numero di progetto dal progetto specificato dalla variabile PROJECT_ID, esegui questo comando:

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    
  • ROOT_CA_POOL_ID: l'ID del pool di CA radice.

  • CERTIFICATE_LIFETIME: durata dei certificati del workload emessi dal pool di CA in secondi, ad esempio 86400 secondi (per 24 ore). CERTIFICATE_LIFETIME deve essere un valore compreso tra 24 ore e 30 giorni. Se CERTIFICATE_LIFETIME non è specificato, la durata del certificato è di 24 ore per impostazione predefinita. CERTIFICATE_LIFETIME è facoltativo.

  • ROTATION_WINDOW_PERCENTAGE: la percentuale della durata del certificato in cui viene attivato un rinnovo. Il valore di ROTATION_WINDOW_PERCENTAGE deve essere compreso tra 50 e 80. Il valore predefinito è 50. ROTATION_WINDOW_PERCENTAGE è facoltativo.

  • ALGORITHM: l'algoritmo di crittografia utilizzato per generare la chiave privata. I valori validi per ALGORITHM sono ECDSA_P256 (valore predefinito), ECDSA_P384, RSA_2048, RSA_3072 e RSA_4096. ALGORITHM è facoltativo.

Crea una configurazione dell'attendibilità in linea

In questa configurazione di esempio, sia il bilanciatore del carico sia il backend fanno parte dello stesso dominio di attendibilità e condividono lo stesso certificato radice. Di conseguenza, la configurazione della configurazione dell'attendibilità incorporata è facoltativa. La radice di attendibilità comune viene utilizzata per creare una catena di attendibilità e verificare l'identità dei workload all'interno del dominio attendibile.

Gerarchia delle risorse di identità del workload gestita.
Gerarchia delle risorse di Workload Identity gestita (fai clic per ingrandire).

Per impostazione predefinita, i tuoi workload all'interno dello stesso dominio attendibile possono autenticarsi reciprocamente utilizzando le identità dei workload gestite. Se vuoi che i workload che si trovano in domini attendibili diversi si autentichino reciprocamente, devi dichiarare esplicitamente la relazione di trust nel pool di identità dei workload. A questo scopo, crea una configurazione di trust incorporata che riconosce e accetta i certificati di altri domini di trust.

Per creare una configurazione di attendibilità incorporata:

  1. Scarica i certificati.

    gcloud privateca pools get-ca-certs ROOT_CA_POOL_ID \
        --output-file=CERTIFICATE_PATH \
        --location=REGION
    

    Sostituisci quanto segue:

    • ROOT_CA_POOL_ID: l'ID del pool di CA radice
    • CERTIFICATE_PATH: il percorso in cui generare il certificato con codifica PEM
    • REGION: la regione del pool di CA radice
  2. Crea un file di configurazione in formato JSON (tc.json) che contenga la configurazione dell'attendibilità incorporata, con certificati in formato PEM.

    Il file è simile al seguente:

    {
      "inlineTrustConfig": {
        "additionalTrustBundles": {
          "TRUST_DOMAIN_NAME1": {
            "trustAnchors": [
              {
                  "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----"
              },
              {
                  "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----"
              }
            ]
          },
          "TRUST_DOMAIN_NAME2": {
            "trustAnchors": [
              {
                  "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL3\n-----END CERTIFICATE-----"
              },
              {
                  "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL4\n-----END CERTIFICATE-----"
              }
            ]
          }
        }
      }
    }
    

    Sostituisci quanto segue:

    • TRUST_DOMAIN_NAME: il dominio di trust può essere qualsiasi dominio di trust (ad esempio "example.com"), incluso un altro dominio di trust del pool di identità del workload (o anche lo stesso).

      Per un dominio di trust del pool di identità dei workload, il nome del dominio di trust è formattato nel seguente modo:

      WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog
      

      Nel formato, sostituisci quanto segue:

      • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload
      • PROJECT_NUMBER: il numero del progetto che contiene il pool di identità del workload
    • CERTIFICATE_MATERIAL: il certificato CA in formato PEM considerato attendibile per l'emissione di certificati nel dominio di attendibilità. È possibile usare il seguente comando per codificare un file di certificato in formato PEM in una stringa di una riga:

      cat trust-anchor.pem | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g'
      

Associa la CA al pool di identità del workload

Dopo aver creato la gerarchia di CA e una configurazione di emissione dei certificati per la CA, puoi associare la CA al pool di identità del workload. Per associare la CA al pool di identità del workload, devi aggiornare il pool di identità del workload con la configurazione dell'emissione dei certificati della CA. A questo punto, puoi verificare che il pool sia stato aggiornato.

Aggiorna il pool di identità del workload

Per associare una CA al pool di identità del workload, aggiorna il pool di identità del workload con la configurazione dell'emissione dei certificati della CA. Dopodiché, puoi verificare che il pool sia stato aggiornato.

Per aggiornare il pool, esegui questo comando:

gcloud iam workload-identity-pools update WORKLOAD_IDENTITY_POOL_ID \
    --location="global" \
    --inline-certificate-issuance-config-file=CIC_JSON_FILE_PATH \
    [--inline-trust-config-file=TC_JSON_FILE_PATH] \
    --project=PROJECT_ID

Sostituisci quanto segue:

  • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload.

  • CIC_JSON_FILE_PATH: il percorso del file di configurazione in formato JSON (cic.json) per la configurazione di emissione dei certificati inline che hai creato in precedenza.

  • TC_JSON_FILE_PATH: il percorso del file di configurazione in formato JSON (tc.json) per la configurazione dell'attendibilità incorporata che hai creato in precedenza. Se i tuoi workload eseguono l'autenticazione in domini attendibili diversi, devi specificare questo file. In caso contrario, puoi omettere --inline-trust-config.

Verifica che il pool di identità del workload sia stato aggiornato

Per verificare che il pool di identità del workload sia stato aggiornato insieme alla configurazione dell'emissione dei certificati e alla configurazione dell'attendibilità, esegui questo comando:

gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
    --location="global" \
    --project=PROJECT_ID

Sostituisci quanto segue:

  • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload.

  • PROJECT_ID: l'ID progetto

L'output è simile al seguente:

inlineCertificateIssuanceConfig:
    caPools:
      REGION: projects/PROJECT_NUMBER/locations/REGION1/caPools/ROOT_CA_POOL_ID
    keyAlgorithm: ALGORITHM
    lifetime: CERTIFICATE_LIFETIME
    rotationWindowPercentage: ROTATION_WINDOW_PERCENTAGE
inlineTrustConfig:
    additionalTrustBundles:
      TRUST_DOMAIN_NAME1:
          trustAnchors:
          - pemCertificate: |-
            -----BEGIN CERTIFICATE-----
            CERTIFICATE_MATERIAL1
            -----END CERTIFICATE-----
          - pemCertificate: |-
            -----BEGIN CERTIFICATE-----
            CERTIFICATE_MATERIAL2
            -----END CERTIFICATE-----
      TRUST_DOMAIN_NAME2:
          trustAnchors:
          - pemCertificate: |-
            -----BEGIN CERTIFICATE-----
            CERTIFICATE_MATERIAL3
            -----END CERTIFICATE-----
          - pemCertificate: |-
            -----BEGIN CERTIFICATE-----
            CERTIFICATE_MATERIAL4
            -----END CERTIFICATE-----
mode: TRUST_DOMAIN
name: projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID
state: ACTIVE

Questo output include i seguenti valori:

  • PROJECT_NUMBER: il numero del progetto
  • REGION: la regione in cui si trova il pool di CA radice
  • ROOT_CA_POOL_ID: l'ID del pool di CA radice
  • ALGORITHM: l'algoritmo di crittografia utilizzato per generare la chiave privata
  • CERTIFICATE_LIFETIME: la durata dei certificati del workload emessi dal pool di CA in secondi
  • ROTATION_WINDOW_PERCENTAGE: la percentuale della durata del certificato in cui viene attivato un rinnovo.
  • TRUST_DOMAIN_NAME: il dominio di trust può essere qualsiasi dominio di trust (ad esempio "example.com"), incluso un altro dominio di trust del pool di identità del workload (o anche lo stesso).
  • CERTIFICATE_MATERIAL: il certificato CA in formato PEM attendibile per l'emissione di certificati nel dominio di attendibilità
  • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload

Se inlineCertificateIssuanceConfig o inlineTrustConfig non è presente nell'output, verifica di aver configurato correttamente gcloud CLI per utilizzare il progetto corretto per la fatturazione e la quota. Potresti dover eseguire l'aggiornamento a una versione più recente di gcloud CLI.

Autorizza le identità dei workload gestite a richiedere certificati dal pool di CA

Dopo aver associato la CA al pool di identità dei workload, devi autorizzare le identità dei workload gestite a richiedere certificati dal pool di CA.

  1. Concedi il ruolo CA Service Workload Certificate Requester (roles/privateca.workloadCertificateRequester) al dominio di attendibilità. Questo ruolo autorizza il dominio attendibile a richiedere certificati dalle catene di certificati del servizio CA.

    gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \
        --location=REGION \
        --role=roles/privateca.workloadCertificateRequester \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \
        --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • ROOT_CA_POOL_ID: l'ID del pool di CA radice
    • REGION: la regione del pool di CA radice
    • PROJECT_NUMBER: il numero del progetto

      Per ottenere PROJECT_NUMBER da PROJECT_ID, esegui il comando seguente:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
      
    • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload

    • PROJECT_ID: l'ID progetto

  2. Concedi al dominio di trust il ruolo CA Service Pool Reader (roles/privateca.poolReader). Questo ruolo autorizza il dominio di trust a ottenere i certificati X.509 firmati dalle catene di certificati della CA.

    gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \
        --location=REGION \
        --role=roles/privateca.poolReader \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \
        --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • ROOT_CA_POOL_ID: l'ID del pool di CA radice
    • REGION: la regione del pool di CA radice
    • PROJECT_NUMBER: il numero del progetto
    • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload
    • PROJECT_ID: l'ID progetto

Crea il bilanciatore del carico e assegna l'identità gestita al servizio di backend

L'identità gestita può essere assegnata solo durante la creazione del servizio di backend.

I passaggi descritti in questa sezione riguardano solo l'assegnazione di un'identità gestita al servizio di backend del bilanciatore del carico. Fa parte della configurazione del backend del bilanciatore del carico.

Per configurare un bilanciatore del carico delle applicazioni esterno globale, segui i passaggi descritti in Configura un bilanciatore del carico delle applicazioni esterno globale con backend di gruppi di istanze VM. Nella fase di configurazione del servizio di backend del bilanciatore del carico, devi anche:

Console

  1. Nella console Google Cloud , vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Nella sezione Configurazione backend, aggiungi i dettagli pertinenti per creare un servizio di backend.

  3. Espandi la sezione Configurazioni avanzate.

  4. Nella sezione Autenticazione del backend, seleziona l'opzione Identità gestita.

  5. Per assegnare un'identità gestita al servizio di backend, nel campo Identità gestita, inserisci l'identità dei workload gestita che hai creato in precedenza.

  6. Fai clic su Crea.

  7. Continua i passaggi descritti in Configura il bilanciatore del carico per completare la configurazione del bilanciatore del carico.

gcloud

  1. Per assegnare un'identità gestita al servizio di backend, aggiungi il flag --identity quando utilizzi il comando gcloud beta compute backend-services create.

    gcloud beta compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTPS \
        --health-checks=HEALTH_CHECK_NAME \
        --identity='//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID' \
        --global
    

    Sostituisci quanto segue:

    • BACKEND_SERVICE_NAME: il nome del servizio di backend
    • HEALTH_CHECK_NAME: il nome del controllo di integrità
    • WORKLOAD_IDENTITY_POOL_ID: ID pool di identità del workload
    • PROJECT_NUMBER: il numero del progetto
    • NAMESPACE_ID: l'ID spazio dei nomi
    • MANAGED_IDENTITY_ID: l'ID dell'identità gestita

Risorse create automaticamente

Una volta configurata un'identità gestita sul servizio di backend del bilanciatore del carico, le seguenti risorse vengono create automaticamente dall'identità dei workload gestita:

  • Configurazione dell'autenticazione del backend: collegata al servizio di backend del bilanciatore del carico
  • Certificato dell'identità gestita di Certificate Manager: allegato alla configurazione di autenticazione del backend
  • Configurazione dell'attendibilità di Certificate Manager: collegata alla configurazione dell'autenticazione del backend

Le sezioni seguenti sono correlate alla verifica della configurazione per controllare se le risorse create automaticamente sono state configurate.

Verificare la configurazione

Verifica la configurazione per controllare se le risorse create automaticamente sono state configurate.

Le risorse create automaticamente hanno il prefisso mi, che indica che la risorsa è creata dall'identità dei workload gestita.

Verifica la creazione della configurazione di autenticazione del backend e dell'identità gestita

Per verificare la creazione della configurazione dell'autenticazione del backend e dell'identità gestita, utilizza il comando gcloud beta compute backend-services describe per descrivere il servizio di backend.

gcloud beta compute backend-services describe BACKEND_SERVICE_NAME --global

L'output è simile al seguente:

affinityCookieTtlSec: 0
connectionDraining:
  drainingTimeoutSec: 0
creationTimestamp: '2025-11-06T02:15:43.680-08:00'
description: ''
enableCDN: false
fingerprint: lTZwas8aylg=
healthChecks:
- https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME
id: '719352032'
kind: compute#backendService
loadBalancingScheme: EXTERNAL_MANAGED
name: BACKEND_SERVICE_NAME
port: 80
portName: PORT_NAME
protocol: HTTPS
selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME
sessionAffinity: NONE
timeoutSec: 30
tlsSettings:
  authenticationConfig: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/global/backendAuthenticationConfigs/mi-bac-423b651f-d549-4a9f-a4f2-g2bcaa7108bd
  identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID

Questo output include i seguenti valori:

  • PROJECT_ID: l'ID progetto
  • HEALTH_CHECK_NAME: il nome del controllo di integrità
  • BACKEND_SERVICE_NAME: il nome del servizio di backend
  • PORT_NAME: il nome della porta
  • REGION: la regione in cui si trova il pool di CA radice
  • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload
  • PROJECT_NUMBER: il numero del progetto
  • NAMESPACE_ID: l'ID spazio dei nomi
  • MANAGED_IDENTITY_ID: l'ID dell'identità gestita

La configurazione di autenticazione del backend viene creata automaticamente e associata al campo backendService.tlsSettings.authenticationConfig. La configurazione dell'autenticazione backend che inizia con il prefisso mi è indicata come MI_BACKEND_AUTHENTICATION_CONFIG_ID nella sezione seguente.

La Workload Identity gestita è collegata anche al campo backendService.tlsSettings.identity. Il formato è il seguente:

//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID

Verifica la creazione del certificato dell'identità gestita di Certificate Manager e della configurazione dell'attendibilità di Certificate Manager

Per verificare che il certificato di identità gestita di Certificate Manager e la configurazione dell'attendibilità di Certificate Manager siano collegati alla risorsa di configurazione dell'autenticazione del backend, utilizza il comando gcloud network-security backend-authentication-configs describe.

gcloud network-security backend-authentication-configs describe MI_BACKEND_AUTHENTICATION_CONFIG_ID \
    --location=global

L'output è simile al seguente:

clientCertificate: projects/PROJECT_NUMBER/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d
createTime: '2025-11-06T10:15:56.237734973Z'
etag: xwyxl1VYVoh4QIwf3nhKhAVXgcuOqoN7xdqAiS8Esvs
name: projects//locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd
trustConfig: projects/PROJECT_NUMBER/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742
updateTime: '2025-11-06T10:16:01.964275141Z'

clientCertificate e trustConfig vengono creati automaticamente da Workload Identity gestita e collegati alla risorsa di configurazione dell'autenticazione del backend.

clientCertificate che inizia con il prefisso mi viene chiamato MI_CLIENT_CERTIFICATE_ID nella sezione seguente.

trustConfig che inizia con il prefisso mi viene chiamato MI_TRUST_CONFIG_ID nella sezione seguente.

Verifica che il certificato di Gestore certificati sia un certificato di identità gestita

Per visualizzare i dettagli del certificato dell'identità gestita di Certificate Manager, utilizza il comando gcloud certificate-manager certificates describe.

gcloud certificate-manager certificates describe MI_CLIENT_CERTIFICATE_ID

L'output è simile al seguente:

createTime: '2025-11-06T10:15:46.187892797Z'
expireTime: '2025-11-07T22:55:47Z'
extendedKeyUsage:
  clientAuth: true
managedIdentity:
  identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
  state: ACTIVE
name: projects/PROJECT_ID/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d
pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----
scope: CLIENT_AUTH
updateTime: '2025-11-06T10:15:49.427339950Z'
usedBy:
- name: //networksecurity.googleapis.com/projects/PROJECT_NUMBER/locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd

Questo output include i seguenti valori:

  • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload
  • PROJECT_NUMBER: il numero del progetto
  • NAMESPACE_ID: l'ID spazio dei nomi
  • MANAGED_IDENTITY_ID: l'ID dell'identità gestita
  • CERTIFICATE_MATERIAL: l'SVID X.509 in formato con codifica PEM

Il certificato di identità gestita di Certificate Manager ha una proprietà managedIdentity, che lo identifica come certificato di identità gestita. La risorsa certificato di identità gestita di Certificate Manager memorizza l'X.509-SVID in un formato con codifica PEM.

L'ambito del certificato di identità gestita di Certificate Manager è CLIENT_AUTH, il che indica che questo certificato viene utilizzato come certificato client in mTLS di backend.

Verifica che l'ID SPIFFE faccia parte del SAN in X.509-SVID

L'SVID X.509 contiene l'ID SPIFFE codificato come URI nel campo SAN. Questo ID SPIFFE corrisponde all'identità gestita nel pool di identità del workload.

Per stampare un formato leggibile del certificato, esegui il comando seguente:

openssl x509 -text -noout \
<<< "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----"

L'output è simile al seguente (in forma abbreviata):

Certificate:
    Data:
        Version: 3 (0x2)
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: O = example.com, CN = Example CA
        Validity
            Not Before: Nov  6 10:15:48 2025 GMT
            Not After : Nov  7 10:15:47 2025 GMT
        Subject:
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
        X509v3 extensions:
            X509v3 Subject Alternative Name: critical
                URI:spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID

Questo output include i seguenti valori:

  • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload
  • PROJECT_NUMBER: il numero del progetto
  • NAMESPACE_ID: l'ID spazio dei nomi
  • MANAGED_IDENTITY_ID: l'ID dell'identità gestita

Verifica che la configurazione dell'attendibilità di Certificate Manager contenga il campo spiffeTrustStore

La configurazione dell'attendibilità di Certificate Manager contiene un campo denominato spiffeTrustStores. Il campo spiffeTrustStores contiene il bundle di attendibilità associato al dominio attendibile del pool di identità del workload (rappresentato da WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog nell'output) e tutti i bundle di attendibilità aggiuntivi specificati dal campo additionalTrustBundles nella configurazione di attendibilità incorporata del pool di identità del workload.

Per visualizzare i dettagli della configurazione di attendibilità di Certificate Manager, utilizza il comando gcloud certificate-manager trust-configs describe.

gcloud certificate-manager certificates describe MI_TRUST_CONFIG_ID

Sostituisci MI_TRUST_CONFIG_ID con la configurazione di attendibilità creata automaticamente dall'identità gestita.

Nell'output di esempio seguente, l'host example.com è il dominio di attendibilità aggiuntivo a cui viene estesa l'attendibilità.

createTime: '2025-11-06T10:15:50.048030758Z'
etag: kDoKfm5W6Il2HPvduKZWpuYpyrKrNVq4jqMEICE-6rQ
name: projects/PROJECT_ID/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742
spiffeTrustStores:
  example.com:
    trustAnchors:
    - pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----
  WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog:
    trustAnchors:
    - pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----
updateTime: '2025-11-07T08:25:15.760754841Z'

Questo output include i seguenti valori:

  • PROJECT_ID: l'ID progetto
  • CERTIFICATE_MATERIAL: il certificato CA in formato PEM attendibile per l'emissione di certificati nel dominio di attendibilità
  • WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workload
  • PROJECT_NUMBER: il numero del progetto
  • MANAGED_IDENTITY_ID: l'ID dell'identità gestita

Per saperne di più sulla configurazione di attendibilità di Certificate Manager, consulta Configurazione di attendibilità di Certificate Manager.

Passaggi successivi