In questa pagina viene descritto come utilizzare gli account di servizio per abilitare le app in esecuzione le istanze di macchine virtuali (VM) per eseguire l'autenticazione nelle API Google Cloud autorizzare l'accesso alle risorse.
Per utilizzare gli account di servizio per l'autenticazione, devi prima assicurarti che la VM è configurata per utilizzare un account di servizio. Per farlo, completa una delle seguenti operazioni delle procedure:
- Per configurare l'account di servizio durante la creazione della VM, consulta Crea una VM che utilizza un account di servizio gestito dall'utente.
- Per configurare un account di servizio su una VM esistente, consulta Cambia l'account di servizio collegato.
Prima di iniziare
- Esamina il Panoramica degli account di servizio.
-
Se non l'hai già fatto, configura l'autenticazione.
Autenticazione è
Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione
Compute Engine come segue.
Per utilizzare gli Python esempi in questa pagina in una località dell'ambiente di sviluppo, installare e inizializzare gcloud CLI quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create local authentication credentials for your user account:
gcloud auth application-default login
Per ulteriori informazioni, vedi Set up authentication for a local development environment.
Panoramica
Dopo aver configurato un'istanza VM per l'esecuzione utilizzando un account di servizio, in esecuzione sull'istanza VM può utilizzare uno dei seguenti metodi per l'autenticazione:
- Per la maggior parte delle applicazioni, scegli una delle seguenti opzioni:
- Per le applicazioni che richiedono un token di accesso OAuth2, richiedere e utilizzare i token di accesso direttamente dal server dei metadati
Autenticazione delle applicazioni mediante credenziali dell'account di servizio
Dopo aver configurato un'istanza per l'esecuzione come account di servizio, puoi utilizzare le credenziali dell'account di servizio per autenticare le applicazioni in esecuzione sull'istanza.
Autenticazione delle applicazioni con una libreria client
Le librerie client possono utilizzare Credenziali predefinite dell'applicazione per eseguire l'autenticazione con le API di Google e inviare richieste a queste API. L'impostazione Credenziali predefinite dell'applicazione consente alle applicazioni di ottenere automaticamente da più origini per poter testare l'applicazione localmente e poi eseguirne il deployment in un'istanza Compute Engine senza modificare il codice dell'applicazione.
Per informazioni sulla configurazione delle credenziali predefinite dell'applicazione, vedi Fornisci le credenziali alle Credenziali predefinite dell'applicazione.
Questo esempio utilizza la classe libreria client Python eseguire l'autenticazione ed effettuare una richiesta all'API Cloud Storage per elencare i bucket di un progetto. L'esempio utilizza la seguente procedura:
- Ottenere le credenziali di autenticazione necessarie per l'API Cloud Storage
e inizializza il servizio Cloud Storage con il metodo
build()
e le credenziali. - Elenca i bucket in Cloud Storage.
Puoi eseguire questo esempio su un'istanza che ha accesso alla gestione dei bucket in di archiviazione ideale in Cloud Storage.
Autenticazione delle applicazioni direttamente con i token di accesso
Per la maggior parte delle applicazioni, puoi autenticarti utilizzando Credenziali predefinite dell'applicazione, che trova le credenziali e gestisce i token per te. Tuttavia, se la tua applicazione richiede di fornire un token di accesso OAuth2, Compute Engine consente ricevere un token di accesso dal relativo server di metadati da utilizzare nell'applicazione.
Esistono diverse opzioni per ottenere e utilizzare questi
di accesso ai token per autenticare le tue applicazioni. Ad esempio, puoi utilizzare
curl
per creare una richiesta semplice o utilizza un linguaggio di programmazione come Python
per una maggiore flessibilità.
cURL
Per utilizzare curl
per richiedere un token di accesso e inviare una richiesta a un'API:
Sull'istanza in cui viene eseguita la tua applicazione, esegui una query server metadati per un token di accesso, eseguendo questo comando:
$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \ -H "Metadata-Flavor: Google"
La richiesta restituisce una risposta simile alla seguente:
{ "access_token":"ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_QtAS08i85nHq39HE3C2LTrCARA", "expires_in":3599, "token_type":"Bearer" }
Per le richieste API devi includere il valore
access_token
, non il valore l'intera risposta. Se hai Processore JSON a riga di comando jq puoi usare il comando seguente per estrarre il token di accesso valore dalla risposta:$ ACCESS_TOKEN=`curl \ "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \ -H "Metadata-Flavor: Google" | jq -r '.access_token'`
Copia il valore della proprietà
access_token
dalla risposta e per inviare richieste all'API. Ad esempio, la seguente richiesta stampa un elenco di istanze nel progetto provenienti da una determinata zona:$ curl https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances \ -H "Authorization":"Bearer ACCESS_TOKEN"
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto per questo richiesta.ZONE
: la zona da cui elencare le VM.ACCESS_TOKEN
: il valore del token di accesso nel passaggio precedente.
Per informazioni sui parametri che puoi impostare nella richiesta, consulta la documentazione sui parametri di sistema.
Python
Questo esempio mostra come richiedere un token per accedere l'API Cloud Storage in un'applicazione Python. L'esempio utilizza il seguente procedura:
- Richiedi un token di accesso al server dei metadati.
- Estrai il token di accesso dalla risposta del server.
- Utilizzare il token di accesso per effettuare una richiesta a Cloud Storage.
- Se la richiesta ha esito positivo, lo script stampa la risposta.
I token di accesso scadono dopo un breve periodo di tempo. Il server dei metadati memorizza nella cache di accesso ai token finché non hanno a disposizione 5 minuti di tempo rimanenti scadono. Se i token non possono essere memorizzati nella cache, richieste che superano le 50 query al secondo potrebbe essere limitata. Le applicazioni devono disporre di un accesso valido il token di sicurezza per la riuscita delle chiamate API.
Strumenti di autenticazione su un'istanza con un account di servizio
Alcune applicazioni potrebbero utilizzare i comandi di gcloud CLI,
incluse per impostazione predefinita nella maggior parte delle immagini Compute Engine. La
gcloud CLI riconosce automaticamente l'account di servizio di un'istanza
le autorizzazioni pertinenti concesse all'account di servizio. In particolare, se concedi
i ruoli corretti per l'account di servizio, puoi utilizzare
dalle tue istanze senza dover usare gcloud auth login
.
Questo riconoscimento degli account di servizio avviene automaticamente e si applica solo ai con gcloud CLI inclusa nell'istanza. Se crei nuovi strumenti o aggiungere strumenti personalizzati, devi autorizzare la tua applicazione usando una libreria client o tramite utilizzando i token di accesso direttamente nell'applicazione.
Per sfruttare il riconoscimento
automatico degli account di servizio,
concedere i ruoli IAM appropriati
all'account di servizio
di collegare l'account di servizio all'istanza.
Ad esempio, se concedi a un account di servizio la roles/storage.objectAdmin
gcloud CLI può gestire e accedere automaticamente
oggetti Cloud Storage.
Allo stesso modo, se abiliti roles/compute.instanceAdmin.v1
per l'account di servizio,
lo strumento gcloud compute
può gestire automaticamente le istanze.
Passaggi successivi
- Autentica i carichi di lavoro in altri carichi di lavoro tramite mTLS .
- Scopri di più sugli account di servizio.
- Scopri di più su ruoli e autorizzazioni IAM di Compute Engine.
- Scopri di più sulle best practice per l'utilizzo degli account di servizio.
Provalo
Se non hai mai utilizzato Google Cloud, crea un account per valutare in che modo Compute Engine offre prestazioni reali diversi scenari. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
Prova Compute Engine gratuitamente