Questa pagina descrive come utilizzare gli account di servizio per consentire alle app in esecuzione sulle tue istanze di macchine virtuali (VM) di eseguire l'autenticazione nelle API Google Cloud e autorizzare l'accesso alle risorse.
Per utilizzare gli account di servizio per l'autenticazione, devi prima assicurarti che la VM sia configurata per l'utilizzo di un account di servizio. A questo scopo, completa una delle seguenti procedure:
- Per configurare l'account di servizio durante la creazione della VM, consulta Creare una VM che utilizza un account di servizio gestito dall'utente.
- Per configurare un account di servizio su una VM esistente, consulta Cambiare l'account di servizio collegato.
Prima di iniziare
- Esamina la panoramica degli account di servizio.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.
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.
- Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
gcloud init
-
Crea credenziali di autenticazione locali per il tuo Account Google:
gcloud auth application-default login
Per ulteriori informazioni, vedi Set up authentication for a local development environment.
Panoramica
Dopo aver configurato l'esecuzione di un'istanza VM mediante un account di servizio, un'applicazione 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, richiedi e utilizza 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 le credenziali predefinite dell'applicazione per eseguire l'autenticazione con le API di Google e inviare richieste alle API. Credenziali predefinite dell'applicazione consentono alle applicazioni di ottenere automaticamente le credenziali da più origini, per consentirti di testare l'applicazione localmente e quindi eseguirne il deployment su un'istanza Compute Engine senza modificare il codice dell'applicazione.
Per informazioni sulla configurazione delle Credenziali predefinite dell'applicazione, vedi Fornire le credenziali alle Credenziali predefinite dell'applicazione.
Questo esempio utilizza la libreria client Python per eseguire l'autenticazione e inviare una richiesta all'API Cloud Storage per elencare i bucket in un progetto. Nell'esempio viene utilizzata la procedura seguente:
- Ottieni le credenziali di autenticazione necessarie per l'API Cloud Storage e inizializza il servizio Cloud Storage con il metodo
build()
e le credenziali. - Elencare i bucket in Cloud Storage.
Puoi eseguire questo esempio su un'istanza che ha accesso alla gestione dei bucket in Cloud Storage.
Autenticazione delle applicazioni direttamente con i token di accesso
Per la maggior parte delle applicazioni puoi eseguire l'autenticazione 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 ti consente di ottenere un token di accesso dal suo server metadati per utilizzarlo nella tua applicazione.
Esistono diverse opzioni per ottenere e utilizzare questi token di accesso per autenticare le applicazioni. Ad esempio, puoi utilizzare curl
per creare una richiesta semplice o utilizzare 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:
Nell'istanza in cui viene eseguita l'applicazione, richiedi un token di accesso al server di metadati 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 l'intera risposta. Se hai installato il processore JSON a riga di comando jq, puoi utilizzare il seguente comando per estrarre il valore del token di accesso 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 utilizzalo per inviare richieste all'API. Ad esempio, la seguente richiesta stampa un elenco di istanze nel tuo 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 questa richiesta.ZONE
: la zona da cui elencare le VM.ACCESS_TOKEN
: il valore del token di accesso ottenuto dal 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 all'API Cloud Storage in un'applicazione Python. L'esempio utilizza la seguente procedura:
- Richiedi un token di accesso al server dei metadati.
- Estrai il token di accesso dalla risposta del server.
- Utilizza 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 di metadati memorizza nella cache i token di accesso fino a quando non restano 5 minuti di tempo prima che scadano. Se i token non possono essere memorizzati nella cache, le richieste che superano le 50 query al secondo potrebbero avere limitazioni di frequenza. Le applicazioni devono disporre di un token di accesso valido affinché le chiamate API abbiano esito positivo.
Strumenti di autenticazione su un'istanza mediante un account di servizio
Alcune applicazioni potrebbero utilizzare i comandi degli strumenti gcloud
e gsutil
, inclusi per impostazione predefinita nella maggior parte delle immagini di Compute Engine. Questi strumenti riconoscono automaticamente l'account di servizio di un'istanza e le autorizzazioni pertinenti concesse all'account di servizio. In particolare, se concedi i ruoli corretti all'account di servizio, puoi utilizzare gli strumenti gcloud
e gsutil
dalle tue istanze senza dover utilizzare gcloud auth login
.
Questo riconoscimento dell'account di servizio avviene automaticamente e si applica solo agli strumenti gcloud
e gsutil
inclusi con l'istanza. Se crei nuovi strumenti o aggiungi strumenti personalizzati, devi autorizzare la tua applicazione utilizzando una libreria client o utilizzando i token di accesso direttamente nella tua applicazione.
Per sfruttare il riconoscimento automatico degli account di servizio, concedi i ruoli IAM appropriati all'account di servizio e collega l'account di servizio all'istanza.
Ad esempio, se concedi a un account di servizio il ruolo roles/storage.objectAdmin
, lo strumento gsutil
può gestire e accedere automaticamente agli oggetti Cloud Storage.
Analogamente, 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 le prestazioni di Compute Engine in scenari reali. 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