Creare credenziali di breve durata per un account di servizio

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

In questa pagina viene spiegato come impersonare un account di servizio creando credenziali di breve durata per tale account di servizio.

Alcune architetture di sistema sono progettate per account di servizio che supportano i privilegi, progettati per essere utilizzati insieme. In questo caso, potrebbe essere necessario creare le credenziali per più account di servizio.

Informazioni sulla creazione di credenziali di breve durata

Gli account di servizio possono utilizzare credenziali di breve durata per autenticare le chiamate alle API Google Cloud, altre API Google e le API non Google. Le credenziali di breve durata hanno una durata limitata, con durate di poche ore o più brevi. Le credenziali dell'account di servizio di breve durata sono utili per gli scenari in cui devi concedere accesso limitato alle risorse per gli account di servizio attendibili. Creano anche meno rischi rispetto alle credenziali di lunga durata, come le chiavi degli account di servizio.

Le credenziali di breve durata possono essere rappresentate come token di accesso OAuth 2.0, token ID connessione OpenID Connect, token web JSON autofirmati e oggetti binari autofirmati (blob). I tipi di credenziali più utilizzati sono i token di accesso OAuth 2.0 e i token ID OIDC Connect. Puoi utilizzare ogni tipo di token nei seguenti casi:

  • Token di accesso OAuth 2.0: un token di accesso OAuth 2.0 è utile per autenticare l'accesso da un account di servizio alle API Google Cloud. Considera il seguente caso d'uso di esempio: per ottenere autorizzazioni elevate su un progetto, un amministratore può creare un token di accesso OAuth 2.0 che appartiene a un account di servizio, quindi utilizzare tale token per rappresentare l'account di servizio quando richiamano le API Google Cloud. La durata del token è breve e le autorizzazioni elevate sono temporanee. L'uso di token di breve durata consente di implementare il principio del privilegio minimo nelle identità e nelle risorse. Può essere utile anche in caso di emergenza in un ambiente di produzione e un amministratore ha bisogno di un'autorizzazione elevata a breve termine per il debug.
  • Token ID OIDC: un token ID OIDC è utile per autenticare l'identità di un account di servizio ai servizi che accettano OpenID Connect. Considera il seguente caso d'uso di esempio: creando un token ID OIDC appartenente a un account di servizio, un carico di lavoro in esecuzione su Google Cloud può autenticarsi a un altro carico di lavoro di cui è stato eseguito il deployment su un cloud provider di terze parti, come un job di pipeline di dati. Se il servizio di destinazione è configurato con OIDC, l'autenticazione avrà esito positivo.

Flusso di richieste dirette

Quando crei credenziali di breve durata per un account di servizio che utilizza un flusso di richiesta diretta, il chiamante effettua una richiesta diretta per la creazione di credenziali di breve durata. In questo flusso sono coinvolte due identità: il chiamante e l'account di servizio per il quale vengono create le credenziali.

Se l'architettura di sistema è progettata su livelli di account di servizio con privilegi limitati, consulta la sezione Creare credenziali di breve durata per più account di servizio.

Prima di iniziare

  • Abilita le API IAM and Service Account Credentials.

    Abilita le API

  • Informazioni sugli account di servizio IAM

  • Se non lo hai già fatto, attiva la fatturazione e l'API IAM seguendo la procedura descritta nella Guida rapida.

Fornisci le autorizzazioni richieste

Una richiesta diretta riguarda due identità: il chiamante e l'account di servizio per il quale vengono create le credenziali. La modalità di configurazione delle autorizzazioni varia a seconda che il chiamante utilizzi un account di servizio o le credenziali utente.

Se vuoi eseguire gli esempi in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali utente. Per uso in produzione, ad esempio un'applicazione in esecuzione su Compute Engine, utilizzerai un account di servizio per rappresentare il chiamante.

Fornire le autorizzazioni necessarie per un account utente

Quando 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, vengono 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 che fornisce i privilegi.

  • Account di servizio con privilegi privilegiati (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 abilitare CALLER_ACCOUNT a creare credenziali di breve durata per PRIV_SA, devi concedere a CALLER_ACCOUNT il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) su PRIV_SA.

Console

  1. In Google Cloud Console, vai alla pagina Account di servizio.

    Vai agli account di servizio

  2. Seleziona un progetto.

  3. Fai clic sull'indirizzo email dell'account di servizio che fornisce i privilegi PRIV_SA.

  4. Fai clic sulla scheda Autorizzazioni.

  5. In Entità con accesso a questo account di servizio, fai clic su Concedi l'accesso.

  6. Inserisci l'indirizzo email dell'Account Google del chiamante, CALLER_ACCOUNT.

    Ad esempio: username@google.com.

  7. Seleziona il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator).

  8. Fai clic su Salva per concedere il ruolo all'account utente.

gcloud

Concedi il ruolo richiesto su PRIV_SA:

Il comando gcloud iam service-accounts add-iam-policy-binding concede un ruolo su un account di servizio.

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, apporta le seguenti sostituzioni:

  • PRIV_SA: l'indirizzo email dell'account di servizio che fornisce i privilegi per cui viene generato il token.
  • CALLER_ACCOUNT: l'indirizzo email dell'account utente utilizzato per richiedere il token di breve durata.

Esegui il comando seguente:

Linux, macOS o Cloud Shell

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator

Windows (PowerShell)

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator

Windows (cmd.exe)

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator

Dovresti ricevere una risposta simile alla seguente:

Updated IAM policy for serviceAccount [PRIV_SA].
bindings:
- members:
  - user:CALLER_ACCOUNT
  role: roles/iam.serviceAccountTokenCreator
etag: BwXhCB4eyjY=
version: 1

REST

Per prima cosa, consulta il criterio di autorizzazione per PRIV_SA:

Il metodo serviceAccounts.getIamPolicy riceve un criterio di autorizzazione dell'account di servizio.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: ID progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.
  • PRIV_SA: l'indirizzo email dell'account di servizio che fornisce i privilegi per cui è stato creato il token di breve durata.
  • POLICY_VERSION: la versione del criterio da restituire. Le richieste devono specificare la versione più recente del criterio, ovvero la versione 3. Per maggiori dettagli, vedi Specificare la versione di un criterio durante l'acquisizione di un criterio.

Metodo HTTP e URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy

Corpo JSON richiesta:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Per inviare la richiesta, espandi una delle seguenti 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 nell'account di servizio, la risposta contiene solo un valore etag. Includi questo valore etag nel passaggio successivo.

Modifica il criterio di autorizzazione per concedere al ruolo CALLER_ACCOUNTCreatore token account di servizio (roles/iam.serviceAccountTokenCreator).

Ad esempio, per modificare la risposta di esempio del 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"
      ]
    }
  ]
}

Infine, scrivi la norma di autorizzazione aggiornata:

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: ID progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.
  • PRIV_SA: l'indirizzo email dell'account di servizio che fornisce i privilegi per cui viene creato il token di breve durata.
  • POLICY_VERSION: la versione del criterio da restituire. Le richieste devono specificare la versione più recente del criterio, ovvero la versione 3. Per maggiori dettagli, vedi Specificare la versione di un criterio durante l'acquisizione di un criterio.
  • POLICY: una rappresentazione JSON del criterio che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta il riferimento per i criteri.

    Ad esempio, per impostare il criterio di autorizzazione mostrato nel passaggio precedente, sostituisci POLICY con il seguente, in cui CALLER_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 richiesta:

{
  "policy": POLICY
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta contiene il criterio di autorizzazione aggiornato.

Fornire le autorizzazioni necessarie per un account di servizio

Quando l'applicazione di chiamata utilizza un account di servizio come identità, vengono coinvolte le seguenti entità:

  • Account di servizio chiamante (CALLER_SA)

    Questo account di servizio rappresenta l'applicazione di chiamata, che invia la richiesta per le credenziali di breve durata.

  • Account di servizio con privilegi privilegiati (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, devi concedere a CALLER_SA il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) su PRIV_SA.

Console

  1. In Google Cloud Console, vai alla pagina Account di servizio.

    Vai agli account di servizio

  2. Seleziona un progetto.

  3. Fai clic sull'indirizzo email dell'account di servizio che fornisce i privilegi PRIV_SA.

  4. Fai clic sulla scheda Autorizzazioni.

  5. In Entità con accesso a questo account di servizio, fai clic su Concedi l'accesso.

  6. Inserisci l'indirizzo email dell'account di servizio del chiamante, CALLER_SA.

    Ad esempio: demo@my-project.iam.gserviceaccount.com.

  7. Seleziona il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator).

  8. Fai clic su Salva per concedere il ruolo all'account di servizio.

gcloud

Concedi il ruolo richiesto su PRIV_SA:

Il comando gcloud iam service-accounts add-iam-policy-binding concede un ruolo su un account di servizio.

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, apporta le seguenti sostituzioni:

  • PRIV_SA: l'indirizzo email dell'account di servizio che fornisce i 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 il comando seguente:

Linux, macOS o Cloud Shell

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator

Windows (PowerShell)

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator

Windows (cmd.exe)

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator

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

Per prima cosa, consulta il criterio di autorizzazione per PRIV_SA:

Il metodo serviceAccounts.getIamPolicy riceve un criterio di autorizzazione dell'account di servizio.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: ID progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.
  • PRIV_SA: l'indirizzo email dell'account di servizio che fornisce i privilegi per cui è stato creato il token di breve durata.
  • POLICY_VERSION: la versione del criterio da restituire. Le richieste devono specificare la versione più recente del criterio, ovvero la versione 3. Per maggiori dettagli, vedi Specificare la versione di un criterio durante l'acquisizione di un criterio.

Metodo HTTP e URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy

Corpo JSON richiesta:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Per inviare la richiesta, espandi una delle seguenti 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 nell'account di servizio, la risposta contiene solo un valore etag. Includi questo valore etag nel passaggio successivo.

In seguito, 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 del 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"
      ]
    }
  ]
}

Infine, scrivi la norma di autorizzazione aggiornata:

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: ID progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.
  • PRIV_SA: l'indirizzo email dell'account di servizio che fornisce i privilegi per cui viene creato il token di breve durata.
  • POLICY_VERSION: la versione del criterio da restituire. Le richieste devono specificare la versione più recente del criterio, ovvero la versione 3. Per maggiori dettagli, vedi Specificare la versione di un criterio durante l'acquisizione di un criterio.
  • POLICY: una rappresentazione JSON del criterio che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta il riferimento per i criteri.

    Ad esempio, per impostare il criterio di autorizzazione mostrato nel passaggio precedente, sostituisci POLICY con il seguente, in cui CALLER_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 richiesta:

{
  "policy": POLICY
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta contiene il criterio di autorizzazione aggiornato.

Richiesta di credenziali di breve durata

Dopo aver concesso i ruoli appropriati a ogni identità, puoi richiedere le credenziali di breve durata per l'account di servizio desiderato. Sono supportati i seguenti tipi di credenziali:

Gli esempi in questa sezione richiedono che tu utilizzi un account utente.

Generare un token di accesso OAuth 2.0

Puoi generare un token di accesso OAuth 2.0 utilizzando l'interfaccia a riga di comando gcloud, 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 per consentire durate dei token estese, 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.

Per generare un token di accesso OAuth 2.0 per l'account di servizio che fornisce i privilegi:

gcloud

  1. Accedi a Google Cloud CLI come Account Google del chiamante.

    gcloud auth login CALLER_ACCOUNT
    
  2. Impersonare l'account di servizio che fornisce i privilegi per generare il token.

    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, apporta le seguenti sostituzioni:

    • PRIV_SA: l'indirizzo email dell'account di servizio che fornisce i privilegi per cui è stato creato il token di breve durata.
      • Esegui il comando seguente:

        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 delle credenziali dell'account di servizio 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 che fornisce i privilegi per cui è stato creato il token di breve durata.
  • LIFETIME: quantità di tempo alla scadenza del token di accesso, in secondi. Ad esempio, 300s.

    Per impostazione predefinita, la durata massima del token è di un'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 include il vincolo dell'elenco constraints/iam.allowServiceAccountCredentialLifetimeExtension.

Metodo HTTP e URL:

POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateAccessToken

Corpo JSON richiesta:

{
  "scope": [
    "https://www.googleapis.com/auth/cloud-platform"
  ],
  "lifetime": "LIFETIME"
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Se la richiesta generateAccessToken ha avuto 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"
}

Generazione di token ID OpenID Connect

Puoi generare un token ID OpenID Connect (OIDC) utilizzando l'interfaccia a riga di comando gcloud, 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).

Per generare un token ID OIDC firmato da Google per l'account di servizio che fornisce i privilegi:

gcloud

  1. Accedi a Google Cloud CLI come Account Google del chiamante.

    gcloud auth login CALLER_ACCOUNT
    
  2. Impersonare l'account di servizio che fornisce i privilegi per generare il token.

    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, apporta le seguenti sostituzioni:

    • PRIV_SA: l'indirizzo email dell'account di servizio che fornisce i privilegi per cui è stato creato il token di breve durata.
    • AUDIENCE_NAME: il pubblico per il token, in genere l'URL dell'applicazione o del servizio a cui il token verrà utilizzato per accedere.
      • Esegui il comando seguente:

        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 delle credenziali dell'account di servizio 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 che fornisce i privilegi per cui è stato creato il token di breve durata.
  • AUDIENCE_NAME: il pubblico per il 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 richiesta:

{
  "audience": "AUDIENCE_NAME",
  "includeEmail": "true"
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Se la richiesta generateId ha avuto 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"
}

Creazione di un token web JSON autofirmato (JWT)

I token JWT (self-Signeded) sono utili in vari scenari, ad esempio:

  • Autenticazione di una chiamata a un'API di Google come descritto nella Guida di autenticazione di Google.
  • Comunicare in modo sicuro tra Google Cloud o servizi non Google, ad esempio un'applicazione in esecuzione su App Engine. In questo scenario, un'applicazione può firmare un token che può essere verificato da un'altra applicazione ai fini dell'autenticazione.
  • Trattare un account di servizio come un provider di identità firmando un JWT che contiene dichiarazioni arbitrarie su un utente, un account o un dispositivo.

Per eseguire l'esempio riportato di seguito, devi utilizzare un account utente come credenziale del chiamante.

Per generare un JWT autofirmato per l'account di servizio che fornisce i privilegi:

REST

Il metodo serviceAccounts.signJwt delle credenziali dell'account di servizio firma un JWT utilizzando una 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 che fornisce i privilegi per cui è stato creato il token di breve durata.
  • JWT_PAYLOAD: il payload JWT da firmare, che è un oggetto JSON contenente un set di rivendicazioni JWT. Includi le affermazioni necessarie per il caso d'uso desiderato e per soddisfare i requisiti di convalida per il servizio che chiami. Se chiami un'API di Google, consulta la Guida di autenticazione di Google per i requisiti della rivendicazione.

    La rivendicazione exp (scadenza) non deve superare le 12 ore future. Se chiami un'API di Google, la rivendicazione exp non deve essere impostata per più di un'ora nel futuro.

    Il seguente payload di esempio contiene dichiarazioni per chiamare un'API di Google, dove EXP è un timestamp 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 richiesta:

{
  "payload": "JWT_PAYLOAD"
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Se la richiesta signJwt ha 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 data di scadenza specificata nella richiesta:

{
  "keyId": "42ba1e...fc0a",
  "signedJwt": "eyJ0eXAi...NiJ9"
}

Creazione di un blob autofirmato

I blob autofirmati sono utili quando devi trasmettere in modo sicuro dati binari arbitrari, di solito per l'autenticazione. Ad esempio, se vuoi utilizzare un protocollo/tipo di token personalizzato (non JWT), puoi includere questi dati in un blob firmato per l'utilizzo da parte di un servizio a valle.

Per eseguire l'esempio riportato di seguito, devi utilizzare un account utente come credenziale del chiamante.

Per generare un blob autofirmato per l'account di servizio che fornisce i privilegi:

REST

Il metodo serviceAccounts.signBlob delle credenziali dell'account di servizio firma un blob utilizzando una 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 che fornisce i 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 richiesta:

{
  "payload": "BLOB_PAYLOAD"
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Se la richiesta signBlob ha avuto 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"
}