Questo documento spiega come creare un'istanza di macchina virtuale (VM) configurata per utilizzare un service account gestito dall'utente. Un service account è un tipo speciale di account utilizzato in genere da un'applicazione o da un workload di computing per effettuare chiamate API autorizzate.
I service account sono necessari per gli scenari in cui un workload, ad esempio un'applicazione personalizzata, deve accedere alle risorse Google Cloud o eseguire azioni senza il coinvolgimento dell'utente finale. Per ulteriori informazioni su quando utilizzare i service account, consulta Best practice per l'utilizzo dei service account.
Se hai applicazioni che devono effettuare chiamate alle API Google Cloud , Google consiglia di collegare un service account gestito dall'utente alla VM su cui è in esecuzione l'applicazione o il workload. Poi, concedi al service account i ruoli IAM, che concedono al service account e, per estensione, alle applicazioni in esecuzione sulla VM, l'accesso alle risorseGoogle Cloud .
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Seleziona la scheda relativa a come intendi utilizzare i campioni in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi Google Cloud e alle API, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
- Imposta una regione e una zona predefinite.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Se utilizzi una shell locale, crea credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Non è necessario eseguire questa operazione se utilizzi Cloud Shell.
Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.
Terraform
Per utilizzare gli esempi di Terraform in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.
Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI.
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Autenticati per usare REST nella documentazione sull'autenticazione di Google Cloud .
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare VM che utilizzano service account, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) -
Create Service Accounts (
roles/iam.serviceAccountCreator) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin)
Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per creare VM che utilizzano service account. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare VM che utilizzano service account sono necessarie le seguenti autorizzazioni:
-
Per creare service account:
Tutte le autorizzazioni nel ruolo
iam.serviceAccountCreator -
Per concedere le autorizzazioni al service account:
Tutte le autorizzazioni nel ruolo
resourcemanager.projectIamAdmin -
Per creare le VM:
compute.instances.createsul progetto- Per utilizzare un'immagine personalizzata per creare la VM:
compute.images.useReadOnlysull'immagine - Per utilizzare uno snapshot per creare la VM:
compute.snapshots.useReadOnlysullo snapshot - Per utilizzare un template di istanza per creare la VM:
compute.instanceTemplates.useReadOnlysul template di istanza - Per assegnare una rete legacy alla VM:
compute.networks.usesul progetto - Per specificare un indirizzo IP statico per la VM:
compute.addresses.usesul progetto - Per assegnare un indirizzo IP esterno alla VM quando viene utilizzata una rete legacy:
compute.networks.useExternalIpsul progetto - Per specificare una subnet per la VM:
compute.subnetworks.usesul progetto o sulla subnet scelta - Per assegnare un indirizzo IP esterno alla VM quando viene utilizzata una rete VPC:
compute.subnetworks.useExternalIpsul progetto o sulla subnet scelta - Per impostare i metadati dell'istanza VM per la VM:
compute.instances.setMetadatasul progetto - Per impostare i tag per la VM:
compute.instances.setTagssulla VM - Per impostare le etichette per la VM:
compute.instances.setLabelssulla VM - Per impostare un service account da utilizzare per la VM:
compute.instances.setServiceAccountsulla VM - Per creare un nuovo disco per la VM:
compute.disks.createsul progetto - Per collegare un disco esistente in modalità di sola lettura o lettura/scrittura:
compute.disks.usesul disco - Per collegare un disco esistente in modalità di sola lettura:
compute.disks.useReadOnlysul disco
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Panoramica
Ti consigliamo di configurare i service account per le tue VM come segue:
- Crea un nuovo service account gestito dall'utente anziché utilizzare quello predefinito di Compute Engine e concedi a questo service account i ruoli IAM solo per le risorse e le operazioni di cui ha bisogno.
- Collega il service account alla VM.
- Imposta l'ambito della piattaforma cloud (
https://www.googleapis.com/auth/cloud-platform) sulla VM. In questo modo, il service account della VM può chiamare le API Google Cloud di cui ha l'autorizzazione per l'utilizzo.- Se specifichi il account di servizio utilizzando la console Google Cloud , imposta l'ambito di accesso del service account di servizio su Consenti l'accesso completo a tutte le API Cloud.
- Se specifichi il service account utilizzando Google Cloud CLI o l'API
Compute Engine, puoi utilizzare il parametro
scopesper impostare l'ambito di accesso.
Configura un service account
Crea un service account e assegna i ruoli IAM richiesti. Assegna tutti i ruoli IAM necessari. Puoi modificare i ruoli IAM nel tuo service account in base alle esigenze.
Google consiglia di limitare i privilegi dei service account e di controllare regolarmente le autorizzazioni dei service account per assicurarsi che siano aggiornate.
Utilizza uno dei seguenti metodi per configurare il service account.
Console
-
Assicurati di disporre del ruolo IAM Creazione service account
(
-
Nella console Google Cloud vai a Crea service account.
Vai a Crea service account - Seleziona il progetto.
-
Nel campo Nome service account, inserisci un nome. La console Google Cloud compila il campo ID service account in base a questo nome.
Nel campo Descrizione service account, inserisci una descrizione. Ad esempio,
Service account for quickstart. - Fai clic su Crea e continua.
-
Concedi i ruoli richiesti al account di servizio.
Per concedere un ruolo, trova l'elenco Seleziona un ruolo, quindi seleziona il ruolo.
Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo successivo.
- Fai clic su Continua.
-
Nel campo Ruolo degli utenti del service account, inserisci l'identificatore dell'entità che collegherà il account di servizio ad altre risorse, ad esempio le istanze Compute Engine.
In genere si tratta dell'indirizzo email di un Account Google.
-
Fai clic su Fine per completare la creazione del service account.
roles/iam.serviceAccountCreator) e del ruolo Amministratore IAM progetto
(roles/resourcemanager.projectIamAdmin). Scopri come concedere
i ruoli.
gcloud
-
Assicurati di disporre del ruolo IAM Creazione account di servizio
(
roles/iam.serviceAccountCreator) e del ruolo Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin). Scopri come concedere i ruoli. -
Crea l'account di servizio:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Sostituisci
SERVICE_ACCOUNT_NAMEcon un nome per il account di servizio. -
Per fornire l'accesso al tuo progetto e alle tue risorse, assegna un ruolo al account di servizio:
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Sostituisci quanto segue:
SERVICE_ACCOUNT_NAME: il nome del account di servizioPROJECT_ID: l'ID progetto in cui hai creato il account di servizioROLE: il ruolo da concedere
- Per concedere un altro ruolo al account di servizio, esegui il comando come nel passaggio precedente.
-
Concedi il ruolo richiesto all'entità che collegherà ilaccount di serviziot ad altre risorse.
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Sostituisci quanto segue:
SERVICE_ACCOUNT_NAME: il nome del account di servizioPROJECT_ID: l'ID progetto in cui hai creato il account di servizioUSER_EMAIL: l'indirizzo email di un Account Google
Configura l'autenticazione:
Terraform
Per creare un service account, puoi utilizzare la risorsa
google_service_account.
Ricorda di sostituire i valori segnaposto per gli attributi account_id e
display_name.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Crea una VM e collega il service account
Dopo aver creato il service account, crea una VM e collega
il service account creato nella sezione precedente. Imposta anche l'ambito di accesso della VM su
cloud-platform.
Se hai già una VM esistente e vuoi configurarla in modo che utilizzi un service account diverso, consulta Modifica il service account collegato.
Utilizza uno dei seguenti metodi per creare una VM e collegare il service account.
Console
Nella console Google Cloud , vai alla pagina Crea un'istanza.
Per collegare un service account:
- Nel menu di navigazione, fai clic su Sicurezza.
- Nell'elenco Service account, seleziona il service account che hai creato.
- Per Ambiti di accesso, seleziona Consenti l'accesso completo a tutte le API Cloud.
(Facoltativo) Specifica altre opzioni di configurazione. Per ulteriori informazioni, consulta Opzioni di configurazione durante la creazione dell'istanza.
Per creare e avviare l'istanza, fai clic su Crea.
gcloud
Per creare una nuova istanza VM e configurarla per utilizzare un service account personalizzato
utilizzando Google Cloud CLI, utilizza il comando
gcloud compute instances create e fornisci l'indirizzo email
del service account e l'ambito di accesso cloud-platform all'istanza
VM.
gcloud compute instances create VM_NAME \
--service-account=SERVICE_ACCOUNT_EMAIL \
--scopes=https://www.googleapis.com/auth/cloud-platform
Sostituisci quanto segue:
SERVICE_ACCOUNT_EMAIL: l'indirizzo email del service account che hai creato. Ad esempio:my-sa-123@my-project-123.iam.gserviceaccount.com. Per visualizzare l'indirizzo email, consulta Creazione dell'elenco dei service account.VM_NAME: il nome dell'istanza VM.
Ad esempio:
gcloud compute instances create example-vm \
--service-account 123-my-sa@my-project-123.iam.gserviceaccount.com \
--scopes=https://www.googleapis.com/auth/cloud-platform
Puoi anche specificare l'ambito utilizzando l'alias: --scopes=cloud-platform.
Questi alias sono riconosciuti solo da gcloud CLI. L'API
e altre librerie non riconoscono questi alias, pertanto devi specificare
l'URI di ambito completo.
Terraform
Per configurare una nuova VM in modo che utilizzi un service account, puoi utilizzare la
risorsa
google_compute_instance.
REST
Utilizza il metodo
instances.insert per creare la VM
e specifica l'indirizzo email e l'ambito di accesso del service account per l'istanza VM.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "machineType":"zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name":"VM_NAME", "disks":[ { "initializeParams":{ "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot":true } ], "networkInterfaces":[ { "network":"global/networks/NETWORK_NAME" } ], "serviceAccounts": [ { "email": "SERVICE_ACCOUNT_EMAIL", "scopes": ["https://www.googleapis.com/auth/cloud-platform"] } ], "shieldedInstanceConfig":{ "enableSecureBoot":"ENABLE_SECURE_BOOT" } }
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui creare la VM.ZONE: la zona in cui creare la VM.MACHINE_TYPE_ZONE: la zona contenente il tipo di macchina da utilizzare per la nuova VM.MACHINE_TYPE: il tipo di macchina, predefinita o personalizzata, per la nuova VM.VM_NAME: il nome della nuova VM.IMAGE_PROJECT: il progetto contenente l'immagine
Ad esempio, se specifichidebian-10come famiglia di immagini, specificadebian-cloudcome progetto di immagini.IMAGE: specifica una delle seguenti opzioni:IMAGE: una versione specifica di un'immagine pubblica.Ad esempio,
"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"IMAGE_FAMILY: una famiglia di immagini.In questo modo, la VM viene creata dall'immagine sistema operativo più recente e non deprecata. Ad esempio, se specifichi
"sourceImage": "projects/debian-cloud/global/images/family/debian-10", Compute Engine crea una VM dall'ultima versione dell'immagine sistema operativo nella famiglia di immaginiDebian 10.
NETWORK_NAME: la rete VPC che vuoi utilizzare per la VM. Puoi specificaredefaultper utilizzare la rete predefinita.SERVICE_ACCOUNT_EMAIL: l'indirizzo email del service account che hai creato. Ad esempio:my-sa-123@my-project-123.iam.gserviceaccount.com. Per visualizzare l'indirizzo email, consulta ottieni un'email per il service account.ENABLE_SECURE_BOOT: (Facoltativo) se hai scelto un'immagine che supporta le funzionalità Shielded VM, Compute Engine attiva per impostazione predefinita il Virtual Trusted Platform Module (vTPM) e il monitoraggio dell'integrità. Compute Engine non attiva l'Avvio protetto per impostazione predefinita.Se specifichi
trueperenableSecureBoot, Compute Engine crea una VM con tutte e tre le funzionalità Shielded VM attivate. Dopo che Compute Engine ha avviato la VM, per modificare le opzioni Shielded VM devi arrestarla.
Accedi e utilizza altri servizi Google Cloud
Una volta configurata la VM per l'utilizzo del service account, le applicazioni possono utilizzarlo per l'autenticazione. Il metodo più comune è eseguire l'autenticazione utilizzando le Credenziali predefinite dell'applicazione e una libreria client. Alcuni strumenti Google Cloud , come gcloud CLI, sono in grado di utilizzare automaticamente il service account per accedere alle API Google Cloud da una VM. Per ulteriori informazioni, consulta Autentica i workload utilizzando i service account.
Se un service account viene eliminato, le applicazioni non avranno più accesso alle risorseGoogle Cloud tramite quel service account. Se elimini i service account predefiniti di App Engine e Compute Engine, le VM non avranno più accesso alle risorse del progetto. Se non sai con certezza se un service account è in uso, Google consiglia di disattivarlo prima di eliminarlo. I service account disattivati possono essere riattivati se sono ancora necessari.
Esempio: accedi alle risorse di Cloud Storage dalla VM
Dopo aver configurato la VM in modo che utilizzi un service account con il
ruolo storage.admin, puoi utilizzare strumenti come gcloud CLI
per gestire i file archiviati su Cloud Storage. Per accedere
alle tue risorse Cloud Storage:
Assicurati che il service account collegato alla VM abbia il ruolo
roles/storage.admin.Se la VM utilizza un'immagine sistema operativo personalizzata, installa gcloud CLI. Per impostazione predefinita, gcloud CLI è installato sulla maggior parte delle immagini sistema operativo pubbliche fornite da Google Cloud.
Connettiti alla VM.
Dalla VM, utilizza Google Cloud CLI per gestire le risorse di Cloud Storage.
Passaggi successivi
- Scopri come autenticare i workload utilizzando i service account.
- Scopri come modificare il service account collegato a una VM.
- Scopri come elencare e modificare i service account.
- Consulta le best practice per l'utilizzo dei service account e riduci i rischi per la sicurezza.