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 sostituzione di identità dell'account di servizio. L'impersonificazione di un account di servizio consente a un'entità autenticata di accedere a qualsiasi elemento a cui può accedere l'account di servizio. Solo le entità autenticate con le autorizzazioni appropriate possono eseguire l'impersonificazione dei service account.
La rappresentazione è utile quando vuoi modificare le autorizzazioni di un utente senza modificare i criteri IAM (Identity and Access Management). Ad esempio, puoi utilizzare la simulazione di identità 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 la rappresentazione per sviluppare localmente applicazioni che possono essere eseguite solo come account di servizio o per autenticare le applicazioni in esecuzione al di fuori di Google Cloud.
La rappresentazione dell'account di servizio Google Cloud è simile ai metodi dell'API Security Token Service di Amazon Web Services (AWS), come AssumeRole
.
Come funziona la simulazione dell'identità degli account di servizio
L'impersonificazione degli account di servizio coinvolge sempre due identità: un'entità autenticata e l'account di servizio che l'entità impersona. Per usurpare l'identità dell'account di servizio, l'entità autenticata riceve un token per l'account di servizio, che utilizza per autenticarsi come account di servizio.
Esistono diversi modi per rubare l'identità di 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 gcloud CLI con questa impostazione, gcloud CLI crea credenziali di breve durata per l'account di servizio, quindi esegue il comando con queste credenziali.Puoi utilizzare 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 simulazione dell'identità di simulare automaticamente l'identità dell'account di servizio.Crea credenziali di breve durata utilizzando l'API Service Account Credentials, quindi utilizzale per autenticare una richiesta API.
Le credenziali di breve durata hanno una durata limitata, con durate di alcune ore o meno, e non vengono aggiornate automaticamente. Rappresentano un rischio minore rispetto alle credenziali permanenti, come le chiavi dell'account di servizio.
Utilizza un file di configurazione delle credenziali per configurare un'applicazione esterna in modo che rubi l'identità di un account di servizio. Questa opzione è disponibile solo per le applicazioni che utilizzano la federazione di Workload Identity.
Quando un'applicazione utilizza un file di configurazione delle credenziali per accedere a Google Cloud, utilizza innanzitutto le credenziali specifiche dell'ambiente per ottenere una credenziale di breve durata per un account di servizio designato. Poi, utilizza questa credenziale di breve durata per autenticarsi su Google Cloud.
Se un'entità accede alle risorse fingendosi un account di servizio, la maggior parte dei log di controllo include sia la sua identità sia quella dell'account di servizio che sta fingendo di essere. Per ulteriori informazioni, consulta Interpretazione dei log di controllo.
Quando utilizzi la console Google Cloud, ti autentichi sempre con le tue credenziali utente. Non puoi rubare l'identità di un account di servizio per accedere alle risorse nella console Google Cloud.
Autenticazione senza furto d'identità
Esistono diversi modi per consentire a un carico di lavoro o a un utente di autenticarsi come account di servizio senza simulare l'identità dell'account di servizio:
Un carico di lavoro utilizza un account di servizio collegato per autenticharsi alle 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 si autenticano su 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 dell'account di servizio per l'autenticazione come account di servizio comporta solo un'identità autenticata: quella dell'account di servizio. Poiché è coinvolta una sola identità, l'utilizzo di una chiave non è una sostituzione di identità 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 l'autorizzazione degli sviluppatori a eseguire codice su risorse con privilegi, ad esempio una sessione SSH con un'istanza VM, può creare rischi di escalation dei privilegi e di non ripudio.
Autorizzazioni obbligatorie
Per rubare l'identità di un account di servizio, devi disporre dell'autorizzazioneiam.serviceAccounts.getAccessToken
. Questa autorizzazione è presente in ruoli come il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
).
Per ulteriori informazioni sui ruoli richiesti per la rappresentazione, consulta Ruoli per l'autenticazione degli account di servizio.
Casi d'uso per l'impersonificazione dell'account di servizio
La simulazione dell'identità dell'account di servizio è utile quando devi svolgere attività come quelle elencate di seguito:
- Concedere a un utente l'accesso temporaneo con privilegi elevati
- Verificare se un insieme specifico di autorizzazioni è sufficiente per un'attività
- Sviluppare localmente applicazioni che possono essere eseguite solo come account di servizio
- Autentica le applicazioni esterne
Concedi l'accesso elevato temporaneo
In alcuni casi, potresti voler consentire a un utente di accedere temporaneamente a risorse specifiche. Ad esempio, potresti voler concedere a una persona un accesso aggiuntivo per consentirle di risolvere un incidente o consentire a una persona di accedere a dati sensibili per un periodo di tempo limitato dopo aver registrato una giustificazione.
La rappresentazione di un account di servizio è uno dei modi in cui puoi concedere agli utenti questo accesso temporaneo con privilegi elevati. Per utilizzare un account di servizio per un accesso elevato temporaneo, devi prima concedergli i ruoli IAM che vuoi assegnare temporaneamente agli utenti. Poi, consenti agli utenti di impersonare l'account di servizio, o concedendo loro l'autorizzazione a farlo o utilizzando un broker di token per emettere una credenziale di breve durata per l'account di servizio.
Per scoprire di più sui metodi per concedere agli utenti l'accesso elevato temporaneo, consulta la 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 verificare che un account servizio possa comunque eseguire un'applicazione se rimuovi determinate autorizzazioni in eccesso. In alternativa, potresti aiutare un utente a risolvere un problema relativo a un'attività e voler verificare che possa eseguire un determinato comando con i suoi attuali ruoli IAM.
Puoi utilizzare l'impersonificazione dell'account di servizio per testare un insieme specifico di autorizzazioni. Innanzitutto, crea un account di servizio e assegnagli uno o più ruoli IAM con le autorizzazioni che vuoi testare. Quindi, rubare l'identità dell'account di servizio e tentare l'attività. Questo metodo ti consente di testare le autorizzazioni senza dover creare account utente di test o modificare le tue autorizzazioni IAM.
Per scoprire come rubare l'identità degli account di servizio, vedi Utilizzare l'impersonificazione degli account di servizio.
Sviluppare applicazioni localmente
Quando sviluppi applicazioni localmente, in genere puoi autenticarti utilizzando le tue credenziali utente. Tuttavia, in alcuni casi, questo potrebbe non essere possibile, ad esempio se vuoi autenticarti in un servizio che richiede un token con un segmento di pubblico personalizzato, che in genere gli utenti non possono configurare. In questi casi, devi autenticarti come account di servizio anziché con le credenziali utente.
Per queste situazioni, consigliamo di utilizzare la rappresentazione dell'account di servizio. L'utilizzo dell'impersonificazione dell'account di servizio ti consente di evitare di utilizzare le chiavi degli account di servizio, che rappresentano un ulteriore rischio per la sicurezza.
Per scoprire come assumere l'identità degli 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 autenticarsi su Google Cloud. Un modo per autenticare queste applicazioni è utilizzare l'impersonificazione dell'account di servizio.
Per consentire all'applicazione di simulare l'identità di un account di servizio, devi prima configurare la federazione delle identità per i carichi di lavoro, che fornisce un'identità autenticata per l'applicazione. Poi, puoi utilizzare un file di configurazione delle credenziali per configurare l'applicazione in modo che impersoni un account di servizio.
Sebbene sia possibile utilizzare le chiavi dell'account di servizio per autenticare le applicazioni esterne, sconsigliamo vivamente di farlo. Le chiavi degli account di servizio rappresentano un rischio aggiuntivo per la sicurezza e devono essere evitate, se possibile.
Passaggi successivi
- Scopri come utilizzare l'impersonificazione degli account di servizio.
- Scopri di più sull'accesso temporaneo con privilegi elevati.
- Crea credenziali di breve durata per impersonare un account di servizio.