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 di backend utilizzando un'identità del workload gestita, devi disporre di un pool di identità del workload configurato.
Se non hai un pool di identità del workload configurato, devi configurarne uno e poi collegare l'identità del workload gestita al servizio di backend del bilanciatore del carico.
Configura un pool di identità del workload.
- Configura un pool di autorità di certificazione (CA) di Certificate Authority Service per emettere certificati X.509 per le identità di workload gestite.
- 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 incorporata e una risorsa di configurazione dell'attendibilità incorporata.
- Autorizza le identità del workload gestite a richiedere certificati dal pool di CA.
Collega l'identità del workload gestita al servizio di backend del bilanciatore del carico.
Questo esempio in questo documento illustra la procedura di configurazione di un nuovo pool di identità del workload, seguita dall'associazione di un'identità del workload gestita al servizio di backend del bilanciatore del carico.
Se hai già un pool di identità del workload esistente, puoi seguire questo approccio:
Puoi aggiungere una nuova policy di attestazione per la risorsa del servizio di backend del bilanciatore del carico per partecipare al pool di identità del workload.
Collega l'identità del workload gestita al servizio di backend del bilanciatore del carico.
Prima di iniziare
Crea o seleziona un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
-
Creare un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il progetto Google Cloud che stai creando. -
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del progetto Google Cloud .
Consulta il documento Panoramica di mTLS di backend con le Workload Identity gestite.
Scopri di più sull'emissione di certificati utilizzando Certificate Authority Service.
Abilita le API IAM, Certificate Authority Service, Compute Engine, Certificate Manager e Network Security:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (
roles/serviceusage.serviceUsageAdmin), che include l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli.gcloud services enable iam.googleapis.com
privateca.googleapis.com compute.googleapis.com certificatemanager.googleapis.com networksecurity.googleapis.com 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_IDcon il nome del tuo progettoGoogle Cloud .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 nel progetto:
-
Per creare e configurare le identità di workload gestite:
- Amministratore pool di identità del workload IAM (
roles/iam.workloadIdentityPoolAdmin) - Amministratore service account (
roles/iam.serviceAccountAdmin)
- Amministratore pool di identità del workload IAM (
-
Per creare e configurare i pool di CA:
CA Service Admin (
roles/privateca.admin) -
Per creare risorse del bilanciatore del carico come
TargetHTTPSProxy: Amministratore bilanciatore del carico Compute (roles/compute.loadBalancerAdmin) -
Per utilizzare le risorse di Certificate Manager:
Certificate Manager Owner (
roles/certificatemanager.owner) -
Per creare componenti di sicurezza e networking:
- Compute Network Admin (
roles/compute.networkAdmin) - Compute Security Admin (
roles/compute.securityAdmin)
- Compute Network Admin (
-
Per creare un progetto (facoltativo):
Project Creator (
roles/resourcemanager.projectCreator)
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.
Configurare 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 identità di workload 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 radiceREGION: la regione in cui si trova il pool di CA radicePROJECT_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" \
--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 sursa-pkcs1-4096-sha256per impostazione predefinita.REGION: la regione in cui si trova il pool di CA radice.PROJECT_ID: l'ID progetto
Per saperne di più su una CA radice, consulta Crea una CA radice.
Configurare un pool di identità del workload
Quando utilizzi le identità dei workload gestite, Google Cloud può eseguire automaticamente il provisioning e gestire i 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 progettoWORKLOAD_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 contenere tra 2 e 63 caratteri, 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à di workload gestita
Il comando gcloud 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 delle norme di attestazione viene superata, IAM richiede un certificato X.509 per l'identità gestita dal servizio Certificate Authority Service.
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 avere una lunghezza compresa tra 2 e 63 caratteri, contenere solo caratteri alfanumerici minuscoli e trattini e 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 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 dell'emissione dei certificati inline, crea un file di configurazione in formato JSON (cic.json).
cat << EOF > cic.json
{
"inlineCertificateIssuanceConfig": {
"caPools": {
"REGION": "projects/PROJECT_NUMBER/locations/REGION/caPools/ROOT_CA_POOL_ID",
},
"lifetime": "CERTIFICATE_LIFETIME",
"rotationWindowPercentage": ROTATION_WINDOW_PERCENTAGE,
"keyAlgorithm": "ALGORITHM"
}
}
EOF
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 variabilePROJECT_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: la durata dei certificati del workload emessi dal pool di CA in secondi, ad esempio 86400 secondi (per 24 ore).CERTIFICATE_LIFETIMEdeve essere un valore compreso tra 24 ore e 30 giorni. SeCERTIFICATE_LIFETIMEnon è 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 diROTATION_WINDOW_PERCENTAGEdeve 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 perALGORITHMsonoECDSA_P256(valore predefinito),ECDSA_P384,RSA_2048,RSA_3072eRSA_4096.ALGORITHMè facoltativo.
Dopo aver creato il file di configurazione dell'emissione del certificato inline, devi aggiornare il pool di identità del workload con la configurazione dell'emissione del certificato della CA.
(Facoltativo) Creare una configurazione dell'attendibilità incorporata
Tutti i workload all'interno del dominio di trust ricevono certificati e trust anchor che consentono l'autenticazione per impostazione predefinita all'interno del dominio di trust. 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. Per farlo, crea una configurazione di trust incorporata che riconosce e accetta i certificati di altri domini di trust.
Il file di configurazione dell'attendibilità incorporato contiene un insieme di trust anchor che l'identità del workload gestita utilizza per convalidare i certificati peer. Il file di configurazione dell'attendibilità mappa il dominio di attendibilità SPIFFE ai certificati CA.
Per creare una configurazione di attendibilità incorporata:
Scarica i certificati per un dominio di trust.
gcloud privateca pools get-ca-certs ROOT_CA_POOL_ID \ --output-file=CERTIFICATE_PATH \ --location=REGIONSostituisci quanto segue:
ROOT_CA_POOL_ID: l'ID del pool di CA radiceCERTIFICATE_PATH: il percorso in cui generare il certificato con codifica PEMREGION: la regione del pool di CA radice
Crea un file di configurazione in formato JSON (
tc.json) che contenga la configurazione dell'attendibilità incorporata, con i certificati in formato PEM che hai scaricato nel passaggio precedente.cat << EOF > tc.json { "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-----" } ] } } } } EOFSostituisci quanto segue:
TRUST_DOMAIN_NAME: il dominio di trust può essere qualsiasi dominio di trust (ad esempio "example.com"), incluso un altro (o anche lo stesso) dominio di trust del pool di identità del workload.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 workloadPROJECT_NUMBER: il numero del progetto che contiene il pool di identità del workload
CERTIFICATE_MATERIAL: il certificato CA in formato PEM attendibile per l'emissione di certificati nel dominio di attendibilità. Il seguente comando può essere utilizzato 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'
Dopo aver creato la configurazione di attendibilità incorporata, devi aggiornare il pool di identità del workload con la configurazione di attendibilità.
Aggiorna il 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 del certificato della CA utilizzando il flag --inline-certificate-issuance-config-file. Se hai creato
una configurazione di attendibilità incorporata, devi aggiornare il pool di identità del workload
con la configurazione di attendibilità utilizzando il flag --inline-trust-config-file.
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 (cic.json) in formato 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 con la configurazione dell'emissione dei certificati e la 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/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID
state: ACTIVE
Questo output include i seguenti valori:
PROJECT_NUMBER: il numero del progettoREGION: la regione in cui si trova il pool di CA radiceROOT_CA_POOL_ID: l'ID del pool di CA radiceALGORITHM: l'algoritmo di crittografia utilizzato per generare la chiave privataCERTIFICATE_LIFETIME: la durata dei certificati del workload emessi dal pool di CA in secondiROTATION_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 (o anche lo stesso) dominio di trust del pool di identità del workload.CERTIFICATE_MATERIAL: il certificato CA in formato PEM considerato 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à di workload gestite a richiedere certificati dal pool di CA
Dopo aver associato la CA al pool di identità del workload, devi autorizzare le identità del workload gestite a richiedere certificati dal pool di CA.
Concedi il ruolo CA Service Workload Certificate Requester (
roles/privateca.workloadCertificateRequester) al dominio attendibile. 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_IDSostituisci quanto segue:
ROOT_CA_POOL_ID: l'ID del pool di CA radiceREGION: la regione del pool di CA radicePROJECT_NUMBER: il numero del progettoPer ottenere
PROJECT_NUMBERdaPROJECT_ID, esegui il comando seguente:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
WORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workloadPROJECT_ID: l'ID progetto
Concedi al dominio attendibile 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_IDSostituisci quanto segue:
ROOT_CA_POOL_ID: l'ID del pool di CA radiceREGION: la regione del pool di CA radicePROJECT_NUMBER: il numero del progettoWORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workloadPROJECT_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. Questa operazione 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
Nella console Google Cloud , vai alla pagina Bilanciamento del carico.
Nella sezione Configurazione backend, aggiungi i dettagli pertinenti per creare un servizio di backend.
Espandi la sezione Configurazioni avanzate.
Nella sezione Autenticazione del backend, seleziona l'opzione Identità gestita.
Per assegnare un'identità gestita al servizio di backend, nel campo Identità gestita, inserisci l'identità dei workload gestita che hai creato in precedenza.
Fai clic su Crea.
Continua i passaggi descritti in Configura il bilanciatore del carico per completare la configurazione del bilanciatore del carico.
gcloud
Per assegnare un'identità gestita al servizio di backend, aggiungi il flag
--identityquando utilizzi il comandogcloud 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' \ --globalSostituisci quanto segue:
BACKEND_SERVICE_NAME: il nome del servizio di backendHEALTH_CHECK_NAME: il nome del controllo di integritàWORKLOAD_IDENTITY_POOL_ID: ID pool di identità del workloadPROJECT_NUMBER: il numero del progettoNAMESPACE_ID: l'ID spazio dei nomiMANAGED_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.
Verifica 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à del 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 progettoHEALTH_CHECK_NAME: il nome del controllo di integritàBACKEND_SERVICE_NAME: il nome del servizio di backendPORT_NAME: il nome della portaREGION: la regione in cui si trova il pool di CA radiceWORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workloadPROJECT_NUMBER: il numero del progettoNAMESPACE_ID: l'ID spazio dei nomiMANAGED_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 Certificate Manager 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 workloadPROJECT_NUMBER: il numero del progettoNAMESPACE_ID: l'ID spazio dei nomiMANAGED_IDENTITY_ID: l'ID dell'identità gestitaCERTIFICATE_MATERIAL: l'X.509-SVID in formato con codifica PEM
Il certificato dell'identità gestita di Certificate Manager ha una proprietà
managedIdentity, che lo identifica come certificato
dell'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'X.509-SVID 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:
echo -e \ "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----" | openssl x509 -text -noout
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 workloadPROJECT_NUMBER: il numero del progettoNAMESPACE_ID: l'ID spazio dei nomiMANAGED_IDENTITY_ID: l'ID dell'identità gestita
Verifica che la configurazione dell'attendibilità di Gestione certificati contenga il campo spiffeTrustStores
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
nell'output) e tutti i bundle di attendibilità aggiuntivi specificati dal
campo WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.googadditionalTrustBundles 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 trust-configs 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 progettoCERTIFICATE_MATERIAL: il certificato CA in formato PEM considerato attendibile per l'emissione di certificati nel dominio di attendibilitàWORKLOAD_IDENTITY_POOL_ID: l'ID del pool di identità del workloadPROJECT_NUMBER: il numero del progettoMANAGED_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
- Configura l'autenticazione con identità dei workload gestita per Compute Engine
- Autentica i workload con altri workload tramite mTLS