Questa pagina spiega come creare credenziali di breve durata per un account di servizio, che puoi utilizzare per impersonare l'account di servizio. A seconda del tipo di token creato, il token di breve durata fornisce l'identità (per i token ID) o le autorizzazioni (per i token di accesso) associate all'account di servizio.
Se l'architettura del tuo sistema richiede l'utilizzo di una serie di chiamate per la generazione di token, puoi utilizzare una catena di delega composta da più account di servizio. Nella maggior parte dei casi, è sufficiente utilizzare il metodo diretto, come spiegato in questa pagina.
Prima di iniziare
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API IAM and Service Account Credentials.
gcloud services enable iam.googleapis.com
iamcredentials.googleapis.com Informazioni sugli account di servizio IAM.
Informazioni sul furto d'identità degli account di servizio.
Scopri il tipo di token che ti serve e utilizza i passaggi appropriati indicati nelle sezioni seguenti:
Creare un token di accesso di breve durata
I token di accesso sono accettati per l'autenticazione dalla maggior parte delle API di Google. Quando generi un token di accesso utilizzando la rappresentazione degli account di servizio, il token di accesso viene fornito senza un token di aggiornamento, il che significa che, alla scadenza del token, devi ripetere il processo di rappresentazione per generarne uno nuovo.
Per ulteriori informazioni, consulta la sezione Token di accesso.
Per creare un token di accesso di breve durata, completa queste attività:
Fornisci le autorizzazioni richieste
Una richiesta diretta coinvolge due identità: il chiamante che richiede la credenziale e l'account di servizio per il quale è stata creata. La modalità di configurazione delle autorizzazioni dipende dall'autenticazione del chiamante come account di servizio o Account Google.
Se vuoi eseguire un comando REST o gcloud CLI su questa pagina in un ambiente di sviluppo locale, il chiamante può essere rappresentato da credenziali utente. Per i carichi di lavoro automatizzati, ad esempio un'applicazione in esecuzione su Compute Engine, il chiamante deve essere rappresentato da un account di servizio.
Account di servizio
Quando l'applicazione chiamante utilizza un account di servizio come identità, sono coinvolte le seguenti entità:
Account di servizio del chiamante (
CALLER_SA
)Questo account di servizio rappresenta l'applicazione chiamante, che emette la richiesta delle credenziali di breve durata.
-
Account di servizio con privilegi (
PRIV_SA
)A questo account di servizio vengono concessi i ruoli IAM necessari per il token di breve durata. Questo è l'account di servizio per il quale viene creato il token di breve durata.
Per concedere a CALLER_SA
le autorizzazioni per creare credenziali di breve
durata per PRIV_SA
, concedi a
CALLER_SA
il ruolo Creatore token account di servizio
(roles/iam.serviceAccountTokenCreator
) su PRIV_SA
.
Concedi il ruolo richiesto su PRIV_SA
:
Console
-
Nella console Google Cloud, vai alla pagina Account di servizio.
- Seleziona un progetto.
-
Fai clic sull'indirizzo email dell'account di servizio con privilegi,
PRIV_SA
. - Fai clic sulla scheda Autorizzazioni.
- In Entità con accesso a questo account di servizio, fai clic su Concedi l'accesso.
-
Inserisci l'indirizzo email dell'account di servizio del chiamante,
CALLER_SA
.Ad esempio,
demo@my-project.iam.gserviceaccount.com
. -
Seleziona il ruolo Creatore token account di servizio
(
roles/iam.serviceAccountTokenCreator
). - Fai clic su Salva per concedere il ruolo all'account di servizio.
gcloud
Il comando gcloud iam service-accounts add-iam-policy-binding
concede un ruolo in un account di servizio.
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio che dispone dei privilegi per cui viene generato il token. -
CALLER_SA
: l'indirizzo email dell'account di servizio che rappresenta l'applicazione che richiede il token di breve durata.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Dovresti ricevere una risposta simile alla seguente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Leggi il criterio di autorizzazione per
PRIV_SA
:Il metodo
serviceAccounts.getIamPolicy
ottiene il criterio di autorizzazione di un account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Se non hai concesso alcun ruolo per l'account di servizio, la risposta contiene solo un valore
etag
. Includi quel valoreetag
nel passaggio successivo. -
Modifica il criterio di autorizzazione per concedere a
CALLER_SA
il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
).Ad esempio, per modificare la risposta di esempio al passaggio precedente, aggiungi quanto segue:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Scrivi il criterio di autorizzazione aggiornato:
Il metodo
serviceAccounts.setIamPolicy
imposta un criterio di autorizzazione aggiornato per l'account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.-
POLICY
: una rappresentazione JSON del criterio che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta la documentazione di riferimento alle norme.Ad esempio, per impostare il criterio di autorizzazione mostrato nel passaggio precedente, sostituisci
POLICY
con il seguente, doveCALLER_SA
è l'account di servizio che crea il token di breve durata:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON della richiesta:
{ "policy": POLICY }
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Credenziali utente
Se vuoi utilizzare Google Cloud CLI per generare token di breve durata o se vuoi generare token di breve durata da un ambiente di sviluppo locale, puoi utilizzare un account utente per generare i token. Spesso puoi usare il tuo Account Google.
Quando utilizzi un account utente per generare token di breve durata, sono coinvolte le seguenti identità:
Account Google del chiamante (
CALLER_ACCOUNT
)Questo account utente viene utilizzato per generare credenziali di breve durata per l'account di servizio con privilegi.
Account di servizio con privilegi (
PRIV_SA
)A questo account di servizio vengono concessi i ruoli IAM necessari per il token di breve durata. Questo è l'account di servizio per il quale viene creato il token di breve durata.
Per consentire a CALLER_ACCOUNT
di creare credenziali di breve durata per PRIV_SA
, concedi a CALLER_ACCOUNT
il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
) su PRIV_SA
.
Concedi il ruolo richiesto su PRIV_SA
:
Console
-
Nella console Google Cloud, vai alla pagina Account di servizio.
- Seleziona un progetto.
-
Fai clic sull'indirizzo email dell'account di servizio con privilegi,
PRIV_SA
. - Fai clic sulla scheda Autorizzazioni.
- In Entità con accesso a questo account di servizio, fai clic su Concedi l'accesso.
-
Inserisci l'indirizzo email dell'Account Google del chiamante,
CALLER_ACCOUNT
.Ad esempio,
username@google.com
. -
Seleziona il ruolo Creatore token account di servizio
(
roles/iam.serviceAccountTokenCreator
). - Fai clic su Salva per concedere il ruolo all'account utente.
gcloud
Il comando gcloud iam service-accounts add-iam-policy-binding
concede un ruolo in un account di servizio.
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio che dispone dei privilegi per cui viene generato il token. -
CALLER_ACCOUNT
: l'indirizzo email dell'account utente utilizzato per richiedere il token di breve durata.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Dovresti ricevere una risposta simile alla seguente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Leggi il criterio di autorizzazione per
PRIV_SA
:Il metodo
serviceAccounts.getIamPolicy
ottiene il criterio di autorizzazione di un account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Se non hai concesso alcun ruolo per l'account di servizio, la risposta contiene solo un valore
etag
. Includi quel valoreetag
nel passaggio successivo. -
Modifica il criterio di autorizzazione per concedere a
CALLER_ACCOUNT
il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
).Ad esempio, per modificare la risposta di esempio al passaggio precedente, aggiungi quanto segue:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
Scrivi il criterio di autorizzazione aggiornato:
Il metodo
serviceAccounts.setIamPolicy
imposta un criterio di autorizzazione aggiornato per l'account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.-
POLICY
: una rappresentazione JSON del criterio che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta la documentazione di riferimento alle norme.Ad esempio, per impostare il criterio di autorizzazione mostrato nel passaggio precedente, sostituisci
POLICY
con il seguente, doveCALLER_ACCOUNT
è l'account utente che crea il token di breve durata:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON della richiesta:
{ "policy": POLICY }
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Generare il token di accesso
Puoi generare un token di accesso OAuth 2.0 utilizzando gcloud CLI, l'API REST o le librerie client di Cloud e le librerie client delle API di Google.
Se utilizzi l'API REST e il tuo sistema è configurato in modo da consentire una durata estesa dei token, puoi creare un token con una durata superiore a quella predefinita. Google Cloud CLI non supporta l'impostazione di una durata per il token.
Gli esempi riportati di seguito sono progettati per essere utilizzati in un ambiente di sviluppo locale. Il chiamante deve essere rappresentato da un account utente, anziché da un account di servizio.
Genera un token di accesso OAuth 2.0 per un account di servizio:
gcloud
Accedi a Google Cloud CLI come Account Google del chiamante.
gcloud auth login CALLER_ACCOUNT
Genera un token per l'account di servizio.
Il comando
gcloud auth print-access-token
genera un token di accesso OAuth 2.0 per un account di servizio.Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Windows (PowerShell)
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Windows (cmd.exe)
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Dovresti ricevere una risposta simile alla seguente:
WARNING: This command is using service account impersonation. All API calls will be executed as [my-sa@my-project.iam.gserviceaccount.com]. ya29.c.b0AXv0zTPnzTnDV8F8Aj5Fgy46Yf2v_v8eZIoKq7xGpfbpXuy23aQ1693m3gAuE8AZga7w6kdagN7a9bfdDYbdeoGY0CMHOClsCwIdutL7k_RFC672lOCbUgF5hS8Iu2nCA8hle-11LJXBLmaxFmH08ZTBJLuDrWSNd8cYqGYFunSC1K1qLIPBF18tsa0hxVgKPucI8b1A9L8_MK1JGLGcr0n7-zY77_lmbcdODG3NmIbLOGWOutjJgqSO_YoeCKK2QTUZIp5PG7RkKlXWnmYJA9pEahzNoQrs5sWZctc2bia9af_ITzqqlXC9h1Kj5-me6e8rd734MJvpagqYazRk0gGWpMb03XmMGpgPc_FBp4pnX9rGOzW83SNpcDz8zeFO1Q0Bo3N7CuZougjRce0y8I2_4rtw5ME_nV3wrCWa..................................................................................................................................................................................................................................................................................................
-
REST
Il metodo serviceAccounts.generateAccessToken
dell'API Service Account Credentials genera un token di accesso OAuth 2.0 per un account di servizio.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. -
LIFETIME
: il tempo fino alla scadenza del token di accesso, in secondi. Ad esempio,300s
.Per impostazione predefinita, la durata massima del token è di 1 ora (3600 secondi). Per estendere la durata massima di questi token a 12 ore (43.200 secondi), aggiungi l'account di servizio a un criterio dell'organizzazione che includa il vincolo dell'elenco
constraints/iam.allowServiceAccountCredentialLifetimeExtension
.
Metodo HTTP e URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateAccessToken
Corpo JSON della richiesta:
{ "scope": [ "https://www.googleapis.com/auth/cloud-platform" ], "lifetime": "LIFETIME" }
Per inviare la richiesta, espandi una di queste opzioni:
Se la richiesta generateAccessToken
ha esito positivo, il corpo della risposta contiene un token di accesso OAuth 2.0 e una data di scadenza. accessToken
può quindi essere utilizzato per autenticare una richiesta per conto dell'account di servizio fino al raggiungimento di expireTime
:
{ "accessToken": "eyJ0eXAi...NiJ9", "expireTime": "2020-04-07T15:01:23.045123456Z" }
Go
Prima di poter utilizzare questo codice campione, devi configurare le Credenziali predefinite dell'applicazione per l'Account Google del chiamante a cui hai concesso in precedenza il ruolo richiesto per rubare l'identità dell'account di servizio con privilegi.
Java
Prima di poter utilizzare questo codice campione, devi configurare le Credenziali predefinite dell'applicazione per l'Account Google del chiamante a cui hai concesso in precedenza il ruolo richiesto per rubare l'identità dell'account di servizio con privilegi.
Node.js
Prima di poter utilizzare questo codice campione, devi configurare le Credenziali predefinite dell'applicazione per l'Account Google del chiamante a cui hai concesso in precedenza il ruolo richiesto per rubare l'identità dell'account di servizio con privilegi.
Python
Prima di poter utilizzare questo codice campione, devi configurare le Credenziali predefinite dell'applicazione per l'Account Google del chiamante a cui hai concesso in precedenza il ruolo richiesto per rubare l'identità dell'account di servizio con privilegi.
Crea un token ID OpenID Connect (OIDC)
I token ID sono conformi alla specifica OpenID Connect (OIDC). I token ID sono accettati da un numero limitato di servizi e applicazioni.
Per ulteriori informazioni, consulta Token ID e Autenticazione per le applicazioni ospitate su Cloud Run o Cloud Functions.
Per creare un token ID, completa queste attività:
Fornisci al chiamante le autorizzazioni necessarie.
Utilizza il ruolo Creatore token identità OpenID Connect dell'account di servizio (
roles/iam.serviceAccountOpenIdTokenCreator
) per creare un token ID. Si tratta di un ruolo diverso da quello che utilizzi per altri tipi di token.
Fornisci le autorizzazioni richieste
Una richiesta diretta coinvolge due identità: il chiamante che richiede la credenziale e l'account di servizio per il quale è stata creata. La modalità di configurazione delle autorizzazioni dipende dall'autenticazione del chiamante come account di servizio o Account Google.
Se vuoi eseguire un comando REST o gcloud CLI su questa pagina in un ambiente di sviluppo locale, il chiamante può essere rappresentato da credenziali utente. Per i carichi di lavoro automatizzati, ad esempio un'applicazione in esecuzione su Compute Engine, il chiamante deve essere rappresentato da un account di servizio.
Account di servizio
Quando l'applicazione chiamante utilizza un account di servizio come identità, sono coinvolte le seguenti entità:
Account di servizio del chiamante (
CALLER_SA
)Questo account di servizio rappresenta l'applicazione chiamante, che emette la richiesta delle credenziali di breve durata.
-
Account di servizio con privilegi (
PRIV_SA
)A questo account di servizio vengono concessi i ruoli IAM necessari per il token di breve durata. Questo è l'account di servizio per il quale viene creato il token di breve durata.
Per concedere a CALLER_SA
le autorizzazioni necessarie per creare credenziali di breve
durata per PRIV_SA
, concedi a
CALLER_SA
il ruolo Creatore token identità OpenID Connect dell'account di servizio
(roles/iam.serviceAccountOpenIdTokenCreator
) su PRIV_SA
.
Concedi il ruolo richiesto su PRIV_SA
:
Console
-
Nella console Google Cloud, vai alla pagina Account di servizio.
- Seleziona un progetto.
-
Fai clic sull'indirizzo email dell'account di servizio con privilegi,
PRIV_SA
. - Fai clic sulla scheda Autorizzazioni.
- In Entità con accesso a questo account di servizio, fai clic su Concedi l'accesso.
-
Inserisci l'indirizzo email dell'account di servizio del chiamante,
CALLER_SA
.Ad esempio,
demo@my-project.iam.gserviceaccount.com
. -
Seleziona il ruolo Creatore token identità OpenID Connect dell'account di servizio
(
roles/iam.serviceAccountOpenIdTokenCreator
). - Fai clic su Salva per concedere il ruolo all'account di servizio.
gcloud
Il comando gcloud iam service-accounts add-iam-policy-binding
concede un ruolo in un account di servizio.
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio che dispone dei privilegi per cui viene generato il token. -
CALLER_SA
: l'indirizzo email dell'account di servizio che rappresenta l'applicazione che richiede il token di breve durata.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Dovresti ricevere una risposta simile alla seguente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Leggi il criterio di autorizzazione per
PRIV_SA
:Il metodo
serviceAccounts.getIamPolicy
ottiene il criterio di autorizzazione di un account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Se non hai concesso alcun ruolo per l'account di servizio, la risposta contiene solo un valore
etag
. Includi quel valoreetag
nel passaggio successivo. -
Modifica il criterio di autorizzazione per concedere a
CALLER_SA
il ruolo Creatore token identità OpenID Connect dell'account di servizio (roles/iam.serviceAccountOpenIdTokenCreator
).Ad esempio, per modificare la risposta di esempio al passaggio precedente, aggiungi quanto segue:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Scrivi il criterio di autorizzazione aggiornato:
Il metodo
serviceAccounts.setIamPolicy
imposta un criterio di autorizzazione aggiornato per l'account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.-
POLICY
: una rappresentazione JSON del criterio che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta la documentazione di riferimento alle norme.Ad esempio, per impostare il criterio di autorizzazione mostrato nel passaggio precedente, sostituisci
POLICY
con il seguente, doveCALLER_SA
è l'account di servizio che crea il token di breve durata:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON della richiesta:
{ "policy": POLICY }
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Credenziali utente
Se vuoi utilizzare Google Cloud CLI per generare token di breve durata o se vuoi generare token di breve durata da un ambiente di sviluppo locale, puoi utilizzare un account utente per generare i token. Spesso puoi usare il tuo Account Google.
Quando utilizzi un account utente per generare token di breve durata, sono coinvolte le seguenti identità:
Account Google del chiamante (
CALLER_ACCOUNT
)Questo account utente viene utilizzato per generare credenziali di breve durata per l'account di servizio con privilegi.
Account di servizio con privilegi (
PRIV_SA
)A questo account di servizio vengono concessi i ruoli IAM necessari per il token di breve durata. Questo è l'account di servizio per il quale viene creato il token di breve durata.
Per consentire a CALLER_ACCOUNT
di creare credenziali di breve durata per PRIV_SA
, concedi a CALLER_ACCOUNT
il ruolo Creatore token identità OpenID Connect dell'account di servizio (roles/iam.serviceAccountOpenIdTokenCreator
) su PRIV_SA
.
Concedi il ruolo richiesto su PRIV_SA
:
Console
-
Nella console Google Cloud, vai alla pagina Account di servizio.
- Seleziona un progetto.
-
Fai clic sull'indirizzo email dell'account di servizio con privilegi,
PRIV_SA
. - Fai clic sulla scheda Autorizzazioni.
- In Entità con accesso a questo account di servizio, fai clic su Concedi l'accesso.
-
Inserisci l'indirizzo email dell'Account Google del chiamante,
CALLER_ACCOUNT
.Ad esempio,
username@google.com
. -
Seleziona il ruolo Creatore token identità OpenID Connect dell'account di servizio
(
roles/iam.serviceAccountOpenIdTokenCreator
). - Fai clic su Salva per concedere il ruolo all'account utente.
gcloud
Il comando gcloud iam service-accounts add-iam-policy-binding
concede un ruolo in un account di servizio.
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio che dispone dei privilegi per cui viene generato il token. -
CALLER_ACCOUNT
: l'indirizzo email dell'account utente utilizzato per richiedere il token di breve durata.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Dovresti ricevere una risposta simile alla seguente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Leggi il criterio di autorizzazione per
PRIV_SA
:Il metodo
serviceAccounts.getIamPolicy
ottiene il criterio di autorizzazione di un account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Se non hai concesso alcun ruolo per l'account di servizio, la risposta contiene solo un valore
etag
. Includi quel valoreetag
nel passaggio successivo. -
Modifica il criterio di autorizzazione per concedere a
CALLER_ACCOUNT
il ruolo Creatore token identità OpenID Connect dell'account di servizio (roles/iam.serviceAccountOpenIdTokenCreator
).Ad esempio, per modificare la risposta di esempio al passaggio precedente, aggiungi quanto segue:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
Scrivi il criterio di autorizzazione aggiornato:
Il metodo
serviceAccounts.setIamPolicy
imposta un criterio di autorizzazione aggiornato per l'account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.-
POLICY
: una rappresentazione JSON del criterio che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta la documentazione di riferimento alle norme.Ad esempio, per impostare il criterio di autorizzazione mostrato nel passaggio precedente, sostituisci
POLICY
con il seguente, doveCALLER_ACCOUNT
è l'account utente che crea il token di breve durata:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON della richiesta:
{ "policy": POLICY }
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Generare il token ID
Puoi generare un token ID OpenID Connect (OIDC) utilizzando gcloud CLI, l'API REST o le librerie client di Cloud e le librerie client delle API di Google.
Gli esempi riportati di seguito sono progettati per essere utilizzati in un ambiente di sviluppo locale. Il chiamante deve essere rappresentato da un account utente, anziché da un account di servizio.
I token ID OIDC sono validi per 1 ora (3600 secondi).
Genera un token ID OIDC firmato da Google per un account di servizio:
gcloud
Accedi a Google Cloud CLI come Account Google del chiamante.
gcloud auth login CALLER_ACCOUNT
Genera un token per l'account di servizio.
Il comando
gcloud auth print-identity-token
genera un token ID OIDC per un account di servizio.Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. -
AUDIENCE_NAME
: il pubblico del token, in genere l'URL dell'applicazione o del servizio a cui il token verrà utilizzato per accedere.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Windows (PowerShell)
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Windows (cmd.exe)
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Dovresti ricevere una risposta simile alla seguente:
WARNING: This command is using service account impersonation. All API calls will be executed as [my-sa@my-project.iam.gserviceaccount.com]. eyJhbGciOiJSUzI1NiIsImtpZDNhMDg4ZDRmZmMjJkYTVmZTM5MDZjY2MiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJ3d3cuZXhhbXBsJhenAiOiIxMTYzwNDYyMDk0ODIiLCJleHAiOjE2NTQ4ODU0MzEsImlhdCI6MTY1NDg4MTgzMSwiaXN6Ly9hY2NvdW50cy5nb29nbGUuY29tIiwic3ViIMDQ2MjA5NDgyIn0.F7mu8IHj5VQdu7ItFrnYAKyGd7YqXuOP_rFLc98q8BaFBycAF1zAQnSnwqnSUXba0UK9PDT_-IOry68qLwBObz4XlX9lk0ehpN0O0W9FcFToKLB6wefXXPd4h7xtuPe5KzmpSOqj2Qqv34HriGw00Nqd-oGSgNY_lZ4wGEf4rT4oQa_kEcrY57Q2G6pwd769BhgeFwoLi5aK_Cv2kvf_zfMszC-xlkP9zwWQ8XinJBwe-qcQBa4NTgrbueNtXsEjccBS366zmw
-
REST
Il metodo serviceAccounts.generateIdToken
dell'API Service Account Credentials genera un token ID OIDC per un account di servizio.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. -
AUDIENCE_NAME
: il pubblico del token, in genere l'URL dell'applicazione o del servizio a cui il token verrà utilizzato per accedere.
Metodo HTTP e URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateIdToken
Corpo JSON della richiesta:
{ "audience": "AUDIENCE_NAME", "includeEmail": "true" }
Per inviare la richiesta, espandi una di queste opzioni:
Se la richiesta generateId
ha esito positivo, il corpo della risposta contiene un token ID valido per 1 ora. token
può quindi essere utilizzato per autenticare una richiesta per conto dell'account di servizio:
{ "token": "eyJ0eXAi...NiJ9" }
Crea un token JWT (JSON Web Token) autofirmato
I token JWT (JSON Web Tokens) autofirmati sono utili in diversi scenari:
- Autenticazione in un'API di cui è stato eseguito il deployment con API Gateway.
- Autenticazione di una chiamata a un'API di Google come descritto nella Guida all'autenticazione di Google.
- Comunicare in sicurezza tra le tue applicazioni. In questo scenario, un'applicazione può firmare un token che può essere verificato da un'altra applicazione per scopi di autenticazione.
- Trattare un account di servizio come un provider di identità firmando un JWT che contiene rivendicazioni arbitrarie su un utente, un account o un dispositivo.
Per creare un JWT, completa queste attività:
Fornisci le autorizzazioni richieste
Una richiesta diretta coinvolge due identità: il chiamante che richiede la credenziale e l'account di servizio per il quale è stata creata. La modalità di configurazione delle autorizzazioni dipende dall'autenticazione del chiamante come account di servizio o Account Google.
Se vuoi eseguire un comando REST o gcloud CLI su questa pagina in un ambiente di sviluppo locale, il chiamante può essere rappresentato da credenziali utente. Per i carichi di lavoro automatizzati, ad esempio un'applicazione in esecuzione su Compute Engine, il chiamante deve essere rappresentato da un account di servizio.
Account di servizio
Quando l'applicazione chiamante utilizza un account di servizio come identità, sono coinvolte le seguenti entità:
Account di servizio del chiamante (
CALLER_SA
)Questo account di servizio rappresenta l'applicazione chiamante, che emette la richiesta delle credenziali di breve durata.
-
Account di servizio con privilegi (
PRIV_SA
)A questo account di servizio vengono concessi i ruoli IAM necessari per il token di breve durata. Questo è l'account di servizio per il quale viene creato il token di breve durata.
Per concedere a CALLER_SA
le autorizzazioni per creare credenziali di breve
durata per PRIV_SA
, concedi a
CALLER_SA
il ruolo Creatore token account di servizio
(roles/iam.serviceAccountTokenCreator
) su PRIV_SA
.
Concedi il ruolo richiesto su PRIV_SA
:
Console
-
Nella console Google Cloud, vai alla pagina Account di servizio.
- Seleziona un progetto.
-
Fai clic sull'indirizzo email dell'account di servizio con privilegi,
PRIV_SA
. - Fai clic sulla scheda Autorizzazioni.
- In Entità con accesso a questo account di servizio, fai clic su Concedi l'accesso.
-
Inserisci l'indirizzo email dell'account di servizio del chiamante,
CALLER_SA
.Ad esempio,
demo@my-project.iam.gserviceaccount.com
. -
Seleziona il ruolo Creatore token account di servizio
(
roles/iam.serviceAccountTokenCreator
). - Fai clic su Salva per concedere il ruolo all'account di servizio.
gcloud
Il comando gcloud iam service-accounts add-iam-policy-binding
concede un ruolo in un account di servizio.
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio che dispone dei privilegi per cui viene generato il token. -
CALLER_SA
: l'indirizzo email dell'account di servizio che rappresenta l'applicazione che richiede il token di breve durata.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Dovresti ricevere una risposta simile alla seguente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Leggi il criterio di autorizzazione per
PRIV_SA
:Il metodo
serviceAccounts.getIamPolicy
ottiene il criterio di autorizzazione di un account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Se non hai concesso alcun ruolo per l'account di servizio, la risposta contiene solo un valore
etag
. Includi quel valoreetag
nel passaggio successivo. -
Modifica il criterio di autorizzazione per concedere a
CALLER_SA
il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
).Ad esempio, per modificare la risposta di esempio al passaggio precedente, aggiungi quanto segue:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Scrivi il criterio di autorizzazione aggiornato:
Il metodo
serviceAccounts.setIamPolicy
imposta un criterio di autorizzazione aggiornato per l'account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.-
POLICY
: una rappresentazione JSON del criterio che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta la documentazione di riferimento alle norme.Ad esempio, per impostare il criterio di autorizzazione mostrato nel passaggio precedente, sostituisci
POLICY
con il seguente, doveCALLER_SA
è l'account di servizio che crea il token di breve durata:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON della richiesta:
{ "policy": POLICY }
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Credenziali utente
Se vuoi utilizzare Google Cloud CLI per generare token di breve durata o se vuoi generare token di breve durata da un ambiente di sviluppo locale, puoi utilizzare un account utente per generare i token. Spesso puoi usare il tuo Account Google.
Quando utilizzi un account utente per generare token di breve durata, sono coinvolte le seguenti identità:
Account Google del chiamante (
CALLER_ACCOUNT
)Questo account utente viene utilizzato per generare credenziali di breve durata per l'account di servizio con privilegi.
Account di servizio con privilegi (
PRIV_SA
)A questo account di servizio vengono concessi i ruoli IAM necessari per il token di breve durata. Questo è l'account di servizio per il quale viene creato il token di breve durata.
Per consentire a CALLER_ACCOUNT
di creare credenziali di breve durata per PRIV_SA
, concedi a CALLER_ACCOUNT
il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
) su PRIV_SA
.
Concedi il ruolo richiesto su PRIV_SA
:
Console
-
Nella console Google Cloud, vai alla pagina Account di servizio.
- Seleziona un progetto.
-
Fai clic sull'indirizzo email dell'account di servizio con privilegi,
PRIV_SA
. - Fai clic sulla scheda Autorizzazioni.
- In Entità con accesso a questo account di servizio, fai clic su Concedi l'accesso.
-
Inserisci l'indirizzo email dell'Account Google del chiamante,
CALLER_ACCOUNT
.Ad esempio,
username@google.com
. -
Seleziona il ruolo Creatore token account di servizio
(
roles/iam.serviceAccountTokenCreator
). - Fai clic su Salva per concedere il ruolo all'account utente.
gcloud
Il comando gcloud iam service-accounts add-iam-policy-binding
concede un ruolo in un account di servizio.
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio che dispone dei privilegi per cui viene generato il token. -
CALLER_ACCOUNT
: l'indirizzo email dell'account utente utilizzato per richiedere il token di breve durata.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Dovresti ricevere una risposta simile alla seguente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Leggi il criterio di autorizzazione per
PRIV_SA
:Il metodo
serviceAccounts.getIamPolicy
ottiene il criterio di autorizzazione di un account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Se non hai concesso alcun ruolo per l'account di servizio, la risposta contiene solo un valore
etag
. Includi quel valoreetag
nel passaggio successivo. -
Modifica il criterio di autorizzazione per concedere a
CALLER_ACCOUNT
il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
).Ad esempio, per modificare la risposta di esempio al passaggio precedente, aggiungi quanto segue:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
Scrivi il criterio di autorizzazione aggiornato:
Il metodo
serviceAccounts.setIamPolicy
imposta un criterio di autorizzazione aggiornato per l'account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.-
POLICY
: una rappresentazione JSON del criterio che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta la documentazione di riferimento alle norme.Ad esempio, per impostare il criterio di autorizzazione mostrato nel passaggio precedente, sostituisci
POLICY
con il seguente, doveCALLER_ACCOUNT
è l'account utente che crea il token di breve durata:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON della richiesta:
{ "policy": POLICY }
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Genera il JWT
Genera un JWT autofirmato:
REST
Il metodo serviceAccounts.signJwt
dell'API Service Account Credentials firma un JWT utilizzando la chiave privata gestita dal sistema di un account di servizio.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. -
JWT_PAYLOAD
: il payload JWT da firmare, ovvero un oggetto JSON che contiene un set di attestazioni JWT. Includi le attestazioni necessarie per il caso d'uso desiderato e per soddisfare i requisiti di convalida per il servizio che stai chiamando. Se chiami un'API di Google, consulta la guida all'autenticazione di Google per i requisiti delle richieste.La rivendicazione di
exp
(data di scadenza) deve essere presentata al massimo entro 12 ore. Se chiami un'API di Google, la rivendicazioneexp
deve essere impostata su un massimo di un'ora nel futuro.Il seguente payload di esempio contiene rivendicazioni per chiamare un'API di Google, dove
EXP
è un timestamp numero intero che rappresenta la data di scadenza:{ \"iss\": \"PRIV_SA\", \"sub\": \"PRIV_SA\", \"aud\": \"https://firestore.googleapis.com/\", \"iat\": 1529350000, \"exp\": EXP }
Metodo HTTP e URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:signJwt
Corpo JSON della richiesta:
{ "payload": "JWT_PAYLOAD" }
Per inviare la richiesta, espandi una di queste opzioni:
Se la richiesta signJwt
ha avuto esito positivo, il corpo della risposta contiene un JWT firmato e l'ID della chiave di firma utilizzato per firmare il JWT. Puoi utilizzare il valore signedJwt
come token di connessione per autenticare direttamente una richiesta per conto dell'account di servizio. Il token è valido fino alla scadenza specificata nella richiesta:
{ "keyId": "42ba1e...fc0a", "signedJwt": "eyJ0eXAi...NiJ9" }
Creare un oggetto binario autofirmato (blob)
Gli oggetti binari autofirmati, o BLOB, vengono utilizzati per trasmettere dati binari in modo che l'autore dei dati sia noto (perché il BLOB è autofirmato. I BLOB possono essere utilizzati per creare firme, un oggetto Cloud Storage necessario per vari flussi di autenticazione, inclusi gli URL firmati. Per informazioni sulle firme, consulta la documentazione di Cloud Storage.
Per creare un oggetto binario autofirmato, completa queste attività:
Fornisci le autorizzazioni richieste
Una richiesta diretta coinvolge due identità: il chiamante che richiede la credenziale e l'account di servizio per il quale è stata creata. La modalità di configurazione delle autorizzazioni dipende dall'autenticazione del chiamante come account di servizio o Account Google.
Se vuoi eseguire un comando REST o gcloud CLI su questa pagina in un ambiente di sviluppo locale, il chiamante può essere rappresentato da credenziali utente. Per i carichi di lavoro automatizzati, ad esempio un'applicazione in esecuzione su Compute Engine, il chiamante deve essere rappresentato da un account di servizio.
Account di servizio
Quando l'applicazione chiamante utilizza un account di servizio come identità, sono coinvolte le seguenti entità:
Account di servizio del chiamante (
CALLER_SA
)Questo account di servizio rappresenta l'applicazione chiamante, che emette la richiesta delle credenziali di breve durata.
-
Account di servizio con privilegi (
PRIV_SA
)A questo account di servizio vengono concessi i ruoli IAM necessari per il token di breve durata. Questo è l'account di servizio per il quale viene creato il token di breve durata.
Per concedere a CALLER_SA
le autorizzazioni per creare credenziali di breve
durata per PRIV_SA
, concedi a
CALLER_SA
il ruolo Creatore token account di servizio
(roles/iam.serviceAccountTokenCreator
) su PRIV_SA
.
Concedi il ruolo richiesto su PRIV_SA
:
Console
-
Nella console Google Cloud, vai alla pagina Account di servizio.
- Seleziona un progetto.
-
Fai clic sull'indirizzo email dell'account di servizio con privilegi,
PRIV_SA
. - Fai clic sulla scheda Autorizzazioni.
- In Entità con accesso a questo account di servizio, fai clic su Concedi l'accesso.
-
Inserisci l'indirizzo email dell'account di servizio del chiamante,
CALLER_SA
.Ad esempio,
demo@my-project.iam.gserviceaccount.com
. -
Seleziona il ruolo Creatore token account di servizio
(
roles/iam.serviceAccountTokenCreator
). - Fai clic su Salva per concedere il ruolo all'account di servizio.
gcloud
Il comando gcloud iam service-accounts add-iam-policy-binding
concede un ruolo in un account di servizio.
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio che dispone dei privilegi per cui viene generato il token. -
CALLER_SA
: l'indirizzo email dell'account di servizio che rappresenta l'applicazione che richiede il token di breve durata.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Dovresti ricevere una risposta simile alla seguente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Leggi il criterio di autorizzazione per
PRIV_SA
:Il metodo
serviceAccounts.getIamPolicy
ottiene il criterio di autorizzazione di un account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Se non hai concesso alcun ruolo per l'account di servizio, la risposta contiene solo un valore
etag
. Includi quel valoreetag
nel passaggio successivo. -
Modifica il criterio di autorizzazione per concedere a
CALLER_SA
il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
).Ad esempio, per modificare la risposta di esempio al passaggio precedente, aggiungi quanto segue:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Scrivi il criterio di autorizzazione aggiornato:
Il metodo
serviceAccounts.setIamPolicy
imposta un criterio di autorizzazione aggiornato per l'account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.-
POLICY
: una rappresentazione JSON del criterio che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta la documentazione di riferimento alle norme.Ad esempio, per impostare il criterio di autorizzazione mostrato nel passaggio precedente, sostituisci
POLICY
con il seguente, doveCALLER_SA
è l'account di servizio che crea il token di breve durata:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON della richiesta:
{ "policy": POLICY }
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Credenziali utente
Se vuoi utilizzare Google Cloud CLI per generare token di breve durata o se vuoi generare token di breve durata da un ambiente di sviluppo locale, puoi utilizzare un account utente per generare i token. Spesso puoi usare il tuo Account Google.
Quando utilizzi un account utente per generare token di breve durata, sono coinvolte le seguenti identità:
Account Google del chiamante (
CALLER_ACCOUNT
)Questo account utente viene utilizzato per generare credenziali di breve durata per l'account di servizio con privilegi.
Account di servizio con privilegi (
PRIV_SA
)A questo account di servizio vengono concessi i ruoli IAM necessari per il token di breve durata. Questo è l'account di servizio per il quale viene creato il token di breve durata.
Per consentire a CALLER_ACCOUNT
di creare credenziali di breve durata per PRIV_SA
, concedi a CALLER_ACCOUNT
il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
) su PRIV_SA
.
Concedi il ruolo richiesto su PRIV_SA
:
Console
-
Nella console Google Cloud, vai alla pagina Account di servizio.
- Seleziona un progetto.
-
Fai clic sull'indirizzo email dell'account di servizio con privilegi,
PRIV_SA
. - Fai clic sulla scheda Autorizzazioni.
- In Entità con accesso a questo account di servizio, fai clic su Concedi l'accesso.
-
Inserisci l'indirizzo email dell'Account Google del chiamante,
CALLER_ACCOUNT
.Ad esempio,
username@google.com
. -
Seleziona il ruolo Creatore token account di servizio
(
roles/iam.serviceAccountTokenCreator
). - Fai clic su Salva per concedere il ruolo all'account utente.
gcloud
Il comando gcloud iam service-accounts add-iam-policy-binding
concede un ruolo in un account di servizio.
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio che dispone dei privilegi per cui viene generato il token. -
CALLER_ACCOUNT
: l'indirizzo email dell'account utente utilizzato per richiedere il token di breve durata.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Dovresti ricevere una risposta simile alla seguente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Leggi il criterio di autorizzazione per
PRIV_SA
:Il metodo
serviceAccounts.getIamPolicy
ottiene il criterio di autorizzazione di un account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Se non hai concesso alcun ruolo per l'account di servizio, la risposta contiene solo un valore
etag
. Includi quel valoreetag
nel passaggio successivo. -
Modifica il criterio di autorizzazione per concedere a
CALLER_ACCOUNT
il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
).Ad esempio, per modificare la risposta di esempio al passaggio precedente, aggiungi quanto segue:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
Scrivi il criterio di autorizzazione aggiornato:
Il metodo
serviceAccounts.setIamPolicy
imposta un criterio di autorizzazione aggiornato per l'account di servizio.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche comemy-project
.-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica della versione di un criterio durante il recupero di un criterio.-
POLICY
: una rappresentazione JSON del criterio che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta la documentazione di riferimento alle norme.Ad esempio, per impostare il criterio di autorizzazione mostrato nel passaggio precedente, sostituisci
POLICY
con il seguente, doveCALLER_ACCOUNT
è l'account utente che crea il token di breve durata:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON della richiesta:
{ "policy": POLICY }
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Genera il BLOB autofirmato
Genera un BLOB autofirmato per l'account di servizio:
REST
Il metodo serviceAccounts.signBlob
dell'API Service Account Credentials firma un BLOB utilizzando la chiave privata gestita dal sistema di un account di servizio.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
-
PRIV_SA
: l'indirizzo email dell'account di servizio con privilegi per cui è stato creato il token di breve durata. -
BLOB_PAYLOAD
: una stringa di byte con codifica Base64. Ad esempio,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu
.
Metodo HTTP e URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:signBlob
Corpo JSON della richiesta:
{ "payload": "BLOB_PAYLOAD" }
Per inviare la richiesta, espandi una di queste opzioni:
Se la richiesta signBlob
ha esito positivo, il corpo della risposta contiene un BLOB firmato e l'ID della chiave di firma utilizzato per firmare il BLOB. Puoi utilizzare il valore signedBlob
come token di connessione per autenticare direttamente una richiesta per conto dell'account di servizio. Il token è valido fino alla scadenza della chiave privata gestita dal sistema dell'account di servizio. L'ID di questa chiave è il
valore del campo keyId
nella risposta.
{ "keyId": "42ba1e...fc0a", "signedBlob": "eyJ0eXAi...NiJ9" }