L'API Service Account Credentials crea credenziali di breve durata per gli account di servizio Identity and Access Management (IAM). Puoi usare questa API anche per firmare token web JSON (JWT), nonché blob di dati binari che contengono altri tipi di token.
L'API IAM contiene anche metodi per la firma di JWT e blob binari. A partire dal 1° luglio 2020, questi metodi sono stati ritirati nell'API REST e in tutte le librerie client per l'API IAM. Inoltre, se utilizzi Google Cloud CLI per firmare i JWT, potresti dover aggiungere una nuova rivendicazione al Set di rivendicazioni JWT. Puoi continuare a utilizzare i metodi obsoleti, ma non supportano le funzionalità avanzate come il batch della richiesta HTTP. Ti invitiamo a eseguire la migrazione all'API Service Account Credentials.
Rispetto all'API IAM, l'API Service Account Credentials fornisce maggiore flessibilità per la data di scadenza dei JWT firmati. Inoltre, l'API Service Account Credentials aggiunge diversi nuovi metodi API per generare token di rappresentazione.
Questa pagina spiega come aggiornare il codice esistente per utilizzare l'API Service AccountCredentials. Se hai feedback in merito a questa modifica, puoi compilare il modulo di feedback. Puoi anche utilizzare l'indirizzo email iam-sign-deprecation-public@google.com per richiedere assistenza e fornire un feedback dettagliato.
Prima di iniziare
-
Attiva Service Account Credentials API.
Abilitazione degli audit log
Se vuoi ricevere gli audit log per le richieste di firma di JWT e blob, devi abilitare gli audit log di accesso ai dati per l'API IAM. L'abilitazione degli audit log di accesso ai dati per l'API IAM attiva anche questi audit log per l'API Service Account Credentials.
Esistono alcune differenze significative tra le voci di log generate da ogni API:
Differenze per le voci del log di controllo | |
---|---|
Nome metodo |
API IAM
Il nome del metodo (
API Service Account Credentials Il nome del metodo è uno dei seguenti:
|
Tipo di richiesta |
API IAM
Il tipo di richiesta (
API Service Account Credentials Il tipo di richiesta è uno dei seguenti:
|
Nome servizio |
API IAM
Il nome del servizio ( API Service Account Credentials
Il nome del servizio è |
Gli audit log dell'accesso ai dati vengono conteggiati ai fini dell'allocazione mensile gratuita per l'importazione dei dati di logging. Se superi questa allocazione, ti verrà addebitata l'importazione dei log. Per i dettagli, consulta Prezzi della suite operativa di Google Cloud.
Migrazione del codice per la firma di JWT
Questa sezione descrive come eseguire la migrazione del codice che firma i JWT nell'API Service Credentials Credentials.
Firma dei JWT con l'API REST
La tabella seguente mostra le differenze tra firmare un JWT con l'API IAM REST e firmare un JWT con l'API Service Account Credentials. Aggiorna il codice in modo che rifletta queste differenze:
Differenze per la firma di un JWT | |
---|---|
Endpoint HTTP |
API IAM L'API IAM utilizza i seguenti metodi ed endpoint HTTP:
API Service Account Credentials Utilizza il metodo e l'endpoint HTTP indicati di seguito. Non sostituire il carattere jolly con l'ID progetto:
In questo URL, |
Corpo della richiesta |
API IAM Il corpo della richiesta include un campo Se presenti una richiesta di scadenza ( API Service Account Credentials Il corpo della richiesta include un campo
|
Corpo della risposta |
Entrambe le API utilizzano gli stessi campi nel corpo della risposta. |
Firmare i JWT con una libreria client
Le librerie client per l'API Service Account Credentials sono separate dalle librerie client per l'API IAM.
Per utilizzare l'API Service Account Credentials, aggiungi la relativa libreria client alla tua applicazione e aggiorna il codice per utilizzare la nuova libreria client:
C#
Aggiungi alla tua applicazione la libreria client delle credenziali dell'account di servizio
per C#. Utilizza il
metodo SignJwt()
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido: nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la libreria client IAM per C#, puoi rimuoverla dall'applicazione.
Go
Aggiungi la libreria client delle credenziali dell'account di servizio
Go all'applicazione. Utilizza IamCredentialsClient.SignJwt() function
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido: nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la libreria client di IAM, puoi rimuoverla dall'applicazione.
Java
Aggiungi la libreria client delle credenziali dell'account di servizio
per Java all'applicazione. Utilizza il
metodo IamCredentialsClient#signJwt()
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido: nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la libreria client IAM per Java, puoi rimuoverla dall'applicazione.
Node.js
Aggiungi la libreria client delle credenziali dell'account di servizio
per Node.js all'applicazione. Utilizza il
metodo signJwt()
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido:nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la libreria client IAM per Node.js, puoi rimuoverla dall'applicazione.
PHP
Aggiungi la libreria client delle credenziali dell'account di servizio
per PHP all'applicazione. Utilizza il
metodo signJwt()
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido: nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la libreria client IAM per PHP, puoi rimuoverla dall'applicazione.
Python
Aggiungi la libreria client delle credenziali dell'account di servizio
per Python all'applicazione. Utilizza il
metodo sign_jwt()
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido:nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la
libreria client di iam_credentials
, puoi rimuoverla dalla tua applicazione.
Ruby
Aggiungi la libreria client delle credenziali dell'account di servizio
per Ruby all'applicazione. Utilizza il
metodo sign_service_account_jwt()
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido:nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la libreria client IAM per Ruby, puoi rimuoverla dalla tua applicazione.
Migrazione del codice per la firma di blob binari
Questa sezione descrive come eseguire la migrazione del codice che firma i blob binari nell'API Service Account Credentials.
Firma dei blob binari con l'API REST
La tabella seguente mostra le differenze tra firmare un blob binario con l'API IAM REST e firmare un blob binario con l'API Service Account Credentials. Aggiorna il codice in modo che rifletta queste differenze:
Differenze per la firma di un blob binario | |
---|---|
Endpoint HTTP |
API IAM L'API IAM utilizza i seguenti metodi ed endpoint HTTP:
API Service Account Credentials Utilizza il metodo e l'endpoint HTTP indicati di seguito. Non sostituire il carattere jolly con l'ID progetto:
In questo URL, |
Corpo della richiesta |
API IAM Il corpo della richiesta include un campo API Service Account Credentials Il corpo della richiesta include un campo |
Corpo della risposta |
API IAM Il corpo della risposta contiene un campo API Service Account Credentials Il corpo della risposta contiene un campo |
Firma di blob binari con una libreria client
Le librerie client per l'API Service Account Credentials sono separate dalle librerie client per l'API IAM.
Per utilizzare l'API Service Account Credentials, aggiungi la relativa libreria client alla tua applicazione e aggiorna il codice per utilizzare la nuova libreria client:
C++
Se usi la libreria client C++ di Cloud Storage per firmare i blob, direttamente o come dipendenza da un'altra libreria client:
Esegui l'upgrade alla versione 0.9.0 o successive di
google-cloud-cpp
.
Se usi un'altra libreria client per firmare i blob:
Contatta iam-sign-deprecation-public@google.com
per ricevere assistenza.
C#
Se utilizzi la libreria client IAM per C#, direttamente o come dipendenza da un'altra libreria client:
Aggiungi alla tua applicazione la libreria client delle credenziali dell'account di servizio
per C#. Utilizza il
metodo SignBlob()
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido:nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la libreria client IAM per C#, puoi rimuoverla dall'applicazione.
Se utilizzi l'SDK Firebase DotNet per gli amministratori,direttamente o come dipendenza di un'altra libreria client:
Esegui l'upgrade alla versione 1.17.1 o successive di firebase-admin-dotnet
.
Se usi un'altra libreria client per firmare i blob:
Contatta iam-sign-deprecation-public@google.com
per ricevere assistenza.
Go
Se utilizzi la libreria client IAM per Go, direttamente o come dipendenza di un'altra libreria client:
Aggiungi la libreria client delle credenziali dell'account di servizio
Go all'applicazione. Utilizza IamCredentialsClient.SignBlob() function
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido:nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la libreria client di IAM, puoi rimuoverla dall'applicazione.
Se utilizzi l'SDK Firebase Admin Go,direttamente o come dipendenza da un'altra libreria client:
Esegui l'upgrade alla versione 4.1.0 o successive di firebase-admin-go
.
Se usi un'altra libreria client per firmare i blob:
Contatta iam-sign-deprecation-public@google.com
per ricevere assistenza.
Java
Se utilizzi la libreria client IAM per Java,direttamente o come dipendenza di un'altra libreria client:
Aggiungi la libreria client delle credenziali dell'account di servizio
per Java all'applicazione. Utilizza il
metodo IamCredentialsClient#signBlob()
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido: nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la libreria client IAM per Java, puoi rimuoverla dall'applicazione.
Se utilizzi la libreria di autenticazione Google per Java,direttamente o come dipendenza da un'altra libreria client:
Esegui l'upgrade alla versione 0.14.0 o successive di google-auth-library-java
.
Se utilizzi l'SDK Java di Firebase Admin, direttamente o come dipendenza da un'altra libreria client:
Esegui l'upgrade alla versione 7.0.1 o successive di firebase-admin-java
.
Se usi un'altra libreria client per firmare i blob:
Contatta iam-sign-deprecation-public@google.com
per ricevere assistenza.
Node.js
Se utilizzi la libreria client IAM per Node.js, direttamente o come dipendenza di un'altra libreria client:
Aggiungi la libreria client delle credenziali dell'account di servizio
per Node.js all'applicazione. Utilizza il
metodo signBlob()
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido: nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la libreria client IAM per Node.js, puoi rimuoverla dall'applicazione.
Se utilizzi la libreria di autenticazione Google per Node.js, direttamente o come dipendenza da un'altra libreria client:
Esegui l'upgrade alla versione 6.0.0 o successive di google-auth-library-nodejs
.
Se utilizzi l'SDK Firebase Admin Node.js, direttamente o come dipendenza di un'altra libreria client:
Esegui l'upgrade alla versione 8.13.0 o successive di firebase-admin-node
.
Se usi un'altra libreria client per firmare i blob:
Contatta iam-sign-deprecation-public@google.com
per ricevere assistenza.
PHP
Se utilizzi la libreria client IAM per PHP, direttamente o come dipendenza di un'altra libreria client:
Aggiungi la libreria client delle credenziali dell'account di servizio
per PHP all'applicazione. Utilizza il
metodo signBlob()
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido:nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la libreria client IAM per PHP, puoi rimuoverla dall'applicazione.
Se utilizzi la libreria di autenticazione Google per PHP, direttamente o come dipendenza da un'altra libreria client:
Esegui l'upgrade alla versione 1.5.0 o successive di google-auth-library-php
.
Se usi un'altra libreria client per firmare i blob:
Contatta iam-sign-deprecation-public@google.com
per ricevere assistenza.
Python
Se utilizzi la libreria client IAM per Python, direttamente o come dipendenza di un'altra libreria client:
Aggiungi la libreria client delle credenziali dell'account di servizio
per Python all'applicazione. Utilizza il
metodo sign_blob()
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido:nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la
libreria client di iam_credentials
, puoi rimuoverla dalla tua applicazione.
Se utilizzi la libreria di autenticazione Google per Python,direttamente o come dipendenza da un'altra libreria client:
Esegui l'upgrade alla versione 1.21.2 o successive di google-auth-library-python
.
Se utilizzi il client Python per Cloud Storage, direttamente o come dipendenza da un'altra libreria client:
Esegui l'upgrade alla versione 1.30.0 o successive di python-storage
.
Se usi un'altra libreria client per firmare i blob:
Contatta iam-sign-deprecation-public@google.com
per ricevere assistenza.
Ruby
Se utilizzi la libreria client IAM per Ruby, direttamente o come dipendenza di un'altra libreria client:
Aggiungi la libreria client delle credenziali dell'account di servizio
per Ruby all'applicazione. Utilizza il
metodo sign_service_account_blob()
per generare una firma.
Il nome dell'account di servizio deve utilizzare il carattere jolly -
per rappresentare l'ID progetto:
Valido: nome con carattere jolly
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Non valido: nome con ID progetto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Se non utilizzi più la libreria client IAM per Ruby, puoi rimuoverla dalla tua applicazione.
Se usi un'altra libreria client per firmare i blob:
Contatta iam-sign-deprecation-public@google.com
per ricevere assistenza.
Migrazione del codice che utilizza gcloud CLI
Google Cloud CLI fornisce i comandi che utilizzano l'API IAM per firmare JWT e blob binari, tra cui:
Il 1° luglio 2021 o in data successiva aggiorneremo questi comandi per utilizzare l'API Service Account Credentials. Questa modifica non influirà sui comandi per la firma di blob.
Se usi l'interfaccia a riga di comando gcloud per firmare i JWT, devi seguire questi passaggi prima del 1° luglio 2021:
Verifica se includi la rivendicazione con data/ora di scadenza (
exp
) nel set di rivendicazioni JWT.Se includi già questa rivendicazione, non devi apportare alcuna modifica. Puoi saltare i passaggi rimanenti.
Se non includi questa rivendicazione, vai al passaggio successivo.
Controlla se utilizzi il JWT firmato per autenticarti con le API di Google o con un'altra API che richiede la rivendicazione
exp
.Se ometti questa rivendicazione, l'API IAM la imposta automaticamente su 1 ora in futuro. Al contrario, l'API Service Account Credentials non imposta automaticamente questo campo.
Se hai la certezza di non aver bisogno della rivendicazione
exp
, non devi apportare alcuna modifica. Puoi saltare i passaggi rimanenti.Se sai che la rivendicazione di
exp
è necessaria o se hai dubbi, vai al prossimo passaggio.Aggiornare il codice per creare JWT in modo che aggiunga la rivendicazione
exp
al set di rivendicazioni JWT.Puoi impostare la rivendicazione
exp
fino a un'ora nel futuro.
Verifica delle quote
La quota per l'API Service Account Credentials è separata dalla quota per l'API IAM. Se hai ricevuto un aumento della quota per firmare JWT e blob con l'API IAM, potresti anche dover richiedere un aumento per l'API Service Account Credentials.
Per visualizzare la quota e l'utilizzo effettivo di entrambe le API e richiedere un aumento della quota, se necessario, procedi come segue:
Nella console Google Cloud, vai alla pagina Quote.
Seleziona un progetto. Puoi fare clic su un progetto recente oppure puoi fare clic su Seleziona progetto per cercare in tutti i progetti.
Nella casella di testo Filtra tabella sopra la tabella, inserisci
Sign requests per minute
, poi seleziona il valore visualizzato.Nella casella di testo Filtra tabella, seleziona O dall'elenco a discesa.
Nella casella di testo Filtra tabella, inserisci
Generate credentials
, quindi seleziona il valore visualizzato.La console Google Cloud mostra l'utilizzo attuale per la firma di JWT e blob nell'ultimo minuto, l'utilizzo massimo al minuto negli ultimi 7 giorni e la quota attuale, che viene visualizzata nella colonna Limite.
Confronta le quote di ogni riga della tabella e assicurati che la tua quota per l'API Service Account Credentials sia superiore all'utilizzo massimo di sette giorni dell'API IAM.
(Facoltativo) Se la quota per l'API Service Account Credentials è troppo bassa, seleziona la casella di controllo per l'API Service Account Credentials, quindi fai clic su Modifica quote. Compila il modulo per richiedere un aumento della quota.
Ripeti questi passaggi per ogni progetto in cui utilizzi l'API IAM per firmare JWT e blob.
Passaggi successivi
- Scopri come creare un JWT firmato o creare un blob binario firmato con l'API REST degli account di servizio.
- Ottieni dettagli sull'API REST per l'API Service Account Credentials.
- Scopri quote e limiti per IAM.