Impersonificazione dell'account di servizio

Quando un'entità autenticata, ad esempio 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à di accedere a qualsiasi account di servizio possa accedere. Solo le entità autenticate con le autorizzazioni appropriate possono rappresentare 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 anche utilizzare l'impersonificazione 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.

L'impersonificazione degli account di servizio Google Cloud è simile ai metodi dell'API Amazon Web Services (AWS) Security Token Service 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 rappresentato dall'entità. Per impersonare l'account di servizio, l'entità autenticata riceve un token per l'account di servizio, quindi lo utilizza 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 Google Cloud CLI. Quando esegui un comando dell'interfaccia a riga di comando gcloud con questa impostazione, l'gcloud CLI crea credenziali di breve durata per l'account di servizio, quindi esegue il comando con quelle credenziali.

    Puoi anche utilizzare il flag --impersonate-service-account quando configuri il file delle credenziali predefinite dell'applicazione. Questa configurazione consente alle librerie client che supportano la rappresentazione di assumere automaticamente l'identità dell'account di servizio.

  • Crea credenziali di breve durata utilizzando l'API Service Account Credentials, quindi utilizza queste credenziali per autenticare una richiesta API.

    Le credenziali di breve durata hanno una durata limitata, con una durata di poche ore o inferiore, e non vengono aggiornate automaticamente. Creano meno rischi rispetto alle 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à dei carichi di lavoro.

    Quando un'applicazione utilizza un file di configurazione delle credenziali per accedere a Google Cloud, utilizza prima le credenziali specifiche dell'ambiente per ottenere una credenziale di breve durata per un account di servizio designato. Quindi, utilizza le 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 l'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, ti autentica sempre con le tue credenziali utente; non puoi impersonare un account di servizio per accedere alle risorse nella console Google Cloud.

Autenticazione senza furto d'identità

Esistono diversi modi per autenticarsi come account di servizio senza impersonare l'account di servizio di un carico di lavoro o di un utente:

  • Un carico di lavoro utilizza un account di servizio associato per l'autenticazione nelle 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 informazioni su 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 autenticarsi come account di servizio. L'utilizzo di una chiave di account di servizio per l'autenticazione come account di servizio prevede una sola identità autenticata, quella dell'account di servizio. Poiché è coinvolta una sola identità, l'utilizzo di una chiave non è l'impersonificazione degli 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 nel 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 il furto d'identità degli account di servizio

L'impersonificazione degli account di servizio è utile quando devi eseguire attività come le seguenti:

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

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

L'impersonificazione degli account di servizio è uno dei modi in cui puoi concedere agli utenti questo accesso elevato temporaneo. Per utilizzare un account di servizio per l'accesso elevato temporaneo, devi prima concedergli i ruoli IAM che vuoi concedere temporaneamente agli utenti. Quindi, consenti agli utenti di impersonare l'account di servizio, concedendo loro l'autorizzazione a 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, potrebbe essere necessario verificare se un insieme specifico di autorizzazioni è sufficiente per un'attività. Ad esempio, potresti voler verificare che un account di servizio possa comunque eseguire un'applicazione se rimuovi determinate autorizzazioni in eccesso. In alternativa, potresti aiutare un utente a risolvere i problemi di un'attività e verificare di essere in grado di eseguire un determinato comando con i ruoli IAM attuali.

Puoi utilizzare l'impersonificazione degli account di servizio per testare un insieme specifico di autorizzazioni. Innanzitutto, crea un account di servizio e concedigli uno o più ruoli IAM con le autorizzazioni che vuoi testare. Quindi, rappresenta 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, vedi Utilizzare il furto d'identità degli account di servizio.

Sviluppa applicazioni localmente

Quando sviluppi applicazioni localmente, in genere puoi autenticarti utilizzando le tue credenziali utente. Tuttavia, in alcune situazioni ciò 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.

Per queste situazioni, consigliamo di utilizzare l'impersonificazione degli account di servizio. L'utilizzo dell'impersonificazione degli account di servizio consente di evitare di utilizzare chiavi degli account di servizio, creando così ulteriori rischi per la sicurezza.

Per informazioni su come impersonare account di servizio per sviluppare applicazioni, consulta Furto d'identità 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 essere autenticate in Google Cloud. Un modo per autenticare queste applicazioni è utilizzare l'impersonificazione degli account di servizio.

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

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

Passaggi successivi