Questo documento descrive come configurare il provisioning automatico e la gestione del ciclo di vita delle identità dei workload gestite per Compute Engine. Configura i pool di CA per emettere certificati utilizzando Certificate Authority Service (CA), un servizio scalabile e a disponibilità elevata Google Cloud che semplifica e automatizza il deployment, la gestione e la sicurezza dei servizi CA. Per ogni VM viene eseguito il provisioning delle 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à dei workload gestite.
Abilita l'API Compute Engine:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (
roles/serviceusage.serviceUsageAdmin), che contiene l'serviceusage.services.enableautorizzazione. 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à dei workload gestite 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 mutuamente autenticate e criptate tra due VM Compute Engine. Le applicazioni dei workload in esecuzione sulle VM configurate possono utilizzare le credenziali X.509 per mTLS per VM mTLS. 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à dei 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 o lo sviluppatore di Compute deve creare istanze VM per il workload con un nome istanza, un ID istanza, un nome service account o un ID account di servizio corrispondenti.
Le identità dei workload gestite sono conformi allo standard open source
Secure Production Identity Framework for Everyone (SPIFFE).
Gli ID SPIFFE per Google Cloud i workload sono nel seguente formato:
spiffe://<TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_ID.
TRUST_DOMAIN corrisponde a un pool di identità dei workload di 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 limite di attendibilità comune. In un pool di identità dei workload, le identità sono organizzate in limiti amministrativi denominati 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 dichiarare un'identità gestita.
Per utilizzare le identità dei workload gestite per le tue applicazioni, devi eseguire le seguenti attività:
Amministratore della sicurezza:
- Crea identità dei workload gestite in un pool di identità dei workload.
- Definisci la policy di attestazione del workload.
- Configura Certificate Authority Service per emettere certificati per le identità dei workload gestite.
- Autorizza le identità dei workload gestite a richiedere certificati dal pool di CA.
- Definisci la configurazione di attendibilità ed emissione dei certificati all'interno del pool di identità dei workload.
Amministratore di Compute:
- Configura le istanze per utilizzare le identità dei workload per le singole istanze Compute Engine
- Accedi alle credenziali dei workload su un'istanza Linux.
Configurare le identità dei workload gestite in Identity and Access Management
Segui le istruzioni riportate in Configurare l'autenticazione delle identità dei workload gestite .
Queste istruzioni descrivono in dettaglio come completare le seguenti operazioni:
- Crea un pool di identità dei workload.
- Crea spazi dei nomi nel pool di identità dei workload. Utilizza gli spazi dei nomi per creare limiti amministrativi per le 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, puoi 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 basate sull'ID account di servizio.
- Crea una policy di attestazione del workload che consenta al tuo workload di ricevere le credenziali per l'identità del workload gestita. Le VM 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 le identità dei workload gestite:
- Configura il pool di CA radice
- Configura le CA subordinate
- Autorizza il pool di identità dei workload gestite a richiedere certificati dal pool di CA
Abilitare le identità dei workload gestite per le singole istanze di computing
Puoi abilitare le identità dei workload gestite per un'istanza di computing quando crei l'istanza o aggiornando la configurazione di un'istanza esistente.
Creare istanze con le identità dei workload gestite abilitate
Quando crei un'istanza di computing, per abilitare la funzionalità delle identità dei workload gestite per l'istanza, devi eseguire le seguenti operazioni:
- Se l'attestazione dell'istanza per l'identità del workload si basa su un account di servizio, specifica il account di servizio
Includi i flag
--identity,--identity-typee--identity-certificate
gcloud
Utilizza il gcloud alpha compute instances create comando
per creare una nuova istanza.
Se utilizzi un account di servizio per l'attestazione, includi le informazioni del service account quando crei l'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 ulteriori informazioni, 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-type=IDENTITY_TYPE \ --identity-certificate \ ...
Sostituisci quanto segue:
INSTANCE_NAME: un nome univoco per l' istanza. Per i dettagli sui nomi delle istanze validi, consulta Denominare le 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 gestita.PROJECT_ID: l'ID del progetto in cui è stato creato il account di servizio.TRUST_DOMAIN: l'ID del dominio di attendibilità, nel seguente formato:$POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
Il valore del dominio di attendibilità utilizza i seguenti segnaposto:
POOL_ID: il nome del pool di identità dei workloadPROJECT_NUMBER: il numero del progetto per il progetto in cui è stato creato il pool di identità dei workload
NAMESPACE: il nome dello spazio dei nomi che contiene la policy di attestazione del workload che autorizza il workload a dichiarare un'identità del workload gestitaWORKLOAD_IDENTIFIER: il nome dell' identità del workload gestita creata nello spazio dei nomi del pool di identità del workloadIDENTITY_TYPE: il formato dell'identità, con un valore di `SERVICE_ACCOUNT` o `WORKLOAD_IDENTITY`
Abilitare le identità dei workload gestite sulle istanze esistenti
Per abilitare le identità dei 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 servizio e l'istanza non ha già un service account collegato, crea e collega un account di servizio all'istanza.
- Abilita la funzionalità utilizzando il flag
--identity-certificatee specifica l'identità del workload gestita da 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 il account di servizio all'istanza.
Aggiorna la configurazione di un'istanza esistente per abilitare le identità dei 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 di attendibilità, nel seguente formato:none $POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
Il valore del dominio di attendibilità utilizza i seguenti segnaposto: *
POOL_ID: il nome del pool di identità dei workload *PROJECT_NUMBER: il numero del progetto in cui è stato creato il pool di identità dei workload +NAMESPACE: il nome dello spazio dei nomi che contiene la policy di attestazione del workload che autorizza il workload a dichiarare 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 dei workload su una VM Linux
Dopo aver creato e avviato un'istanza di computing che utilizza le identità dei workload gestite, l' Google Cloud infrastruttura (incluso l' agente guest) esegue automaticamente il provisioning e gestisce la rotazione delle credenziali per l'istanza.
I certificati dei workload, inclusi la chiave privata e i bundle di attendibilità, vengono inseriti in una directory specifica nel file system della VM: /var/run/secrets/workload-spiffe-credentials. Le applicazioni possono leggere direttamente i certificati, la chiave privata e il bundle di attendibilità dal file system per stabilire connessioni mTLS.
L'agente guest di Compute Engine sul sistema operativo guest esegue un job di aggiornamento del workload 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 ancoraggi 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.
Aggiornare le credenziali e il bundle di attendibilità
Il piano di controllo di Compute Engine ruota automaticamente le credenziali dell'identità del workload gestita e gli ancoraggi di attendibilità periodicamente.
Se le tue applicazioni utilizzano il file system per accedere alle credenziali dei 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.
Aggiornare la configurazione dell'emissione dei certificati e dell'attendibilità
Puoi modificare la configurazione dell'emissione dei certificati e la configurazione dell'attendibilità per una VM che utilizza le identità dei workload gestite.
Aggiornare le singole VM Compute Engine
Per aggiornare la configurazione dell'emissione dei certificati e la configurazione dell'attendibilità, aggiorna il pool di identità dei workload. Utilizza il
gcloud alpha iam workload-identity-pools update comando,
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à dei workload.CIC_JSON_FILE_PATH: il percorso del nuovo file di configurazione dell'emissione dei 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 workload eseguono l'autenticazione su domini di attendibilità diversi, devi specificare questo file. In caso contrario, puoi omettere l'impostazione--inline-trust-config.PROJECT_ID: il Google Cloud nome del progetto.
Risoluzione dei problemi
Per trovare metodi per diagnosticare e risolvere gli errori comuni relativi al recupero delle credenziali dei workload, consulta la documentazione Risolvere i problemi relativi all'autenticazione dei workload.
Per risolvere i problemi relativi a pool o policy di attestazione configurati in modo errato, consulta i log di audit per i pool di identità dei workload.
Passaggi successivi
- Scopri di più sui seguenti concetti: