Questa pagina descrive come utilizzare i service account per consentire alle app in esecuzione sulle tue istanze di macchine virtuali (VM) di autenticarsi alle API Trusted Cloud by S3NS e autorizzare l'accesso alle risorse.
Per utilizzare i service account per l'autenticazione, devi prima assicurarti che la VM sia configurata per l'utilizzo di un service account. Per farlo, completa una delle seguenti procedure:
- Per configurare il service account durante la creazione della VM, consulta Crea una VM che utilizza un service account gestito dall'utente.
- Per configurare il service account su una VM esistente, consulta Modifica il service account collegato.
Prima di iniziare
- Consulta la panoramica dei service account.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è
il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API di Trusted Cloud by S3NS .
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Per utilizzare gli esempi di Python questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le Credenziali predefinite dell'applicazione con le tue credenziali utente.
-
Install the Google Cloud CLI.
-
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Per ulteriori informazioni, vedi Set up authentication for a local development environment.
Panoramica
Dopo aver configurato un'istanza VM per l'esecuzione utilizzando un service account, un'applicazione in esecuzione sull'istanza VM può utilizzare uno dei seguenti metodi di 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 di metadati
Autenticazione delle applicazioni tramite le credenziali del service account
Dopo aver configurato un'istanza da eseguire come service account, puoi utilizzare le credenziali del service account per autenticare le applicazioni in esecuzione nell'istanza.
Autenticazione delle applicazioni con una libreria client
Le librerie client possono utilizzare Credenziali predefinite dell'applicazione per autenticarsi con le API di Google e inviare richieste a queste API. Credenziali predefinite dell'applicazione consente alle applicazioni di ottenere automaticamente le credenziali da più origini, in modo da poter testare l'applicazione localmente e poi eseguirne il deployment in un'istanza Compute Engine senza modificare il codice dell'applicazione.
Per informazioni su come configurare Credenziali predefinite dell'applicazione, consulta Fornire credenziali a Credenziali predefinite dell'applicazione.
Questo esempio utilizza la libreria client Python per autenticarsi ed effettuare una richiesta all'API Cloud Storage per elencare i bucket di un progetto. L'esempio utilizza la seguente procedura:
- Ottieni 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 per gestire i bucket 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 ti consente di ottenere un token di accesso dal proprio server di metadati da utilizzare nella tua applicazione.
Esistono diverse opzioni per ottenere e utilizzare questi
token di accesso per autenticare le tue applicazioni. Ad esempio, puoi utilizzare
curl
per creare una richiesta semplice o 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, esegui una query sul server di metadati per ottenere un token di accesso eseguendo il seguente 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 progetto di 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 richiestaZONE
: la zona da cui elencare le VMACCESS_TOKEN
: il valore del token di accesso ottenuto nel passaggio precedente
Per informazioni sui parametri che puoi impostare nella richiesta, consulta la documentazione relativa ai 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 dal server di 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 rimangono 5 minuti prima della loro scadenza. Se non è possibile memorizzare nella cache i token, le richieste che superano le 50 query al secondo potrebbero essere limitate in base alla frequenza. Le tue applicazioni devono disporre di un token di accesso valido per la riuscita delle chiamate API.
Autenticazione degli strumenti in un'istanza utilizzando un service account
Alcune applicazioni potrebbero utilizzare i comandi di gcloud CLI, che è
incluso per impostazione predefinita nella maggior parte delle immagini Compute Engine. gcloud
CLI riconosce automaticamente il service account di un'istanza e le
autorizzazioni pertinenti concesse al service account. Nello specifico, se concedi
i ruoli corretti al service account, puoi utilizzare gcloud CLI
dalle tue istanze senza dover utilizzare gcloud auth login
.
Questo riconoscimento da parte del service account avviene automaticamente e si applica solo al gcloud CLI incluso nell'istanza. Se crei nuovi strumenti o ne aggiungi di personalizzati, devi autorizzare la tua applicazione utilizzando una libreria client o utilizzando i token di accesso direttamente nella tua applicazione.
Per usufruire del riconoscimento automatico del service account,
assegna i ruoli IAM appropriati
al service account e
collega il service account all'istanza.
Ad esempio, se concedi a un service account il ruolo roles/storage.objectAdmin
,
gcloud CLI può gestire e accedere automaticamente
agli oggetti Cloud Storage.
Analogamente, se attivi roles/compute.instanceAdmin.v1
per il service account,
lo strumento gcloud compute
può gestire automaticamente le istanze.
Passaggi successivi
- Autentica i workload con altri workload tramite mTLS .
- Ulteriori informazioni sui service account.
- Scopri di più sui ruoli e le autorizzazioni IAM di Compute Engine.
- Scopri di più sulle best practice per l'utilizzo dei service account.