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 consentire impersonare account di servizio o di collegare account di servizio alle risorse. Inoltre, descrive le autorizzazioni necessarie in 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 eseguire l'autenticazione con il 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 eseguito su quella risorsa deve autenticarsi, può ottenere le credenziali per l'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
Il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
) consente ai principali di creare credenziali di breve durata per un account di servizio.
Il ruolo Creatore token account di servizio ti consente di creare i seguenti tipi di credenziali di breve durata:
- Token di accesso OAuth 2.0, che puoi utilizzare per autenticarti con le API di Google
- Token ID OpenID Connect (OIDC)
- JWT (Web Token web JSON) 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.0iam.serviceAccounts.getOpenIdToken
: consente di creare token identificativi OpenID Connect (OIDC)iam.serviceAccounts.implicitDelegation
: consente agli account di servizio di ottenere token in una catena di delegaiam.serviceAccounts.signBlob
: consente di firmare i blob binariiam.serviceAccounts.signJwt
: consente di firmare i JWT
Service Account OpenID Connect Identity Token Creator
Il ruolo Service Account OpenID Connect Identity Token Creator
(roles/iam.serviceAccountOpenIdTokenCreator
) consente ai principali di
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:
iam.serviceAccounts.getAccessToken
: consente di creare token di accesso OAuth 2.0iam.serviceAccounts.getOpenIdToken
: consente di creare OpenID Connect (OIDC) token ID
Autorizzazioni per gli account di servizio per scenari comuni
Gli account di servizio possono essere utilizzati in molti scenari diversi e ognuno 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 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 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 queste risorse:
- VM Compute Engine
- App di App Engine
- Cloud Run Functions
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 a collegare gli account di servizio alle risorse fornite da qualsiasi ruolo
include l'autorizzazione iam.serviceAccounts.actAs
, ad esempio
Ruolo Utente account di servizio (roles/iam.serviceAccountUser).
Dopo aver creato la risorsa e aver collegato un account di servizio, puoi iniziare un job a lunga esecuzione 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ù sull'associazione degli account di servizio alle risorse, consulta Associare 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ò l'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
--impersonate-service-account
flag per
gcloud CLI per impersonare l'account di servizio. Quando un utente
come account di servizio, possono inviare comandi
Google Cloud e può accedere a tutte le risorse a cui l'account di servizio dispone
l'accesso.
In secondo luogo, l'utente può far firmare gli artefatti alla chiave privata gestita da Google
l'account di servizio usando l'autorizzazione iam.serviceAccounts.signBlob
e
chiamando il metodo signBlob()
o signJwt()
.
La chiave privata gestita da Google viene sempre conservata in custodia e non è mai direttamente esposta. signBlob()
consente la firma di payload arbitrari (ad esempio URL firmati da Cloud Storage), mentre signJwt()
consente la firma solo di JWT con formato corretto.
Infine, l'utente può impersonare l'account di servizio senza mai recuperare un
la 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
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
(Service Account OpenID Connect Identity Token Creator)
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 il tuo che esegue il deployment di una federazione delle identità aggiuntiva per concedere l'accesso in tutti i canali Google. Esistono alcune eccezioni, ad esempio Identity-Aware Proxy, che consente Accesso basato su OIDC alle applicazioni eseguite dall'utente.
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 l'autenticazione diretta 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 abbia accesso al materiale della chiave avrà quindi
e l'accesso 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 dell'account di servizio abilitano 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 inoltre alle entità di firmare JWT.
Prima di aggiungere una qualsiasi di queste autorizzazioni ai ruoli personalizzati, assicurati di a capire le azioni consentite da ciascuna autorizzazione.
La tabella seguente mostra le operazioni abilitate da queste autorizzazioni:
Autorizzazione | Operazioni abilitate |
---|---|
iam.serviceAccounts.getAccessToken |
Ottieni un token di accesso per l'account di servizio |
iam.serviceAccounts.getOpenIdToken |
Ottieni un token ID per l'account di servizio |
iam.serviceAccounts.signJwt |
|
iam.serviceAccounts.signBlob |
|
Best practice per la concessione dei ruoli negli 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 a livello di servizio. La sicurezza è determinato dalle persone che hanno ruoli IAM da gestire e utilizzano gli account di servizio e le persone che detengono chiavi degli account di servizio per questi account di servizio. Migliore per garantire la sicurezza includono:
- 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 richiedono chiavi, disattivali o eliminali.
- Se gli utenti non hanno bisogno dell'autorizzazione per gestire o utilizzare gli account di servizio, dai criteri di autorizzazione applicabili.
- Scopri come la concessione di determinate autorizzazioni per gli account di servizio può attivare efficacemente altre funzionalità.
- Assicurati che gli account di servizio dispongano del minor numero di autorizzazioni possibile. Utilizza le funzionalità di
account di servizio predefiniti con cautela, poiché sono
il ruolo Editor (
roles/editor
) per il progetto è stato concesso automaticamente.
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