Quando un'entità autenticata, ad esempio un utente o un altro account di servizio, esegue l'autenticazione come account di servizio per ottenere le autorizzazioni del service account, si parla di simulazione dell'identità del account di servizio. La simulazione dell'identità di un account di servizio consente a un'entità autenticata di accedere a tutto ciò a cui può accedere ilaccount di serviziot. Solo le entità autenticate con le autorizzazioni appropriate possono simulare l'identità dei service account.
L'impersonificazione è utile quando vuoi modificare le autorizzazioni di un utente senza modificare le tue policy Identity and Access Management (IAM). Ad esempio, puoi utilizzare l'impersonificazione per concedere temporaneamente a un utente un accesso con privilegi elevati 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 service account o per autenticare applicazioni eseguite al di fuori di Google Cloud.
La simulazione dell'identità del service account è simile ai metodi dell'API Security Token Service di Amazon Web Services (AWS) come AssumeRole.Google Cloud
Come funziona la simulazione dell'identità dei account di servizio
La simulazione dell'identità del service account coinvolge sempre due identità: un'entità autenticata e il account di servizio che l'entità simula. Per impersonare ilaccount di serviziot, l'entità autenticata riceve un token per iaccount di serviziont, quindi utilizza questo token per autenticarsi come service account.
Esistono diversi modi per rappresentare un account di servizio:
Imposta il flag
--impersonate-service-accounto la proprietàimpersonate-service-accountquando esegui un comando Google Cloud CLI. Quando esegui un comando gcloud CLI con questa impostazione, gcloud CLI crea credenziali temporanee per il account di servizio, quindi esegue il comando con queste credenziali.Puoi anche utilizzare il flag
--impersonate-service-accountdurante la configurazione del file delle credenziali predefinite dell'applicazione. Questa configurazione consente alle librerie client che supportano la rappresentazione di identità di rappresentare automaticamente iaccount di serviziont.Crea credenziali di breve durata utilizzando l'API Service Account Credentials, poi utilizza queste credenziali per autenticare una richiesta API.
Le credenziali di breve durata hanno una durata limitata, di poche ore o meno, e non vengono aggiornate automaticamente. Creano meno rischi rispetto alle credenziali di lunga durata, come le chiavi dell'account di servizio.
Utilizza un file di configurazione delle credenziali per configurare un'applicazione esterna in modo che simuli 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 uaccount di serviziont designato. Poi, utilizza questa credenziale di breve durata per autenticarsi a Google Cloud.
Se un'entità accede alle risorse impersonando un account di servizio, la maggior parte dei log di controllo include sia la sua identità sia quella delaccount di serviziot che sta impersonando. Per ulteriori informazioni, vedi Interpretare i log di controllo.
Quando utilizzi la console Google Cloud , esegui sempre l'autenticazione con le tue credenziali utente. Non puoi rappresentare un account di servizio per accedere alle risorse nella consoleGoogle Cloud .
Autenticazione senza rappresentazione
Esistono diversi modi per un workload o un utente di autenticarsi come service account senza simulare l'identità del account di servizio:
Un workload utilizza un service account collegato per autenticarsi alle API di Google. In questo caso, il account di servizio collegato funge da identità del workload ed è l'unica identità autenticata coinvolta nella richiesta.
Per scoprire come i workload si autenticano in Google Cloud, consulta Identità per i workload.
Un'entità utilizza una chiave del account di servizio per autenticarsi come account di servizio. L'utilizzo di una chiave del account di servizio per l'autenticazione come account di servizio prevede una sola identità autenticata: quella del account di servizio. Poiché è coinvolta una sola identità, l'utilizzo di una chiave non è una simulazione dell'identità del 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 workload o le identità delle persone che hanno utilizzato la chiave deaccount di serviziont per l'autenticazione. Di conseguenza, l'utilizzo di chiavi del account di servizio o la concessione agli sviluppatori dell'autorizzazione per eseguire codice su risorse privilegiate, ad esempio una sessione SSH a un'istanza VM, può creare rischi di escalation dei privilegi e di non ripudio.
Autorizzazioni obbligatorie
Per rappresentare un account di servizio, devi disporre dell'autorizzazione
iam.serviceAccounts.getAccessToken. Questa autorizzazione è inclusa in ruoli
come il ruolo Creatore token account di servizio
(roles/iam.serviceAccountTokenCreator).
Per saperne di più sui ruoli richiesti per la simulazione dell'identità, consulta Ruoli per l'account di servizio account.
Casi d'uso per la simulazione dell'identità dei account di servizio
La simulazione dell'identità dei service account è utile quando devi svolgere attività come le seguenti:
- Concedere a un utente l'accesso temporaneo con privilegi elevati
- Testare se un insieme specifico di autorizzazioni è sufficiente per un'attività
- Sviluppare localmente applicazioni che possono essere eseguite solo come account di servizio
- Autenticare applicazioni esterne
Concedere 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 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 che ha registrato una giustificazione.
L'imitazione del service account è uno dei modi per concedere agli utenti questo accesso temporaneo con privilegi elevati. Per utilizzare un account di servizio per l'accesso temporaneo con privilegi elevati, devi prima concedergli i ruoli IAM che vuoi assegnare temporaneamente agli utenti. Poi, consenti agli utenti di impersonare il account di servizio, concedendo loro l'autorizzazione a impersonare il account di servizio o utilizzando un broker di token per emettere una credenziale di breve durata per il account di servizio.
Per scoprire di più sui metodi per concedere agli utenti l'accesso temporaneo con privilegi elevati, consulta la panoramica dell'accesso temporaneo con privilegi elevati.
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 service account possa ancora eseguire un'applicazione se rimuovi determinate autorizzazioni in eccesso. In alternativa, potresti aiutare un utente a risolvere i problemi relativi a un'attività e voler verificare che possa eseguire un determinato comando con i suoi ruoli IAM attuali.
Puoi utilizzare la simulazione dell'identità del 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. Poi, simula l'account di servizio e tenta di eseguire 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 simulare l'identità dei service account, consulta Utilizza la account di servizio account.
Sviluppare applicazioni localmente
Quando sviluppi applicazioni in locale, 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 a 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 tue credenziali utente.
In queste situazioni, consigliamo di utilizzare la simulazione dell'identità del account di servizio. L'utilizzo della simulazione dell'identità del account di servizio ti consente di evitare di utilizzare le chiavi del service account, che creano un rischio per la sicurezza aggiuntivo.
Per scoprire come simulare l'identità dei service account per sviluppare applicazioni, vedi Simulazione dell'identità dei service account.
Autenticare applicazioni esterne
Per accedere alle risorse Google Cloud , le applicazioni in esecuzione al di fuori diGoogle Cloud devono autenticarsi su Google Cloud. Un modo per autenticare queste applicazioni è utilizzare la simulazione dell'identità del account di servizio.
Per consentire alla tua 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 la tua applicazione. Poi, puoi utilizzare un file di configurazione delle credenziali per configurare la tua applicazione in modo che simuli l'identità di un account di servizio.
Sebbene sia possibile utilizzare le chiavi del account di servizio per autenticare applicazioni esterne, lo sconsigliamo vivamente. Le chiavi del service account creano un rischio per la sicurezza aggiuntivo e devono essere evitate quando possibile.
Passaggi successivi
- Scopri come utilizzare account di servizio account.
- Scopri di più sull'accesso temporaneo con privilegi elevati.
- Crea credenziali di breve durata per impersonare un account di servizio.
- Scopri le best practice per l'utilizzo dei service account.