In questa pagina vengono descritti alcuni modi per acquisire un account OpenID Connect (OIDC) firmato da Google token ID.
È necessario un token ID firmato da Google per la seguente autenticazione casi d'uso:
- Accesso a un servizio Cloud Run
- Richiamo di una funzione Cloud Run
- Autenticazione di un utente in un'applicazione protetta da Identity-Aware Proxy (IAP)
- Eseguire una richiesta a un'API di cui è stato eseguito il deployment con API Gateway o Cloud Endpoints
Per informazioni sui contenuti e sulle durate dei token ID, consulta Token ID.
I token ID hanno un servizio o un'applicazione specifici per i quali possono essere utilizzati, specificati dal valore della loro aud
rivendicazione. In questa pagina viene utilizzato il termine servizio di destinazione per fare riferimento al servizio o all'applicazione con cui è possibile autenticarsi utilizzando il token ID.
Quando ricevi il token ID, puoi includerlo in una
Intestazione Authorization
nella richiesta al servizio di destinazione.
Metodi per ottenere un token di identità
Esistono diversi modi per ottenere un token ID. In questa pagina vengono descritte le seguenti informazioni: metodo:
- Ottenere un token ID dal server dei metadati
- Utilizzare un servizio di collegamento per generare un token ID
- Genera un token di identità rubando l'identità di un account di servizio
- Genera un token ID generico per lo sviluppo con Cloud Run e le funzioni Cloud Run
Se hai bisogno che un token di abilitazione venga accettato da un'applicazione non ospitata su Google Cloud, probabilmente puoi utilizzare questi metodi. Tuttavia, devi determinare quali rivendicazioni del token ID sono richieste dall'applicazione.
Ottenere un token ID dal server dei metadati
Quando il codice viene eseguito su una risorsa a cui può essere associato un account di servizio, il server dei metadati per il servizio associato in genere può fornire un token ID. Il server dei metadati genera token di identità per l'account di servizio associato. Non puoi ottenere un token ID in base alle credenziali utente dal server di metadati.
Puoi ottenere un token ID dal server dei metadati quando il tuo codice è in esecuzione sui seguenti servizi Google Cloud:
- Compute Engine
- Ambiente standard di App Engine
- Ambiente flessibile di App Engine
- Funzioni di Cloud Run
- Cloud Run
- Google Kubernetes Engine
- Cloud Build
Per recuperare un token ID dal server dei metadati, esegui una query sull'endpoint di identità per l'account di servizio, come mostrato in questo esempio.
curl
Sostituisci AUDIENCE
con l'URI del servizio di destinazione,
ad esempio http://www.example.com
.
curl -H "Metadata-Flavor: Google" \ 'http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE'
PowerShell
Sostituisci AUDIENCE
con l'URI del servizio di destinazione,
ad esempio http://www.example.com
.
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE") $value
Java
Per eseguire questo esempio di codice, devi installare la libreria client Auth per Java.
Vai
Node.js
Per eseguire questo esempio di codice, devi installare la libreria di autenticazione di Google per Node.js
Python
Per eseguire questo esempio di codice, devi installare la Libreria Python di autenticazione di Google.
Ruby
Per eseguire questo esempio di codice, devi installare la Libreria di autenticazione Google per Ruby.
Utilizza un servizio di connessione per generare un token ID
Alcuni servizi Google Cloud ti aiutano a chiamare altri servizi. Queste connessioni
possono aiutare a determinare quando viene effettuata la chiamata o a gestire un flusso di lavoro
include le chiamate al servizio. I seguenti servizi possono includere automaticamente un token ID, con il valore appropriato per l'affermazione aud
, quando avviano una chiamata a un servizio che richiede un token ID:
- Cloud Scheduler
- Cloud Scheduler è un servizio di livello enterprise completamente gestito per la pianificazione di cron job. Puoi configurare Cloud Scheduler in modo che includa un token ID o un token di accesso quando richiama un altro servizio. Per ulteriori informazioni, consulta Utilizzo dell'autenticazione con target HTTP.
- Cloud Tasks
- Cloud Tasks ti consente di gestire l'esecuzione di attività distribuite. Puoi configurare un'attività in modo che includa un token ID o un token di accesso quando chiama un servizio. Per saperne di più, consulta Utilizzare le attività Target HTTP con token di autenticazione.
- Pub/Sub
- Pub/Sub consente la comunicazione asincrona tra i servizi. Puoi configurare Pub/Sub in modo da includere un token ID con un messaggio. Per ulteriori informazioni, consulta la sezione Autenticazione per l'iscrizione push.
- Workflows
- Workflows è una piattaforma di orchestrazione completamente gestita che esegue i servizi in un ordine definito da te: un flusso di lavoro. Puoi definire un flusso di lavoro che includa un token ID o un token di accesso richiama un altro servizio. Per ulteriori informazioni, vedi Effettuare richieste autenticate da un flusso di lavoro.
Generare un token di identità rubando l'identità di un account di servizio
La simulazione dell'identità degli account di servizio consente a un'entità di generare contenuti di breve durata e le credenziali per un account di servizio attendibile. Il principale può quindi utilizzare queste credenziali per autenticarsi come account di servizio.
Prima che un'entità possa rappresentare un account di servizio, deve avere ruolo IAM per quell'account di servizio che consente la rappresentazione. Se l'entità è essa stessa un altro account di servizio, potrebbe sembrare più semplice fornire semplicemente le autorizzazioni richieste direttamente a quell'account di servizio e consentirgli di simulare la propria identità. Questa configurazione, nota come l'impersonificazione di se stessi, crea una vulnerabilità di sicurezza, in quanto consente di account di servizio creano un token di accesso che può essere aggiornato per sempre.
La simulazione dell'identità degli account di servizio deve sempre coinvolgere due entità: un'entità che rappresenta l'utente chiamante e l'account di servizio di cui viene simulata l'identità, chiamato account di servizio con privilegi.
Per generare un token di identità rubando l'identità di un account di servizio, utilizza la seguente procedura generale.
Per istruzioni passo passo, vedi Crea un token ID.
Identifica o crea un account di servizio da utilizzare come cuscinetto di privilegi. l'account di servizio.
-
Identificare i ruoli richiesti per richiamare il servizio di destinazione. Concedi ruoli all'account di servizio sul servizio di destinazione:
-
Per i
servizi Cloud Run,
concedi il ruolo Cloud Run Invoker (
roles/run.invoker
). -
Per le
funzioni Cloud Run,
concedi il ruolo Cloud Functions Invoker
(
roles/cloudfunctions.invoker
). - Per altri servizi di destinazione, consulta la documentazione del prodotto per il servizio.
-
Per i
servizi Cloud Run,
concedi il ruolo Cloud Run Invoker (
Identifica il principale che eseguirà la rappresentazione e configura le credenziali predefinite dell'applicazione (ADC) per utilizzare le credenziali per questo principale.
Per gli ambienti di sviluppo, l'entità principale è in genere l'account utente fornito ad ADC utilizzando l'interfaccia a riga di comando gcloud. Tuttavia, se stai eseguendo il servizio su una risorsa con un account di servizio collegato, l'account di servizio collegato è l'entità.
Concedi all'entità l'identità OpenID Connect dell'account di servizio Ruolo Creatore token (
roles/iam.serviceAccountOpenIdTokenCreator
).Utilizza l'API Credentials IAM per generare il token ID per l'account di servizio autorizzato.
Generare un token ID generico per lo sviluppo con Cloud Run e le funzioni Cloud Run
Puoi utilizzare l'interfaccia a riga di comando gcloud per ottenere un token ID per le tue credenziali utente che può essere utilizzato con qualsiasi servizio Cloud Run o funzione Cloud Run per cui l'utente chiamante dispone delle autorizzazioni IAM richieste per invocarlo. Questo token non funzionerà per nessun'altra applicazione.
Per generare un token ID generico, utilizza la classe Comando
gcloud auth print-identity-token
:gcloud auth print-identity-token
Passaggi successivi
- Scopri di più sui token ID.
- Utilizzare i comandi shell per eseguire una query sul server metadati di Compute Engine.
- Scopri di più sui metodi di autenticazione.