Questo documento spiega come risolvere gli errori comuni relativi all' autenticazione dei workload con altri workload tramite mTLS.
Per ulteriori informazioni, consulta Risolvere i problemi relativi alla federazione delle identità per i workload.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
- Imposta una regione e una zona predefinite.
-
La directory delle credenziali generate non esiste
Se ricevi un errore che indica che la directory /var/run/secrets/workload-spiffe-credentials non esiste, procedi nel seguente modo:
Assicurati che l'istanza di computing supporti l'autenticazione da workload a workload utilizzando una delle seguenti interfacce per verificare che le Workload Identity gestite siano abilitate:
Console
Nella console Google Cloud , vai alla pagina Istanze VM.
Nella colonna Nome della pagina Istanze VM, fai clic sul nome dell'istanza per visualizzare ulteriori dettagli sull'istanza.
Nella sezione Sicurezza e accesso della pagina Dettagli, verifica che "Certificati di Workload Identity" abbia il valore "Attivato".
gcloud
Per verificare se la funzionalità Workload Identity gestite è abilitata per un'istanza di computing, utilizza il
gcloud alpha compute instances describecomando.gcloud alpha compute instances describe INSTANCE_NAME \ --zone=ZONE \ --format="table(name,zone,identityCertificate)"Sostituisci quanto segue:
INSTANCE_NAME: il nome dell'istanzaZONE: la zona in cui si trova l'istanza
REST
Per visualizzare i dettagli di un'istanza di computing, invia una
GETrichiesta alinstances.getmetodo. Se aggiungi un parametro di query$fieldsalla richiesta, puoi limitare l'output ai soli campi di interesse.GET https://compute.googleapis.com/compute/alpha/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME$fields=name,identityCertificate,identity
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui si trova l'istanzaZONE: la zona in cui si trova l'istanzaINSTANCE_NAME: il nome dell'istanza
Esamina i valori dell'istanza per
identityCertificateeidentity.Se la proprietà
identityCertificateè impostata sufalse, questa istanza di computing non supporta questa funzionalità.Per risolvere il problema, crea una nuova istanza che supporti l'autenticazione da workload a workload. Per i dettagli, vedi Abilitare le Workload Identity gestite sulle VM esistenti.
Assicurati che la VM esegua un sistema operativo guest con la versione dell'agente guest di Compute Engine 20231103.01 o successive. Utilizza gcloud CLI per visualizzare l'output della porta seriale per determinare la versione corrente dell'agente guest di Compute Engine:
gcloud compute instances get-serial-port-output INSTANCE_NAME | grep "GCE Agent Started"Sostituisci INSTANCE_NAME con il nome dell'istanza di computing.
Per aggiornare l'agente guest di Compute Engine, vedi Aggiornare l'ambiente guest.
Controlla i log di servizio per verificare che il timer systemd
gce-workload-cert-refresh.timersia riuscito a recuperare le credenziali del workload e il bundle di attendibilità.# View timer logs to see when the gce-workload-cert-refresh.timer last ran journalctl -u gce-workload-cert-refresh.timer # View service logs from gce-workload-cert-refresh.service journalctl -u gce-workload-cert-refresh.service
La directory delle credenziali generate contiene solo il file config_status
La directory delle credenziali generate, /var/run/secrets/workload-spiffe-credentials, potrebbe contenere solo config_status per una serie di motivi. Segui questi passaggi per risolvere il problema.
Controlla i contenuti del file
config_statusper assicurarti che la funzionalità Workload Identity gestite sia abilitata. Se la funzionalità non è abilitata utilizzando i valori appropriati, il file di log contiene il messaggio di erroreworkload certificate feature not enabled.Per risolvere il problema, crea una nuova istanza di computing che supporti l'autenticazione da workload a workload utilizzando uno dei seguenti metodi:
Controlla i contenuti del file
config_statusper assicurarti che non siano presenti errori dovuti a valori di attributi mancanti o a una configurazione non valida per l'emissione del certificato o la configurazione di attendibilità. Se esistono questi errori, aggiorna i valori di configurazione seguendo i passaggi descritti in Aggiornare l'emissione del certificato e la configurazione di attendibilità.Assicurati che le autorizzazioni corrette siano state concesse alle Workload Identity gestite nel pool di identità del workload per l'accesso ai pool di CA subordinate. Utilizza il seguente comando:
gcloud privateca pools get-iam-policy SUBORDINATE_CA_POOL_ID \ --location=SUBORDINATE_CA_POOL_REGION
Sostituisci quanto segue:
- SUBORDINATE_CA_POOL_ID: l'ID del pool di CA subordinate.
- SUBORDINATE_CA_POOL_REGION: la regione del pool di CA subordinate.
L'output di questo comando deve contenere quanto segue:
bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/POOL_ID/* role: roles/privateca.workloadCertificateRequesterNell'esempio precedente:
- PROJECT_NUMBER è il numero di progetto del tuo progetto.
- POOL_ID è l'ID del pool di identità del workload.
Se non vedi un output simile all'esempio precedente, concedi le autorizzazioni richieste come descritto in Autorizzare le Workload Identity gestite a richiedere certificati dal pool di CA.
Se il file
config_statusnon contiene messaggi di errore, controlla il valore diiam.googleapis.com/workload-identityall'interno del file.Il valore deve corrispondere a quanto segue:spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Nell'esempio precedente:
- PROJECT_NUMBER è il numero di progetto del progetto che contiene il pool di identità del workload gestite.
- POOL_ID è l'ID del pool di identità del workload.
- NAMESPACE_ID è l'ID dello spazio dei nomi nel pool di Workload Identity.
- MANAGED_IDENTITY_ID è l'ID della workload identity gestita.
Se il valore di
iam.googleapis.com/workload-identitynon è corretto, devi creare una nuova istanza di computing con il valore corretto, perché il valore dell'identità gestita può essere aggiornato solo durante la creazione dell'istanza.Se il file
config_statusnon contiene messaggi di errore, assicurati che la configurazione di attendibilità contenga una voce valida per il dominio di attendibilità SPIFFEPOOL_ID.global.PROJECT_NUMBER.workload.id.goog, che corrisponde al dominio di attendibilità SPIFFE sull'identità gestita assegnata all'istanza di computing. Per ulteriori informazioni, vedi Definire la configurazione di attendibilità.Se il file
config_statuscontiene messaggi di errore con il codice di erroreINTERNAL_ERROR, contatta l'assistenza clienti Google Cloud o il tuo Google Cloud contatto con il messaggio di errore.