Questo documento spiega come creare un'istanza di macchina virtuale (VM) che sia e configurato in modo da utilizzare un account di servizio gestito dall'utente. Un account di servizio è un'istanza tipo di account solitamente utilizzato da un'applicazione o da un carico di lavoro di computing di chiamate API autorizzate.
Gli account di servizio sono necessari negli scenari in cui un carico di lavoro, ad esempio applicazione, deve accedere alle risorse Google Cloud o eseguire azioni il coinvolgimento dell'utente finale. Per ulteriori informazioni su quando utilizzare gli account di servizio, consulta le best practice per l'utilizzo degli account di servizio.
Se hai applicazioni che devono effettuare chiamate alle API Google Cloud, Google consiglia di collegare un account di servizio gestito dall'utente alla VM su cui dell'applicazione o del carico di lavoro. Quindi, concedi l'account di servizio i ruoli IAM, che forniscono all'account di servizio per estensione, le applicazioni in esecuzione sulla VM: l'accesso dell'accesso a specifiche risorse Google Cloud.
Prima di iniziare
-
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.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 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
-
Amministratore istanze Compute (v1) (
roles/compute.instanceAdmin.v1
) -
Crea account di servizio (
roles/iam.serviceAccountCreator
) -
Per creare account di servizio:
Tutte le autorizzazioni nel ruolo
serviceAccountCreator
-
Per creare le VM:
compute.instances.create
nel progetto- Per utilizzare un'immagine personalizzata per creare la VM:
compute.images.useReadOnly
sull'immagine - Per utilizzare uno snapshot per creare la VM:
compute.snapshots.useReadOnly
nello snapshot - Per utilizzare un modello di istanza per creare la VM:
compute.instanceTemplates.useReadOnly
nel modello di istanza - Per assegnare una rete legacy alla VM,:
compute.networks.use
nel progetto - Per specificare un indirizzo IP statico per la VM:
compute.addresses.use
nel progetto - Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete legacy:
compute.networks.useExternalIp
nel progetto - Per specificare una subnet per la VM:
compute.subnetworks.use
nel progetto o nella subnet scelta - Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete VPC,:
compute.subnetworks.useExternalIp
nel progetto o nella subnet scelta - Per impostare i metadati dell'istanza VM per la VM:
compute.instances.setMetadata
nel progetto - Per impostare i tag per la VM:
compute.instances.setTags
sulla VM - Per impostare le etichette per la VM:
compute.instances.setLabels
sulla VM - Per impostare un account di servizio che la VM deve utilizzare:
compute.instances.setServiceAccount
sulla VM - Per creare un nuovo disco per la VM:
compute.disks.create
nel progetto - Per collegare un disco esistente in modalità di sola lettura o lettura/scrittura:
compute.disks.use
sul disco - Per collegare un disco esistente in modalità di sola lettura:
compute.disks.useReadOnly
sul disco
- Crea un nuovo account di servizio gestito dall'utente anziché utilizzare Compute Engine l'account di servizio predefinito e concedere i ruoli IAM a quest'ultimo per e solo le risorse e le operazioni di cui ha bisogno.
- Collega l'account di servizio alla VM.
- Imposta l'ambito Cloud Platform (
https://www.googleapis.com/auth/cloud-platform
) su della VM. Ciò consente all'account di servizio della VM di chiamare le API Google Cloud che dispone dell'autorizzazione all'utilizzo.- Se specifichi l'account di servizio utilizzando la console Google Cloud,
l'ambito di accesso della VM viene impostato automaticamente sul
cloud-platform
l'ambito di attività. - Se specifichi l'account di servizio utilizzando Google Cloud CLI o Compute Engine
puoi utilizzare il parametro
scopes
per impostare l'ambito di accesso.
- Se specifichi l'account di servizio utilizzando la console Google Cloud,
l'ambito di accesso della VM viene impostato automaticamente sul
- Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the required roles to the service account.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - Click Continue.
-
In the Service account users role field, enter the identifier for the principal that will attach the service account to other resources, such as Compute Engine instances.
This is typically the email address for a Google Account.
-
Click Done to finish creating the service account.
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
To provide access to your project and your resources, grant a role to the service account:
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service accountROLE
: the role to grant
- To grant another role to the service account, run the command as you did in the previous step.
-
Grant the required role to the principal that will attach the service account to other resources.
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service accountUSER_EMAIL
: the email address for a Google Account
- Nella console Google Cloud, vai alla pagina Istanze VM.
- Seleziona il progetto e fai clic su Continua.
- Fai clic su Crea istanza.
- Specifica un nome per la VM.
- Vai alla sezione Identità e accesso API.
- Nell'elenco Account di servizio, seleziona l'account di servizio
è stato creato. Quando colleghi un account di servizio a una VM, Google Cloud
L'ambito di accesso
cloud-platform
viene impostato automaticamente nella VM. - Apporta ulteriori personalizzazioni della VM, se necessario.
- Per creare e avviare la VM, fai clic su Crea.
SERVICE_ACCOUNT_EMAIL
: l'indirizzo email di l'account di servizio che hai creato. Ad esempio:my-sa-123@my-project-123.iam.gserviceaccount.com
. Per visualizzare l'indirizzo email, vedi Elenco degli account di servizio.VM_NAME
: il nome dell'istanza VM.PROJECT_ID
: ID del progetto in cui creare la VMZONE
: zona in cui creare la VMMACHINE_TYPE_ZONE
: zona contenente il tipo di macchina da utilizzare per la nuova VMMACHINE_TYPE
: tipo di macchina, predefinito o personalizzato, per la nuova VMVM_NAME
: nome della nuova VMIMAGE_PROJECT
: progetto contenente l'immagine
Ad esempio, se specifichidebian-10
come immagine specificadebian-cloud
come progetto immagine.IMAGE or IMAGE_FAMILY
: 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
: un'immagine famiglia
La VM viene creata dal sistema operativo più recente e non deprecato dell'immagine. Ad esempio, se specifichi"sourceImage": "projects/debian-cloud/global/images/family/debian-10"
, Compute Engine crea un'istanza VM dell'ultima versione dell'immagine del sistema operativo nella famiglia di immaginiDebian 10
.
NETWORK_NAME
: la rete VPC che vuoi utilizzare per la VM. Puoi specificare chedefault
utilizzi la rete predefinita.SERVICE_ACCOUNT_EMAIL
: l'indirizzo email dell'account di servizio che che hai creato. Ad esempio:my-sa-123@my-project-123.iam.gserviceaccount.com
. Per visualizzare l'indirizzo email, vedi Ottenere l'indirizzo email di un account di servizio.ENABLE_SECURE_BOOT
: (facoltativo) se hai scelto un'immagine che supporta le funzionalità di Shielded VM, Compute Engine, per impostazione predefinita, abilita Trusted Platform Module (vTPM) e integrity e il monitoraggio. Compute Engine non abilita Secure Avvio per impostazione predefinita.Se specifichi
true
perenableSecureBoot
, Compute Engine crea una VM con tutte e tre le funzionalità delle Shielded VM abilitate. Dopo che Compute Engine avviare la VM, per modificare Shielded VM, devi arrestare la VM.Assicurati che l'account di servizio collegato alla VM abbia 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 del sistema operativo pubbliche fornite da Google Cloud.
Connettiti alla VM.
Dalla VM, utilizza Google Cloud CLI per per gestire le risorse di Cloud Storage.
- Scopri come autenticare i carichi di lavoro usando gli account di servizio.
- Scopri come cambia l'account di servizio collegato a una VM.
- Scopri come elencare e modificare gli account di servizio.
- Consulta le best practice per l'utilizzo degli account di servizio e mitigare i rischi per la sicurezza.
Terraform
Per utilizzare gli esempi di Terraform in questa pagina in un ambiente dell'ambiente di sviluppo, installare e inizializzare gcloud CLI quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.
Per ulteriori informazioni, vedi Set up authentication for a local development environment.
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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Per ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare VM che utilizzano account di servizio, chiedi all'amministratore di concederti seguenti ruoli IAM sul progetto:
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questi ruoli predefiniti le autorizzazioni necessarie per creare VM che usano account di servizio. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare VM che utilizzano account di servizio sono necessarie le seguenti autorizzazioni:
Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.
Panoramica
Ti consigliamo di configurare gli account di servizio per le VM che segue:
Configurare un account di servizio
Creare un account di servizio e assegnare i ruoli IAM richiesti. Assegna il numero massimo o minimo di ruoli IAM in base alle tue esigenze. Puoi modificare i ruoli IAM sull'account di servizio in base alle esigenze.
Google ti consiglia limitare i privilegi degli account di servizio e controllare regolarmente le autorizzazioni dell'account di servizio per sempre aggiornate.
Utilizza uno dei seguenti metodi per configurare l'account di servizio.
Console
In the Google Cloud console, go to the Create service account page.
Go to Create service accountgcloud
Set up authentication:
Terraform
Per creare un account di servizio, puoi utilizzare la
google_service_account
risorsa.Ricorda di sostituire i valori segnaposto per
account_id
e i valori Attributidisplay_name
.Per scoprire come applicare o rimuovere una configurazione Terraform, consulta: Comandi Terraform di base.
Crea una VM e collega l'account di servizio
Dopo aver creato l'account di servizio, crea una VM e collega l'account di servizio creato nella sezione precedente. Imposta anche l'ambito di accesso della VM su
cloud-platform
.Se hai già una VM esistente e vuoi configurarla per l'utilizzo un altro account di servizio, Cambia l'account di servizio collegato.
Utilizza uno dei seguenti metodi per creare una VM e collegare l'account di servizio.
Console
gcloud
Per creare una nuova istanza VM e configurarla per l'utilizzo di un account di servizio personalizzato con Google Cloud CLI, usa
gcloud compute instances create
e fornisce il comando l'email dell'account di servizio e l'ambito di accessocloud-platform
alla VM in esecuzione in un'istanza Compute Engine.gcloud compute instances create VM_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=https://www.googleapis.com/auth/cloud-platform
Sostituisci quanto segue:
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, quindi devi specificare URI dell'ambito completo.Terraform
Per configurare una nuova VM per utilizzare un account di servizio, puoi usare
google_compute_instance
risorsa.REST
Utilizza la
instances.insert
per creare la VM e specificare l'email e l'ambito di accesso dell'account di servizio 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:
Accedere ad altri servizi Google Cloud e utilizzarli
Una volta configurata la VM per l'utilizzo dell'account di servizio, le applicazioni e usare l'account di servizio per l'autenticazione. Il metodo più comune è autenticarsi utilizzando Credenziali predefinite dell'applicazione e una libreria client. Alcuni strumenti Google Cloud, come gcloud CLI sono in grado di utilizzare automaticamente il servizio per accedere alle API Google Cloud da una VM. Per ulteriori informazioni, consulta Autenticare i carichi di lavoro utilizzando gli account di servizio.
Se un account di servizio viene eliminato, le applicazioni non avranno più accesso a alle risorse Google Cloud tramite quell'account di servizio. Se elimini il cluster agli account di servizio App Engine e Compute Engine, le tue VM non avranno più l'accesso alle risorse nel progetto. Se non sai con certezza se un servizio è in uso, Google consiglia disattivare l'account di servizio prima di eliminarlo. Gli account di servizio disabilitati possono essere riattivati se sono ancora necessaria.
Esempio: accedi alle risorse Cloud Storage dalla tua VM
Dopo aver configurato la VM per l'utilizzo di un account di servizio con ruolo
storage.admin
, puoi utilizzare strumenti come gcloud CLI per gestire i file archiviati su Cloud Storage. Per accedere a Risorse Cloud Storage, completa quanto segue:Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2024-07-26 UTC.
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problema di traduzione" },{ "type": "thumb-down", "id": "otherDown", "label":"Altra" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Facile da capire" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Il problema è stato risolto" },{ "type": "thumb-up", "id": "otherUp", "label":"Altra" }] -