Ruoli per l'autenticazione degli account di servizio

Le entità possono utilizzare gli account di servizio per l'autenticazione in diversi modi. Ogni tipo di autenticazione richiede che l'entità disponga di autorizzazioni specifiche IAM (Identity and Access Management) nell'account di servizio.

In questa pagina vengono descritti i ruoli che puoi concedere alle entità per consentire loro di assumere l'identità degli account di servizio o collegare account di servizio alle risorse. Descrive inoltre le autorizzazioni necessarie negli scenari comuni.

Per scoprire i diversi modi per eseguire l'autenticazione con un account di servizio, vedi Credenziali dell'account di servizio e Impersonificazione degli account di servizio.

Ruoli dell'account di servizio

Questa sezione descrive i ruoli che consentono alle entità di eseguire l'autenticazione con gli account di servizio. Per scoprire come concedere e revocare questi ruoli, consulta Gestire l'accesso agli account di servizio.

Ruolo Utente account di servizio

Il ruolo Utente account di servizio (roles/iam.serviceAccountUser) consente a un'entità di associare un account di servizio a una risorsa. Quando il codice in esecuzione su quella risorsa deve essere autenticato, può ottenere le credenziali per l'account di servizio collegato.

Questo ruolo non consente alle entità di creare credenziali di breve durata per gli account di servizio o di utilizzare il flag --impersonate-service-account per Google Cloud CLI. Per completare queste attività, devi disporre del ruolo Creatore token account di servizio nell'account di servizio.

Ruolo Creatore token account di servizio

Il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) consente alle entità di creare credenziali di breve durata per un account di servizio.

Il ruolo Creatore token account di servizio consente di creare i seguenti tipi di credenziali di breve durata:

  • Token di accesso OAuth 2.0, utilizzabili per l'autenticazione con le API di Google
  • Token ID OpenID Connect (OIDC)
  • JWT (JSON Web Token) firmati e blob binari

Il ruolo Creatore token account di servizio consente inoltre alle entità di utilizzare il flag --impersonate-service-account per gcloud CLI. Quando utilizzi questo flag, gcloud CLI crea automaticamente credenziali di breve durata per l'account di servizio.

Le autorizzazioni del ruolo includono:

  • iam.serviceAccounts.getAccessToken: consente di creare token di accesso OAuth 2.0
  • iam.serviceAccounts.getOpenIdToken: consente di creare token ID OpenID Connect (OIDC)
  • iam.serviceAccounts.implicitDelegation: consente agli account di servizio di ricevere token in una catena di delega
  • iam.serviceAccounts.signBlob: consente di firmare blob binari
  • iam.serviceAccounts.signJwt: ti consente di firmare JWT

Creatore di token di identità OpenID Connect dell'account di servizio

Il ruolo Creatore token identità OpenID Connect dell'account di servizio (roles/iam.serviceAccountOpenIdTokenCreator) consente alle entità di creare token ID OIDC di breve durata. Se devi solo creare token ID OIDC, utilizza questo ruolo. Se devi creare altri tipi di token, utilizza invece il ruolo Creatore token account di servizio.

Il ruolo include l'autorizzazione iam.serviceAccounts.getOpenIdToken, che consente di creare un token ID OIDC.

Ruolo Utente Workload Identity

Il ruolo Utente Workload Identity (roles/iam.workloadIdentityUser) consente alle entità di impersonare gli account di servizio dei carichi di lavoro GKE.

Le autorizzazioni del ruolo includono:

  • iam.serviceAccounts.getAccessToken: consente di creare token di accesso OAuth 2.0
  • iam.serviceAccounts.getOpenIdToken: consente di creare token ID OpenID Connect (OIDC)

Autorizzazioni dell'account di servizio per scenari comuni

Gli account di servizio possono essere utilizzati in molti scenari diversi e ciascuno di essi richiede determinate autorizzazioni. Questa sezione descrive gli scenari comuni e le autorizzazioni richieste.

Collegamento degli account di servizio alle risorse

Se vuoi avviare un job a lunga esecuzione che si autentica come account di servizio, devi collegare un account di servizio alla risorsa che eseguirà il job.

Autorizzazioni:

  • Autorizzazioni per creare la risorsa
  • iam.serviceAccounts.actAs

Per trovare i ruoli che includono queste autorizzazioni, cerca le autorizzazioni nell'elenco dei ruoli.

Esistono diverse risorse Google Cloud che possono eseguire job a lunga esecuzione come account di servizio. Alcuni esempi di queste risorse includono:

  • VM di Compute Engine
  • App di App Engine
  • Cloud Functions

Quando crei queste risorse, hai la possibilità di collegare un account di servizio. Questo account di servizio funge da identità della risorsa.

Per creare una risorsa e collegare un account di servizio, devi disporre delle autorizzazioni per creare la risorsa e l'autorizzazione per collegare l'account di servizio alle risorse. Autorizzazione per collegare gli account di servizio alle risorse fornite da qualsiasi ruolo che include l'autorizzazione iam.serviceAccounts.actAs, ad esempio il ruolo Utente account di servizio (roles/iam.serviceAccountUser).

Dopo aver creato la risorsa e aver collegato un account di servizio, puoi avviare un job a lunga esecuzione sulla risorsa. Il job viene eseguito come account di servizio associato alla risorsa e utilizza questo account di servizio per autorizzare le richieste alle API Google Cloud.

Per scoprire di più su come collegare gli account di servizio alle risorse, consulta Collegamento di un account di servizio a una risorsa.

Furto d'identità di un account di servizio

Autorizzazioni:

  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt
  • iam.serviceAccounts.implicitDelegation

Ruoli:

  • roles/iam.serviceAccountTokenCreator (Creatore token account di servizio)

Una volta concesse le autorizzazioni richieste, un utente (o un altro account di servizio) può assumere l'identità dell'account di servizio in alcuni scenari comuni.

Innanzitutto, l'utente può autenticarsi come account di servizio. Ad esempio, possono ottenere credenziali di breve durata per l'account di servizio utilizzando l'autorizzazione iam.serviceAccounts.getAccessToken e chiamando il metodo generateAccessToken(). In alternativa, possono utilizzare il flag --impersonate-service-account per gcloud CLI per rappresentare l'account di servizio. Quando un utente si autentica come account di servizio, può inviare comandi a Google Cloud e può accedere a tutte le risorse a cui ha accesso l'account di servizio.

In secondo luogo, l'utente può ottenere gli artefatti firmati dalla chiave privata gestita da Google dell'account di servizio utilizzando l'autorizzazione iam.serviceAccounts.signBlob e chiamando il metodo signBlob() o signJwt(). La chiave privata gestita da Google viene sempre conservata come deposito a garanzia e non viene mai esposta direttamente. signBlob() consente la firma di payload arbitrari (come gli URL firmati da Cloud Storage), mentre signJwt() consente solo di firmare JWT corretti.

Infine, l'utente può impersonare l'account di servizio senza mai recuperare una credenziale per l'account di servizio. Si tratta di un caso d'uso avanzato ed è supportato solo per l'accesso programmatico utilizzando il metodo generateAccessToken(). In scenari con almeno tre account di servizio, ovvero A, B e C: l'account di servizio A può ottenere un token di accesso per l'account di servizio C se all'account di servizio A viene concessa l'autorizzazione iam.serviceAccounts.implicitDelegation su B e a B viene concessa l'autorizzazione iam.serviceAccounts.getAccessToken per C.

Generazione di token ID OpenID Connect (OIDC)

Autorizzazioni:

  • iam.serviceAccounts.getOpenIdToken

Ruoli:

  • roles/iam.serviceAccountOpenIdTokenCreator (Creatore token di identità OpenID Connect dell'account di servizio)

Un utente (o un servizio) può generare un token JWT compatibile con OpenID Connect (OIDC) firmato dal provider OIDC di Google (accounts.google.com) che rappresenta l'identità dell'account di servizio utilizzando l'autorizzazione iam.serviceAccounts.getOpenIdToken.

Questi token non sono accettati direttamente dalla maggior parte delle API di Google senza che la tua organizzazione esegua il deployment di una federazione delle identità aggiuntiva per concedere l'accesso a Google. Esistono alcune eccezioni, ad esempio Identity-Aware Proxy, che consente l'accesso basato su OIDC alle applicazioni eseguite dagli utenti.

Generazione di chiavi private esterne

Autorizzazioni:

  • iam.serviceAccountKeys.create

Ruoli:

  • roles/editor (editor)
  • roles/iam.serviceAccountKeyAdmin (amministratore chiavi account di servizio)

Un utente o un servizio possono generare materiale esterno della chiave privata (RSA) che può essere utilizzato per eseguire l'autenticazione direttamente su Google come account di servizio. Questo materiale chiave può quindi essere utilizzato con le librerie Credenziali predefinite dell'applicazione (ADC) o con il comando gcloud auth activate-service-account. Chiunque riesca ad accedere al materiale delle chiavi avrà quindi l'accesso completo a tutte le risorse a cui ha accesso l'account di servizio. Questo materiale con chiave privata deve essere trattato con la massima attenzione e deve essere considerato meno sicuro finché il materiale esiste. Pertanto, la rotazione del materiale della chiave privata è fondamentale per mantenere un elevato livello di sicurezza.

Best practice per la concessione dei ruoli sugli account di servizio

Negli scenari in cui a un account di servizio sono state concesse le autorizzazioni per eseguire operazioni con privilegi elevati, presta attenzione quando assegni il ruolo Utente account di servizio a un utente dell'account di servizio in questione.

Gli account di servizio rappresentano la sicurezza del livello di servizio. La sicurezza del servizio è determinata dalle persone che dispongono dei ruoli IAM per gestire e utilizzare gli account di servizio e dalle persone che dispongono delle chiavi degli account di servizio per questi account di servizio. Le best practice per garantire la sicurezza includono quanto segue:

  • Utilizza l'API IAM per controllare gli account di servizio, le chiavi e i criteri di autorizzazione su questi account di servizio.
  • Se i tuoi account di servizio non hanno bisogno di chiavi degli account di servizio, disattivali o eliminali.
  • Se gli utenti non hanno bisogno dell'autorizzazione per gestire o utilizzare gli account di servizio, rimuovili dal criterio di autorizzazione applicabile.
  • Assicurati che gli account di servizio dispongano del minor numero di autorizzazioni possibile. Utilizza gli account di servizio predefiniti con cautela, poiché viene loro concesso automaticamente il ruolo Editor (roles/editor) per il progetto.

Per scoprire di più sulle best practice, consulta Best practice per l'utilizzo degli account di servizio.

Provalo

Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.

Inizia gratuitamente