Questo documento descrive come configurare il provisioning automatico e la gestione del ciclo di vita delle Workload Identity gestite per Compute Engine. Configura i pool di CA per emettere certificati utilizzando Certificate Authority Service (CA), un servizio Google Cloud scalabile e ad alta disponibilità che semplifica e automatizza il deployment, la gestione e la sicurezza dei servizi CA. Ogni VM viene sottoposta a provisioning con le credenziali X.509 dal pool di CA configurato. Queste credenziali possono essere utilizzate per stabilire connessioni mTLS.
Prima di iniziare
- Consulta la documentazione Panoramica delle identità di workload gestite.
Abilita l'API Compute Engine:
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 compute.googleapis.com
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare VM che utilizzano certificati di identità del workload gestita per l'autenticazione ad altri workload, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) -
Utente Service Account (
roles/iam.serviceAccountUser)
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.
Panoramica
Con le identità dei workload gestite per Compute Engine, puoi implementare comunicazioni autenticate e criptate reciprocamente tra due VM Compute Engine. Le applicazioni del workload in esecuzione sulle VM configurate possono utilizzare le credenziali X.509 per mTLS per VM. L'agente guest ruota automaticamente questi certificati mTLS e aggiorna le credenziali sulla VM.
Utilizzando le identità dei workload gestite, puoi amministrare centralmente l'identità per i tuoi workload. Le VM Compute Engine possono essere autorizzate a ricevere un'identità del workload basata su attributi chiave, come l'ID istanza, il nome dell'istanza o il account di servizio collegato. Affinché i workload vengano attestati, l'amministratore di calcolo o lo sviluppatore deve creare istanze VM per il workload con un nome istanza, un ID istanza, un nome account di servizio o un ID account di servizio corrispondenti.
Le identità del workload gestite sono conformi allo
standard SPIFFE (Secure Production Identity Framework for Everyone) open source.
Gli ID SPIFFE per i workload Google Cloud sono nel seguente formato:
spiffe://<TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_ID.
TRUST_DOMAIN corrisponde a un pool di identità del workload Identity and Access Management (IAM).
Le identità dei workload gestite sono definite all'interno di un pool di identità del workload, che funge da container di primo livello per contenere le identità dei workload che hanno un confine di trust comune. All'interno di un pool di identità del workload, le identità sono organizzate in confini amministrativi chiamati spazi dei nomi. Affinché un workload ottenga un'identità gestita, devi definire le policy di attestazione per autorizzarlo. Una policy di attestazione del workload garantisce che solo i workload attendibili possano asserire un'identità gestita.
Per utilizzare le identità del workload gestite per le tue applicazioni, devi eseguire le seguenti attività:
Amministratore della sicurezza:
- Crea identità di workload gestite in un pool di identità del workload.
- Definisci la policy di attestazione del workload.
- Configura Certificate Authority Service per emettere certificati per le identità dei workload gestite.
- Autorizza le identità del workload gestite a richiedere certificati dal pool di CA.
- Definisci la configurazione dell'emissione di attendibilità e certificati all'interno del pool di identità del workload.
Compute Administrator:
- Configura le istanze in modo che utilizzino le identità dei workload per le singole istanze Compute Engine
- Accedi alle credenziali del workload su un'istanza Linux.
Configura le identità di workload gestite in Identity and Access Management
Segui le istruzioni riportate in Configura l'autenticazione delle Workload Identity gestite .
Queste istruzioni descrivono in dettaglio come completare le seguenti operazioni:
- Crea un pool di identità del workload.
- Crea spazi dei nomi nel pool di identità del workload. Utilizzi gli spazi dei nomi per creare limiti amministrativi per le tue identità dei workload gestite, ad esempio uno spazio dei nomi per ciascuna delle applicazioni di proprietà della tua organizzazione.
- Crea un'identità del workload gestita in uno spazio dei nomi nel pool di identità del workload. Ad esempio, potresti creare uno spazio dei nomi per un'applicazione e creare identità gestite all'interno di questo spazio dei nomi per i microservizi che supportano l'applicazione.
- (Facoltativo) Crea un account di servizio per creare regole di attestazione in base all'ID account di servizio.
- Crea una policy di attestazione del workload che consenta al tuo workload di emettere credenziali per l'identità del workload gestita. Le VM di Compute Engine possono essere autorizzate a ricevere un'identità del workload gestita in base ad attributi chiave come l'ID istanza, il nome dell'istanza o il service account collegato.
- Configura Certificate Authority Service per emettere certificati per
identità dei workload gestite:
- Configurare il pool di CA radice
- Configura le CA subordinate
- Autorizza il pool di identità del workload gestito a richiedere certificati dal pool di CA
Abilita le identità di workload gestite per le singole istanze di calcolo
Puoi abilitare le identità del workload gestite per un'istanza di computing quando crei l'istanza o aggiornando la configurazione per un'istanza esistente.
Crea istanze con identità dei workload gestite abilitate
Quando crei un'istanza di computing, per abilitare la funzionalità delle identità di workload gestite per l'istanza, devi:
- Se l'attestazione dell'istanza per l'identità del workload si basa su un account di servizio, specifica quest'ultimo.
Includi i flag
--identitye--identity-certificate
gcloud
Utilizza il comando gcloud alpha compute instances create
per creare una nuova istanza.
Se utilizzi un account di servizio per l'attestazione, includi le informazioni del service account durante la creazione dell'istanza.
Puoi aggiungere altre righe al comando per configurare l'istanza, ad esempio il tipo di macchina e l'immagine, anziché utilizzare i valori predefiniti. Per saperne di più, consulta Crea e avvia un'istanza VM.
gcloud alpha compute instances create INSTANCE_NAME \ --zone=INSTANCE_ZONE \ --service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --identity=//TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER \ --identity-certificate \ ...
Sostituisci quanto segue:
INSTANCE_NAME: un nome univoco per l'istanza. Per informazioni dettagliate sui nomi delle istanze validi, consulta Denominazione delle risorse.INSTANCE_ZONE: la zona in cui creare l'istanza.SERVICE_ACCOUNT_NAME: il nome del account di servizio autorizzato a ricevere l'identità del workload gestito.PROJECT_ID: l'ID del progetto in cui è stato creato il account di servizio.TRUST_DOMAIN: l'ID del dominio attendibile, nel seguente formato:$POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
Il valore del dominio attendibile utilizza i seguenti segnaposto:
POOL_ID: il nome del pool di identità del workloadPROJECT_NUMBER: il numero del progetto in cui è stato creato il pool di identità del workload
NAMESPACE: il nome dello spazio dei nomi che contiene la policy di attestazione del workload che autorizza il workload ad asserire un'identità del workload gestitaWORKLOAD_IDENTIFIER: il nome dell'identità del workload gestita creata nello spazio dei nomi del pool di identità del workload
Abilita le identità di workload gestite sulle istanze esistenti
Per abilitare le identità del workload gestite per un'istanza di computing esistente, aggiorna l'istanza per configurare quanto segue:
- Se l'attestazione dell'istanza per l'identità del workload si basa su un account di serviziot e l'istanza non ha già un service account collegato, crea e collega unaccount di serviziot all'istanza.
- Attiva la funzionalità utilizzando il flag
--identity-certificatee specifica quale identità del workload gestita utilizzare con il flag--identity. Riavvia la VM.
gcloud
Utilizza il comando gcloud alpha compute instances update
per aggiornare la configurazione di un'istanza.
Se l'istanza non ha già un account di servizio collegato, collega ilaccount di serviziot all'istanza.
Aggiorna la configurazione di un'istanza esistente per abilitare le identità del workload gestite.
gcloud alpha compute instances update INSTANCE_NAME \ --zone=ZONE \ --identity-certificate \ --identity=//TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER
Sostituisci quanto segue:
INSTANCE_NAME: il nome dell'istanzaZONE: la zona in cui si trova l'istanzaTRUST_DOMAIN: l'ID del dominio attendibile, nel seguente formato:none $POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
Il valore del dominio attendibile utilizza i seguenti segnaposto: *
POOL_ID: il nome del pool di identità del workload *PROJECT_NUMBER: il numero di progetto del progetto in cui è stato creato il pool di identità del workload +NAMESPACE: il nome dello spazio dei nomi che contiene il criterio di attestazione del workload che autorizza il workload ad asserire un'identità del workload gestita +WORKLOAD_IDENTIFIER: il nome dell'identità del workload gestita creata nello spazio dei nomi del pool di identità del workloadArresta la VM.
gcloud alpha compute instances stop INSTANCE_NAME \ --zone=ZONE
Sostituisci quanto segue:
INSTANCE_NAME: il nome dell'istanzaZONE: la zona in cui si trova l'istanza
Avvia la VM.
gcloud alpha compute instances start INSTANCE_NAME \ --zone=ZONE
Sostituisci quanto segue:
INSTANCE_NAME: il nome dell'istanzaZONE: la zona in cui si trova l'istanza
Accedere alle credenziali del carico di lavoro su una VM Linux
Dopo aver creato e avviato un'istanza di computing che utilizza identità dei workload gestite, l'infrastruttura Google Cloud (incluso l'agente guest) esegue automaticamente il provisioning e gestisce la rotazione delle credenziali per l'istanza.
I certificati del workload, inclusi la chiave privata e i bundle di trust, vengono inseriti in una directory specifica del file system della VM: /var/run/secrets/workload-spiffe-credentials. Le applicazioni possono leggere i certificati, la chiave privata e il bundle di attendibilità dal file system direttamente per stabilire connessioni mTLS.
L'agente guest di Compute Engine sul sistema operativo guest esegue un job di aggiornamento del carico di lavoro e, se necessario, crea la directory /var/run/secrets/workload-spiffe-credentials. Le autorizzazioni
della directory sono impostate su 0755 (rwxr-xr-x).
La directory contiene i seguenti file creati con le autorizzazioni 0644 (rw-r--r--):
private_key.pem: una chiave privata in formato PEMcertificates.pem: un bundle di certificati X.509 in formato PEM che possono essere presentati ad altre VM come catena di certificati client o utilizzati come catena di certificati server.ca_certificates.pem: un bundle di certificati X.509 in formato PEM da utilizzare come ancore di attendibilità durante la convalida dei certificati dei peer.spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.googconfig_status: un file di log contenente messaggi di errore.
Aggiornamento delle credenziali e del bundle di attendibilità
Il control plane di Compute Engine ruota periodicamente le credenziali dell'identità del workload gestita e gli ancoraggi attendibili.
Se le tue applicazioni utilizzano il file system per accedere alle credenziali del workload e al bundle di attendibilità, l'agente guest di Compute Engine aggiorna automaticamente le credenziali e il bundle di attendibilità, ad esempio quando i certificati mTLS vengono ruotati.
Aggiorna la configurazione dell'emissione e dell'attendibilità dei certificati
Puoi modificare la configurazione dell'emissione dei certificati e la configurazione di attendibilità per una VM che utilizza le identità dei workload gestite.
Aggiorna singole VM di Compute Engine
Per aggiornare la configurazione dell'emissione dei certificati e la configurazione dell'attendibilità, aggiorna il pool di identità del workload. Utilizza il
comando gcloud alpha iam workload-identity-pools update,
come mostrato nell'esempio seguente:
gcloud alpha 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 nuovo file di configurazione dell'emissione di certificati in formato JSON (cic.json).TC_JSON_FILE_PATH: (facoltativo) il percorso del nuovo file di configurazione dell'attendibilità in formato JSON (tc.json). Se i tuoi carichi di lavoro eseguono l'autenticazione in domini attendibili diversi, devi specificare questo file. In caso contrario, puoi omettere l'impostazione--inline-trust-config.PROJECT_ID: il nome del progetto Google Cloud .
Risoluzione dei problemi
Per trovare metodi per diagnosticare e risolvere gli errori comuni relativi al recupero delle credenziali del workload, consulta la documentazione Risolvi i problemi relativi all'autenticazione dei workload.
Per risolvere i problemi relativi a pool o criteri di attestazione configurati in modo errato, consulta i log di controllo per i pool di identità del workload.
Passaggi successivi
- Scopri di più sui seguenti concetti: