Ruoli per l'autenticazione dell'account di servizio

Le entità possono utilizzare gli account di servizio per eseguire l'autenticazione in diversi modi. Ogni tipo di autenticazione richiede che l'entità disponga di autorizzazioni IAM (Gestione di identità e accessi) specifiche per l'account di servizio.

Questa pagina descrive i ruoli che puoi concedere alle entità per consentir loro di impersonare gli account di servizio o collegarli alle risorse. Inoltre, descrive le autorizzazioni di cui hai bisogno negli scenari comuni.

Per scoprire di più sui diversi metodi per eseguire l'autenticazione con un account di servizio, vedi Credenziali dell'account di servizio e Furto d'identità degli account di servizio.

Ruoli del service account

Questa sezione descrive i ruoli che consentono alle entità di autenticarsi 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 collegare un account di servizio a una risorsa. Quando il codice in esecuzione su quella risorsa deve eseguire l'autenticazione, può ottenere le credenziali con un account di servizio collegato.

Questo ruolo non consente ai principali di creare credenziali di breve durata per gli account di servizio o di utilizzare il flag --impersonate-service-account per la CLI Google Cloud. Per completare queste attività, è necessario Ruolo Creatore token account di servizio nel servizio .

Ruolo Creatore token account di servizio

Ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) consente alle entità di creare credenziali di breve durata per una l'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 che puoi utilizzare per l'autenticazione con le API di Google.
  • Token ID OpenID Connect (OIDC)
  • Token web JSON (JWT) firmati e blob binari

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

Le autorizzazioni del ruolo includono quanto segue:

  • iam.serviceAccounts.getAccessToken: consente di creare token di accesso OAuth 2.0
  • iam.serviceAccounts.getOpenIdToken: consente di creare l'ID OpenID Connect (OIDC) token
  • 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: consente di firmare i JWT

Service Account OpenID Connect Identity Token Creator

Ruolo Creatore token di identità OpenID Connect account di servizio (roles/iam.serviceAccountOpenIdTokenCreator) consente alle entità creare token ID OIDC di breve durata. Se devi solo creare token ID OIDC, utilizza questo ruolo. Se devi creare altri tipi di utilizza 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 che simulano gli account di servizio dai carichi di lavoro GKE.

Le autorizzazioni del ruolo includono quanto segue:

  • iam.serviceAccounts.getAccessToken: consente di creare un accesso OAuth 2.0 token
  • 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 ognuno di essi richiede determinate autorizzazioni. Questa sezione descrive scenari comuni e sono necessarie le autorizzazioni.

Collegamento degli account di servizio alle risorse

Se vuoi avviare un job a lungo termine 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 elenco dei ruoli per le autorizzazioni.

Esistono diverse risorse Google Cloud che possono eseguire job di lunga durata come account di servizio. Ecco alcuni esempi di risorse:

  • VM Compute Engine
  • App di App Engine
  • Funzioni Cloud Run

Quando crei queste risorse, puoi scegliere di collegare un 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 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 avervi associato un account di servizio, puoi avviare un job a lungo termine sulla risorsa. Il job viene eseguito come account di servizio collegato alla risorsa e lo utilizza per autorizzare le richieste le API Google Cloud.

Per scoprire di più sul collegamento degli account di servizio alle risorse, consulta Collegamento di un account di servizio a una risorsa.

Rappresentazione 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ò simulare 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 iam.serviceAccounts.getAccessToken e chiamando il generateAccessToken(). In alternativa, possono utilizzare il flag --impersonate-service-account per l'interfaccia a riga di comando gcloud per rubare l'identità dell'account di servizio. Quando un utente si autentica come account di servizio, può emettere comandi per Google Cloud e accedere a tutte le risorse a cui ha accesso l'account di servizio.

In secondo luogo, l'utente può ottenere gli elementi 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 esposte. signBlob() consente la firma di payload arbitrari (come gli URL firmati Cloud Storage), mentre signJwt() consente solo la firma JWT ben strutturati.

Infine, l'utente può rubare l'identità dell'account di servizio senza mai recuperare una credenziale per l'account di servizio. Si tratta di un caso d'uso avanzato, al momento supportato per l'accesso programmatico utilizzando 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 per 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 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 identità dell'account di servizio mediante iam.serviceAccounts.getOpenIdToken autorizzazione.

Questi token non sono accettati direttamente dalla maggior parte delle API di Google senza che la tua organizzazione implementi 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 può generare materiale della chiave privata esterna (RSA) che può essere utilizzato per eseguire l'autenticazione direttamente in Google come account di servizio. Questa chiave il materiale può quindi essere utilizzato con le librerie ADC (Credenziali predefinite dell'applicazione), o con il gcloud auth activate-service-account . Chiunque ottenga l'accesso al materiale della chiave avrà quindi accesso completo a tutte le risorse a cui ha accesso l'account di servizio. Così privato il materiale chiave deve essere trattato con la massima preoccupazione e deve essere considerata meno sicura maggiore è la durata del materiale. Pertanto, la rotazione del materiale delle chiavi private è fondamentale per mantenere una sicurezza elevata.

Autorizzazioni dell'account di servizio che abilitano altre funzionalità

Alcune autorizzazioni per le credenziali del service account attivano più funzionalità. Ad esempio, iam.serviceAccounts.signBlob e iam.serviceAccounts.signJwt consentono anche alle entità di generare token di accesso e token ID per un account di servizio. Inoltre, poiché iam.serviceAccounts.signBlob consente alle entità di firmare qualsiasi tipo di dati, consente anche di firmare i JWT.

Prima di aggiungere una qualsiasi di queste autorizzazioni ai ruoli personalizzati, assicurati di a capire le azioni consentite da ciascuna autorizzazione.

La seguente tabella mostra le operazioni consentite da queste autorizzazioni:

Autorizzazione Operazioni abilitate
iam.serviceAccounts.getAccessToken Richiedere un token di accesso per l'account di servizio
iam.serviceAccounts.getOpenIdToken Ottieni un token ID per l'account di servizio
iam.serviceAccounts.signJwt
  • Firma un JWT
  • Ottieni un token di accesso o un token ID per l'account di servizio utilizzando un token JWT bearer.
iam.serviceAccounts.signBlob
  • Firma qualsiasi tipo di blob, inclusi i JWT
  • Recuperare un token di accesso o un token ID per l'account di servizio utilizzando un Token di connessione JWT.

Best practice per l'assegnazione dei ruoli agli account di servizio

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

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 da quelle che detengono le chiavi degli account di servizio per questi account. Le best practice per garantire la sicurezza includono:

  • Utilizzare l'API IAM per controllare gli account di servizio, le chiavi i criteri di autorizzazione su questi account di servizio.
  • Se i tuoi account di servizio non hanno bisogno di chiavi, disattiva o elimina che li rappresentano.
  • Se gli utenti non hanno bisogno dell'autorizzazione per gestire o utilizzare gli account di servizio,rimuovili dal criterio di autorizzazione applicabile.
  • Scopri come è possibile concedere determinate autorizzazioni per gli account di servizio abilitare in modo efficace altre funzionalità.
  • Assicurati che gli account di servizio abbiano il minor numero possibile di autorizzazioni. Utilizza gli account di servizio predefiniti con cautela, perché viene loro assegnato automaticamente il ruolo Editor (roles/editor) nel 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