Impersonificazione degli account di servizio

Quando un'entità autenticata, come un utente o un altro account di servizio, si autentica come account di servizio per ottenere le autorizzazioni dell'account di servizio, si parla di impersonificazione dell'account di servizio. L'identità di un account di servizio consente a un'entità autenticata di accedere a qualsiasi account di servizio a cui può accedere. Solo le entità autenticate con le autorizzazioni appropriate possono impersonare gli account di servizio.

Il furto d'identità è utile quando vuoi modificare le autorizzazioni di un utente senza cambiare i criteri IAM (Identity and Access Management). Ad esempio, puoi utilizzare la rappresentazione per concedere temporaneamente a un utente un accesso elevato o per verificare se un insieme specifico di autorizzazioni è sufficiente per un'attività. Puoi utilizzare la rappresentazione anche per sviluppare localmente applicazioni che possono essere eseguite solo come account di servizio o per autenticare le applicazioni eseguite al di fuori di Google Cloud.

La simulazione dell'identità degli account di servizio Google Cloud è simile ai metodi dell'API Security Token Service di Amazon Web Services (AWS) come AssumeRole.

Come funziona l'impersonificazione degli account di servizio

L'impersonificazione degli account di servizio coinvolge sempre due identità: un'entità autenticata e l'account di servizio che impersona. Per impersonare l'account di servizio, l'entità autenticata riceve un token per l'account di servizio, quindi utilizza quel token per autenticarsi come account di servizio.

Esistono diversi modi per impersonare un account di servizio:

  • Imposta il flag --impersonate-service-account o la proprietà impersonate-service-account quando esegui un comando di Google Cloud CLI. Quando esegui un comando gcloud CLI con questa impostazione, gcloud CLI crea credenziali di breve durata per l'account di servizio, quindi esegue il comando con quelle credenziali.

    Puoi usare il flag --impersonate-service-account anche durante la configurazione del file delle credenziali predefinite dell'applicazione. Questa configurazione consente alle librerie client che supportano la rappresentazione per impersonare automaticamente l'account di servizio.

  • Creare credenziali di breve durata utilizzando l'API Service Account Credentials, quindi utilizzare quelle credenziali per autenticare una richiesta API.

    Le credenziali di breve durata hanno una durata limitata, con una durata di appena alcune ore o meno, e non vengono aggiornate automaticamente. Creano meno rischi rispetto a credenziali di lunga durata, come le chiavi degli account di servizio.

  • Utilizza un file di configurazione delle credenziali per configurare un'applicazione esterna per impersonare un account di servizio. Questa opzione è disponibile solo per le applicazioni che utilizzano la federazione delle identità per i carichi di lavoro.

    Quando un'applicazione utilizza un file di configurazione delle credenziali per accedere a Google Cloud, prima utilizza le proprie credenziali specifiche dell'ambiente per ottenere una credenziale di breve durata per un account di servizio designato. Quindi, utilizza queste credenziali di breve durata per l'autenticazione su Google Cloud.

Se un'entità accede alle risorse mentre rappresenta un account di servizio, la maggior parte dei log di controllo include sia la sua identità sia l'identità dell'account di servizio che sta impersonando. Per ulteriori informazioni, consulta Interpretazione degli audit log.

Quando utilizzi la console Google Cloud, esegui sempre l'autenticazione con le tue credenziali utente. Non puoi impersonare un account di servizio per accedere alle risorse nella console Google Cloud.

Autenticazione senza impersonificazione

Un carico di lavoro o un utente possono autenticarsi come account di servizio senza impersonare l'account di servizio in diversi modi:

  • Un carico di lavoro utilizza un account di servizio collegato per l'autenticazione con le API di Google. In questo caso, l'account di servizio collegato funge da identità del carico di lavoro ed è l'unica identità autenticata coinvolta nella richiesta.

    Per scoprire come i carichi di lavoro vengono autenticati in Google Cloud, consulta Identità per i carichi di lavoro.

  • Un'entità utilizza una chiave dell'account di servizio per l'autenticazione come account di servizio. L'utilizzo di una chiave dell'account di servizio per l'autenticazione come account di servizio prevede solo un'identità autenticata, ovvero quella dell'account di servizio. Poiché è coinvolta una sola identità, l'uso di una chiave non è la rappresentazione dell'account di servizio.

In questi casi, gli audit log registrano solo l'identità dell'account di servizio. Non registrano altre identità, ad esempio le identità degli utenti che hanno eseguito il codice sul carico di lavoro o le identità delle persone che hanno utilizzato la chiave dell'account di servizio per l'autenticazione. Di conseguenza, l'utilizzo delle chiavi degli account di servizio o la concessione agli sviluppatori dell'autorizzazione per eseguire il codice su risorse con privilegi, ad esempio una sessione SSH per un'istanza VM, possono creare rischi di escalation dei privilegi e di non rifiuto.

Autorizzazioni obbligatorie

Per impersonare un account di servizio, devi disporre dell'autorizzazione iam.serviceAccounts.getAccessToken. Questa autorizzazione riguarda ruoli ad esempio il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator).

Per ulteriori informazioni sui ruoli richiesti per il furto d'identità, consulta Ruoli per l'autenticazione degli account di servizio.

Casi d'uso per la simulazione dell'identità degli account di servizio

La simulazione dell'identità degli account di servizio è utile quando devi eseguire attività come le seguenti:

  • Concedere a un utente un accesso elevato temporaneo
  • Verificare se un insieme specifico di autorizzazioni è sufficiente per un'attività
  • Sviluppa localmente applicazioni che possono essere eseguite solo come account di servizio
  • Autentica le applicazioni esterne

Concedi un accesso elevato temporaneo

In alcuni casi, potresti voler consentire a un utente di accedere temporaneamente a risorse specifiche. Ad esempio, potresti voler concedere a qualcuno l'accesso aggiuntivo in modo che possa risolvere un incidente o consentire a qualcuno di accedere a dati sensibili per un periodo di tempo limitato dopo aver registrato una giustificazione.

La simulazione dell'identità degli account di servizio è uno dei modi con cui puoi concedere agli utenti questo accesso elevato temporaneo. Per utilizzare un account di servizio per l'accesso elevato temporaneo, devi prima assegnare i ruoli IAM che vuoi assegnare temporaneamente agli utenti. Quindi, consenti agli utenti di impersonare l'account di servizio, concedendo loro l'autorizzazione per impersonare l'account di servizio o utilizzando un token broker per emettere una credenziale di breve durata per l'account di servizio.

Per saperne di più sui metodi per concedere agli utenti un accesso elevato temporaneo, consulta Panoramica dell'accesso elevato temporaneo.

Test delle autorizzazioni

In alcuni casi, potresti voler verificare se un insieme specifico di autorizzazioni è sufficiente per un'attività. Ad esempio, potresti voler confermare che un account di servizio possa comunque eseguire un'applicazione se rimuovi determinate autorizzazioni in eccesso. Oppure, potresti aiutare un utente a risolvere i problemi di un'attività e vuoi verificare di poter eseguire un determinato comando con i ruoli IAM attuali.

Puoi utilizzare la simulazione dell'identità degli account di servizio per testare un insieme specifico di autorizzazioni. In primo luogo, crea un account di servizio e concedigli uno o più ruoli IAM con le autorizzazioni che vuoi testare. Quindi, impersona l'account di servizio e prova a eseguire l'attività. Questo metodo consente di testare le autorizzazioni senza dover creare account utente di test o modificare le tue autorizzazioni IAM.

Per scoprire come impersonare gli account di servizio, consulta Utilizzare il furto dell'identità degli account di servizio.

Sviluppa applicazioni localmente

Quando sviluppi applicazioni in locale, in genere puoi autenticarti utilizzando le tue credenziali utente. Tuttavia, in alcune situazioni potrebbe non essere possibile, ad esempio se vuoi eseguire l'autenticazione per un servizio che richiede un token con un segmento di pubblico personalizzato, che gli utenti in genere non possono configurare. In questi casi, devi autenticarti come account di servizio anziché con le tue credenziali utente.

In questi casi, consigliamo di utilizzare la simulazione dell'identità degli account di servizio. La simulazione dell'identità degli account di servizio ti consente di evitare di utilizzare chiavi degli account di servizio, il che crea ulteriori rischi per la sicurezza.

Per scoprire come impersonare gli account di servizio per sviluppare applicazioni, consulta Impersonificazione degli account di servizio.

Autentica le applicazioni esterne

Per accedere alle risorse Google Cloud, le applicazioni in esecuzione al di fuori di Google Cloud devono eseguire l'autenticazione in Google Cloud. Un modo per autenticare queste applicazioni è utilizzare la simulazione dell'identità degli account di servizio.

Per consentire alla tua applicazione di impersonare un account di servizio, devi prima configurare la federazione delle identità per i carichi di lavoro, che fornisce un'identità autenticata per la tua applicazione. Quindi, puoi utilizzare un file di configurazione delle credenziali per configurare la tua applicazione in modo da rubare l'identità di un account di servizio.

Sebbene sia possibile utilizzare le chiavi degli account di servizio per autenticare le applicazioni esterne, ti consigliamo vivamente di non farlo. Le chiavi degli account di servizio creano ulteriori rischi per la sicurezza e devono essere evitate, se possibile.

Passaggi successivi