L'API Service Account Credentials crea credenziali di breve durata per gli account di servizio Identity and Access Management (IAM). Puoi anche utilizzare questa API per firmare token web JSON (JWT) e 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 deprecati 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 un nuovo claim al set di claim JWT. Puoi comunque utilizzare i metodi ritirati, ma non supportano funzionalità avanzate come il raggruppamento delle richieste HTTP. Ti invitiamo a eseguire la migrazione all'API Service Account Credentials.
Rispetto all'API IAM, l'API Service Account Credentials offre una maggiore flessibilità per la data e l'ora 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 Credentials Service Account. Se hai un feedback su 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 feedback dettagliati.
Prima di iniziare
-
Enable the Service Account Credentials API.
Abilitazione degli audit log
Se vuoi ricevere log di controllo per le richieste di firma di JWT e blob, devi attivare i log di controllo dell'accesso ai dati per l' API IAM. L'attivazione dei log di controllo dell'accesso ai dati per l'API IAM attiva questi log anche per l'API Credentials dell'account di servizio.
Esistono alcune differenze significative tra le voci di log generate da ciascuna API:
Differenze per le voci dei 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 di accesso ai dati vengono conteggiati ai fini dell'allocazione mensile gratuita per l'importazione dei dati di logging. Se superi questa allocazione, ti verrà addebitato l'importazione dei log. Per maggiori dettagli, consulta la pagina Prezzi di Google Cloud Observability.
Eseguire la migrazione del codice per la firma dei JWT
Questa sezione descrive come eseguire la migrazione del codice che firma i JWT all'API Service Account Credentials.
Firma dei token JWT con l'API REST
La tabella seguente mostra le differenze tra la firma di un JWT con l'API REST IAM e la firma di un JWT con l'API Service Account Credentials. Aggiorna il codice per riflettere queste differenze:
Differenze per la firma di un JWT | |
---|---|
Endpoint HTTP |
API IAM L'API IAM utilizza i seguenti metodi e endpoint HTTP:
API Service Account Credentials Utilizza il seguente metodo e endpoint HTTP. 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 fornisci una richiesta con un'ora 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. |
Firma dei 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 all'applicazione e aggiorna il codice in modo da utilizzare la nuova libreria client:
C#
Aggiungi la libreria client per le credenziali dell'account di servizio per C# alla tua 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 C#, puoi rimuoverla dalla tua applicazione.
Go
Aggiungi la libreria client Credenziali dell'account di servizio per Go alla tua 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 IAM per Go, puoi rimuoverla dalla tua applicazione.
Java
Aggiungi la libreria client Credenziali dell'account di servizio per Java alla tua 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 dalla tua applicazione.
Node.js
Aggiungi la libreria client Credenziali dell'account di servizio per Node.js alla tua 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 dalla tua applicazione.
PHP
Aggiungi la libreria client Credenziali dell'account di servizio per PHP alla tua 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 dalla tua applicazione.
Python
Aggiungi la libreria client Credenziali dell'account di servizio per Python alla tua 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
iam_credentials
libreria client, puoi rimuoverla dalla tua applicazione.
Ruby
Aggiungi la libreria client Credenziali dell'account di servizio per Ruby alla tua 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.
Eseguire la migrazione del codice per la firma dei blob binari
Questa sezione descrive come eseguire la migrazione del codice che firma i blob binari all'API Service Account Credentials.
Firma dei blob binari con l'API REST
La tabella seguente mostra le differenze tra la firma di un blob binario con l'API REST IAM e la firma di 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 e endpoint HTTP:
API Service Account Credentials Utilizza il seguente metodo e endpoint HTTP. 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 all'applicazione e aggiorna il codice in modo da utilizzare la nuova libreria client:
C++
Se utilizzi la libreria client C++ di Cloud Storage per firmare i BLOB,direttamente o come dipendenza di un'altra libreria client:
Esegui l'upgrade alla versione 0.9.0 o successiva di
google-cloud-cpp
.
Se utilizzi 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 di un'altra libreria client:
Aggiungi la libreria client per le credenziali dell'account di servizio per C# alla tua 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 C#, puoi rimuoverla dalla tua applicazione.
Se utilizzi l'SDK DotNet Firebase Admin,direttamente o come dipendenza di un'altra libreria client:
Esegui l'upgrade alla versione 1.17.1 o successiva di firebase-admin-dotnet
.
Se utilizzi 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 Credenziali dell'account di servizio per Go alla tua 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 IAM per Go, puoi rimuoverla dalla tua applicazione.
Se utilizzi l'SDK Firebase Admin Go,direttamente o come dipendenza di un'altra libreria client:
Esegui l'upgrade alla versione 4.1.0 o successiva di firebase-admin-go
.
Se utilizzi 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 Credenziali dell'account di servizio per Java alla tua 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 dalla tua applicazione.
Se utilizzi la libreria Google Auth per Java,direttamente o come dipendenza di un'altra libreria client:
Esegui l'upgrade alla versione 0.14.0 o successiva di google-auth-library-java
.
Se utilizzi l'SDK Java Firebase Admin,direttamente o come dipendenza di un'altra libreria client:
Esegui l'upgrade alla versione 7.0.1 o successive di firebase-admin-java
.
Se utilizzi 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 Credenziali dell'account di servizio per Node.js alla tua 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 dalla tua applicazione.
Se utilizzi la libreria di autenticazione di Google per Node.js,direttamente o come dipendenza di un'altra libreria client:
Esegui l'upgrade alla versione 6.0.0 o successiva di google-auth-library-nodejs
.
Se utilizzi l'SDK Node.js Firebase Admin,direttamente o come dipendenza di un'altra libreria client:
Esegui l'upgrade alla versione 8.13.0 o successiva di firebase-admin-node
.
Se utilizzi 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 Credenziali dell'account di servizio per PHP alla tua 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 dalla tua applicazione.
Se utilizzi la libreria di autenticazione di Google per PHP,direttamente o come dipendenza di un'altra libreria client:
Esegui l'upgrade alla versione 1.5.0 o successiva di google-auth-library-php
.
Se utilizzi 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 Credenziali dell'account di servizio per Python alla tua 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
iam_credentials
libreria client, puoi rimuoverla dalla tua applicazione.
Se utilizzi la libreria Google Auth per Python,direttamente o come dipendenza di un'altra libreria client:
Esegui l'upgrade alla versione 1.21.2 o successiva di google-auth-library-python
.
Se utilizzi il client Python per Cloud Storage,direttamente o come dipendenza di un'altra libreria client:
Esegui l'upgrade alla versione 1.30.0 o successiva di python-storage
.
Se utilizzi 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 Credenziali dell'account di servizio per Ruby alla tua 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 utilizzi un'altra libreria client per firmare i blob:
Contatta iam-sign-deprecation-public@google.com
per ricevere assistenza.
Eseguire la migrazione del codice che utilizza gcloud CLI
Google Cloud CLI fornisce comandi che utilizzano l'API IAM per firmare JWT e blob binari, tra cui:
A partire dal 1° luglio 2021, aggiorneremo questi comandi per farli utilizzare l'API Service Account Credentials. Questa modifica non influirà sui comandi per firmare i blob.
Se utilizzi gcloud CLI per firmare i JWT, devi seguire questi passaggi prima del 1° luglio 2021:
Controlla se includi l'attributo della data e dell'ora di scadenza (
exp
) nell'insieme di attestazioni JWT.Se includi già questa dichiarazione, non devi apportare alcuna modifica. Puoi saltare i passaggi rimanenti.
Se non includi questa dichiarazione, vai al passaggio successivo.
Verifica se utilizzi il JWT firmato per autenticarti con le API Google o con un'altra API che richiede il claim
exp
.Se ometti questa rivendicazione, l'API IAM la imposta automaticamente su 1 ora nel 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 ignorare i passaggi rimanenti.Se sai di aver bisogno della rivendicazione
exp
o se hai dubbi, vai al passaggio successivo.Aggiorna il codice per la creazione dei JWT in modo che aggiunga l'attributo
exp
all'insieme di attributi JWT.Puoi impostare la rivendicazione
exp
fino a un massimo di 1 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 dover richiedere un aumento anche per l'API Service Account Credentials.
Per visualizzare la quota e l'utilizzo effettivo di entrambe le API e per richiedere un aumento della quota, se necessario, procedi nel seguente modo:
Nella console Google Cloud, vai alla pagina Quote.
Seleziona un progetto. Puoi fare clic su un progetto recente o su Seleziona progetto per cercare in tutti i tuoi progetti.
Nella casella di testo Filtra tabella sopra la tabella, inserisci
Sign requests per minute
e seleziona il valore visualizzato.Nella casella di testo Filtra tabella, seleziona OPPURE dall'elenco a discesa.
Nella casella di testo Filtra tabella, inserisci
Generate credentials
, quindi seleziona il valore visualizzato.La console Google Cloud mostra il tuo utilizzo corrente per la firma di JWT e blob nell'ultimo minuto, il tuo picco di utilizzo al minuto negli ultimi 7 giorni e la tua quota attuale, che viene visualizzata nella colonna Limite.
Confronta le quote per ogni riga della tabella e assicurati che la quota per l'API Credentials for Service Account sia superiore al picco di utilizzo di 7 giorni dell'API IAM.
(Facoltativo) Se la quota per l'API Service Account Credentials è troppo bassa, selezionate la casella di controllo per l'API Service Account Credentials, quindi fate 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 Credentials dell'account di servizio.
- Visualizza i dettagli sull'API REST per l'API Service Account Credentials.
- Scopri di più su quote e limiti per IAM.