Autentica i workload con altri workload tramite mTLS

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 scalabile e ad alta affidabilità 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 Workload Identity gestite.
  • Abilita l'API Compute Engine:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin). 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 Workload Identity gestite per l'autenticazione ad altri workload, 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.

Panoramica

Con le Workload Identity 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 Workload Identity gestite, puoi amministrare centralmente l'identità dei tuoi workload. Le VM Compute Engine possono essere autorizzate a ricevere una Workload Identity 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 account di servizio o un ID account di servizio corrispondenti.

Le Workload Identity 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. Il TRUST_DOMAIN corrisponde a un pool di identità del workload di Identity and Access Management (IAM).

Le Workload Identity 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à del workload, le identità sono organizzate in limiti 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 dichiarare un'identità gestita.

Per utilizzare le Workload Identity gestite per le tue applicazioni, devi eseguire le seguenti attività:

  1. Amministratore della sicurezza:

  2. Amministratore di Compute:

Configura le Workload Identity 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. Utilizza gli spazi dei nomi per creare limiti amministrativi per le Workload Identity gestite, ad esempio uno spazio dei nomi per ciascuna delle applicazioni di proprietà della tua organizzazione.
    • Crea una Workload Identity 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 la Workload Identity gestita. Le VM Compute Engine possono essere autorizzate a ricevere una Workload Identity 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 Workload Identity gestite:
      • Configura il pool di CA radice
      • Configura le CA subordinate
      • Autorizza il pool di identità del workload gestite a richiedere certificati dal pool di CA

Abilita le Workload Identity gestite per le singole istanze di computing

Puoi abilitare le Workload Identity gestite per un'istanza di computing quando crei l'istanza o aggiornando la configurazione di un'istanza esistente.

Crea istanze con le Workload Identity gestite abilitate

Quando crei un'istanza di computing, per abilitare la funzionalità Workload Identity gestite per l'istanza, devi eseguire le seguenti operazioni:

  • Se l'attestazione dell'istanza per la Workload Identity si basa su un account di servizio, specifica il account di servizio
  • Includi i --identity e i --identity-certificate flag

gcloud

Utilizza il gcloud compute instances create comando per creare una nuova istanza.

  1. 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 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 Denomina le risorse.
    • INSTANCE_ZONE: la zona in cui creare l' istanza.
    • SERVICE_ACCOUNT_NAME: il nome del account di servizio autorizzato a ricevere la Workload Identity 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à del workload
      • PROJECT_NUMBER: il numero del progetto per il 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 a dichiarare una Workload Identity gestita
    • WORKLOAD_IDENTIFIER: il nome della Workload Identity gestita creata nello spazio dei nomi del pool di identità del workload
  2. Abilita il provisioning automatico delle Workload Identity gestite utilizzando l' agente guest aggiornando l'impostazione nel file di configurazione dell'agente guest.

Abilita le Workload Identity gestite sulle istanze esistenti

Per abilitare le Workload Identity gestite per un'istanza di computing esistente, aggiorna l'istanza per configurare quanto segue:

  • Se l'attestazione dell'istanza per la Workload Identity 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-certificate e specifica quale Workload Identity gestita utilizzare con il flag --identity.
  • Riavvia la VM.

gcloud

Utilizza il comando gcloud compute instances update per aggiornare la configurazione di un'istanza.

  1. Se l'istanza non ha già un account di servizio collegato, collega il account di servizio all'istanza.

  2. Aggiorna la configurazione di un'istanza esistente per abilitare le Workload Identity gestite.

    gcloud 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'istanza
    • ZONE: la zona in cui si trova l'istanza
    • TRUST_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à del workload * PROJECT_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 a dichiarare una Workload Identity gestita + WORKLOAD_IDENTIFIER: il nome della Workload Identity gestita creata nello spazio dei nomi del pool di identità del workload

  3. Abilita il provisioning automatico delle Workload Identity gestite utilizzando l' agente guest aggiornando l'impostazione nel file di configurazione dell'agente guest.

  4. Arresta la VM.

    gcloud compute instances stop INSTANCE_NAME \
       --zone=ZONE
    

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza
    • ZONE: la zona in cui si trova l'istanza
  5. Avvia la VM.

    gcloud compute instances start INSTANCE_NAME \
       --zone=ZONE
    

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza
    • ZONE: la zona in cui si trova l'istanza

Accedi alle credenziali del workload su una VM Linux

Dopo aver creato e avviato un'istanza di computing che utilizza le Workload Identity gestite, l' Google Cloud infrastruttura (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 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 PEM
  • certificates.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.goog
    
  • config_status: un file di log contenente messaggi di errore.

Aggiorna le credenziali e il bundle di attendibilità

Il piano di controllo di Compute Engine ruota automaticamente le credenziali di Workload Identity gestite e gli ancoraggi di attendibilità periodicamente.

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 dei certificati e dell'attendibilità

Puoi modificare la configurazione dell'emissione dei certificati e la configurazione dell'attendibilità per una VM che utilizza le Workload Identity gestite.

Aggiorna le configurazioni del pool di identità del workload per un insieme di VM

Per aggiornare la configurazione dell'emissione dei certificati e la configurazione dell'attendibilità per un insieme di VM, aggiorna il pool di identità del workload. Utilizza il gcloud iam workload-identity-pools update comando, come mostrato nell'esempio seguente:

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 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.

Gli aggiornamenti alla configurazione dell'emissione dei certificati e alla configurazione dell'attendibilità del pool di identità del workload vengono implementati gradualmente nelle VM Compute Engine e nei MIG che partecipano al pool di identità del workload.

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 policy di attestazione configurati in modo errato, consulta i log di audit per i pool di identità del workload.

Passaggi successivi