Questa pagina descrive come funzionano gli account di servizio con Compute Engine.
Per informazioni dettagliate su come collegare un account di servizio a un di macchina virtuale (VM), esamina uno dei seguenti documenti:
- 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 Cambia l'account di servizio collegato.
Per scoprire le best practice per la creazione e la gestione degli account di servizio, consulta la documentazione relativa alle best practice per l'utilizzo degli account di servizio.
Provalo
Se non conosci 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 gratuitamenteChe cos'è un account di servizio?
Un account di servizio è un tipo speciale di account utilizzata da un'applicazione o da un carico di lavoro di computing, non da una persona. Gli account di servizio sono gestiti da Identity and Access Management (IAM).
Quando utilizzi gli account di servizio con le tue VM, tieni presente quanto segue:
- Puoi associare lo stesso account di servizio a più VM, ma una singola VM può avere un solo account di servizio associato.
- Se colleghi lo stesso account di servizio a più VM, eventuali modifiche successive apportate all'account di servizio influiscono su tutte le VM che lo utilizzano. Sono incluse eventuali modifiche apportate ai ruoli IAM concessi all'account di servizio. Ad esempio, se rimuovi un ruolo, Le VM che utilizzano l'account di servizio perdono le autorizzazioni concesse da quel ruolo.
In che modo Compute Engine utilizza gli account di servizio
Compute Engine utilizza due tipi di account di servizio:
Un account di servizio gestito dall'utente può essere collegato a un'istanza Compute Engine per fornire le credenziali alle applicazioni in esecuzione nell'istanza. Questi Le credenziali vengono utilizzate dall'applicazione per l'autenticazione in Google Cloud API e autorizzazione per l'accesso alle risorse Google Cloud. Solo gli account di servizio gestiti dall'utente possono essere collegati a un'istanza e un'istanza può avere un solo account di servizio collegato. Puoi modificare l'account di servizio associato a un'istanza al momento della creazione o in un secondo momento.
Gli agenti di servizio vengono utilizzati dall'istanza per accedere ai processi interni per tuo conto.
Inoltre, puoi creare regole firewall che consentono o di negare il traffico da e verso le istanze in base all'account di servizio con associare a ogni istanza.
Come viene determinata l'autorizzazione
L'autorizzazione fornita alle applicazioni ospitate su un'istanza Compute Engine è limitata da due configurazioni distinte: i ruoli concessi all'account di servizio collegato e gli ambiti di accesso impostati sull'istanza. Entrambe le opzioni devono consentire l'accesso prima che l'applicazione sia in esecuzione sull'istanza possono accedere a una risorsa.
Supponiamo che tu abbia un'app che legge e scrive file su Cloud Storage, deve
devono prima eseguire l'autenticazione nell'API Cloud Storage. Puoi creare un'istanza con
cloud-platform
ambito e collega un account di servizio all'istanza. Puoi
assegna i ruoli IAM (Identity and Access Management) all'account di servizio per concedere
l'accesso delle app alle risorse appropriate. L'app utilizza le credenziali dell'account di servizio per autenticarsi nell'API Cloud Storage senza incorporare chiavi segrete o credenziali utente nell'istanza, nell'immagine o nel codice dell'app. La tua app utilizza anche l'autorizzazione fornita dai ruoli IAM nell'account di servizio per accedere alle risorse.
Per ulteriori informazioni sull'autorizzazione, consulta Autorizzazione
in questa pagina.
Account di servizio gestiti dall'utente
Gli account di servizio gestiti dall'utente includono i nuovi account di servizio che hai esplicitamente e l'account di servizio predefinito di Compute Engine.
Nuovi account di servizio
Puoi creare e gestire i tuoi account di servizio utilizzando IAM. Dopo aver creato un account, assegna i ruoli IAM all'account e configura le istanze in modo che vengano eseguite come account di servizio. Le app in esecuzione sulle istanze con l'account di servizio collegato possono utilizzare le credenziali dell'account per inviare richieste ad altre API Google.
Per creare e configurare un nuovo account di servizio, consulta Crea una VM che utilizza un account di servizio gestito dall'utente.
Account di servizio predefinito Compute Engine
I nuovi progetti che hanno abilitato l' API Compute Engine hanno un account di servizio predefinito Compute Engine, con l'indirizzo email seguente:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
L'account di servizio predefinito di Compute Engine ha le seguenti caratteristiche: attributi:
- Creato automaticamente, con nome e indirizzo email generati automaticamente e aggiunto al progetto quando attivi l'API Compute Engine. Hai il controllo completo dell'account.
- È collegato per impostazione predefinita a tutte le VM create utilizzando l'interfaccia a riga di comando Google Cloud o la console Google Cloud. Puoi ignorare questo comportamento specificando a un account di servizio diverso quando crei la VM oppure tramite che specifica che nessun account di servizio da collegare alla VM.
-
A seconda della configurazione dei criteri dell'organizzazione, l'account di servizio predefinito potrebbe automaticamente il ruolo Editor progetto. Ti consigliamo vivamente di disabilitare la concessione automatica del ruolo entro il giorno applicazione del criterio dell'organizzazione
iam.automaticIamGrantsForDefaultServiceAccounts
di blocco. Se hai creato la tua organizzazione dopo il 3 maggio 2024, questo vincolo viene applicato per impostazione predefinita.Se disabiliti la concessione automatica del ruolo, devi decidere quali ruoli concedere a quelli predefiniti account di servizio e poi concedi ruoli.
Se l'account di servizio predefinito ha già il ruolo Editor, ti consigliamo di sostituire il valore Ruolo di Editor con ruoli meno permissivi. Per modificare in sicurezza i ruoli dell'account di servizio, utilizza Policy Simulator per vedere l'impatto della modifica, quindi concedi e revoca i ruoli appropriati.
Puoi disattivare o eliminare questo account di servizio dal progetto, ma questa operazione potrebbe causare il fallimento di eventuali applicazioni che dipendono dalle credenziali dell'account di servizio. Se elimini accidentalmente il servizio predefinito di Compute Engine account, puoi provare a recuperarlo entro 30 giorni. Per ulteriori informazioni, consulta Eliminare e annullare l'eliminazione degli account di servizio.
Se l'account di servizio predefinito di Compute Engine è stato eliminato più di 30 giorni fa, puoi provare a recuperare l'account di servizio seguendo la procedura in Risoluzione dei problemi relativi agli account di servizio predefiniti.
Agenti di servizio
Gli agenti di servizio vengono creati e gestiti da Google Cloud e assegnati automaticamente al tuo progetto. Questi rappresentano servizi Google Cloud diversi e ogni account in genere ha un certo livello di accesso alle tue risorse Google Cloud.
Non puoi collegare agenti di servizio a un'istanza Compute Engine.
Agente di servizio API di Google
A parte l'account di servizio predefinito, tutti i progetti abilitati con Compute Engine includono un agente di servizio per le API Google, identificabile tramite l'indirizzo email:
PROJECT_NUMBER@cloudservices.gserviceaccount.com
Questo agente di servizio è progettato appositamente per eseguire processi interni di Google per tuo conto. Questo agente di servizio è di proprietà di Google e non è elencato in nella sezione Account di servizio della console Google Cloud. Per impostazione predefinita, a questo agente di servizio viene assegnato automaticamente il ruolo Editor del progetto ed è elencato nella sezione IAM della console Google Cloud. Questo agente di servizio viene eliminato solo quando viene eliminato il progetto. Tuttavia, può cambiare i ruoli concessi a questo account, inclusa la revoca dell'accesso completo a del tuo progetto.
Alcune risorse si basano sulle autorizzazioni di editor predefinite concesse a questo agente di servizio. Ad esempio, i gruppi di istanze gestite e la scalabilità automatica utilizzano le credenziali di questo agente di servizio per creare, eliminare e gestire le istanze. Se revochi le autorizzazioni a questo agente di servizio o modifichi le autorizzazioni in modo che non conceda le autorizzazioni per creare istanze, i gruppi di istanze gestite e la scalabilità automatica non funzioneranno più.
Per questi motivi, non devi modificare i ruoli di questo agente di servizio a meno che non venga role suggerimento suggerisce esplicitamente che tu li modifichi.
Compute Engine Service Agent
Tutti i progetti che hanno attivato l'API Compute Engine dispongono di un agente di servizio Compute Engine con l'indirizzo email seguente:
service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
Questo agente di servizio è progettato specificamente per
Compute Engine di eseguire le proprie mansioni di servizio sul progetto.
Si basa sul criterio IAM dell'agente di servizio concesso
progetto Google Cloud. È anche l'agente di servizio
Compute Engine utilizza
Accedi all'account di servizio gestito dall'utente sulla VM
di Compute Engine. L'account è di proprietà di Google, ma è specifico del tuo progetto. Questo agente di servizio non è visibile nella pagina IAM della console, a meno che non selezioni Includi concessioni di ruoli fornite da Google.
Per impostazione predefinita, a questo agente di servizio viene assegnato automaticamente il ruolo compute.serviceAgent
nel progetto.
Questo agente di servizio viene eliminato solo quando elimini il progetto. Tu può cambiare i ruoli concessi a questo agente di servizio e revocare tutti gli accessi al tuo progetto da questo agente. La revoca o la modifica delle autorizzazioni per questo agente di servizio impedisce a Compute Engine di accedere delle identità degli account di servizio sulle VM e può causare interruzioni il software in esecuzione all'interno delle VM.
Per questi motivi, ti consigliamo di evitare di modificare i ruoli per questo agente di servizio il più possibile.
Collegamento di un account di servizio a un'istanza
Per evitare di fornire a un'applicazione autorizzazioni in eccesso, ti consigliamo di creare un account di servizio gestito dall'utente, assegnargli solo i ruoli funzioni correttamente e collegarlo a Compute Engine in esecuzione in un'istanza Compute Engine. Il tuo codice può quindi usare Credenziali predefinite dell'applicazione per l'autenticazione con le credenziali fornite dall'account di servizio.
Puoi collegare un account di servizio a un'istanza Compute Engine quando devi creare l'istanza o in un secondo momento. È possibile collegare un solo account di servizio a un'istanza alla volta; se colleghi un account di servizio a un'istanza ha già un account di servizio collegato, l'account di servizio precedente non è più a lungo usato da quell'istanza.
Quando colleghi un account di servizio a un'istanza Compute Engine, devi assicurati inoltre che gli ambiti impostati sull'istanza siano corretti. In caso contrario, la tua app potrebbe non essere in grado di accedere a tutte le API di cui ha bisogno. Per ulteriori informazioni, vedi Accedi agli ambiti in questa pagina.
Per informazioni dettagliate su come collegare un account di servizio a un Per un'istanza Compute Engine, esamina uno dei seguenti documenti:
- Crea una VM che utilizza un account di servizio gestito dall'utente
- Cambiare l'account di servizio collegato
Autorizzazione
Quando configuri un'istanza per l'esecuzione come account di servizio, stabilisci il livello di accesso di cui dispone l'account di servizio dai ruoli IAM assegnati concedere all'account di servizio. Se l'account di servizio non ha ruoli IAM, nessuna risorsa può è possibile accedervi utilizzando l'account di servizio sull'istanza in questione.
Inoltre, gli ambiti di accesso di un'istanza determinano gli ambiti OAuth predefiniti richieste effettuate tramite gcloud CLI e le librerie client sul in esecuzione in un'istanza Compute Engine. Di conseguenza, gli ambiti di accesso possono limitare ulteriormente l'accesso ai metodi API durante l'autenticazione tramite OAuth. Tuttavia, non si estendono ad altri di autenticazione come gRPC.
La best practice prevede di impostare l'ambito di accesso completo di cloud-platform
nella
e poi controllare l'accesso dell'account di servizio tramite IAM
ruoli.
In sostanza:
- IAM limita l'accesso alle API in base alla configurazione IAM ruoli concessi all'account di servizio.
- Gli ambiti di accesso possono limitare ulteriormente l'accesso ai metodi dell'API.
Sia gli ambiti di accesso che i ruoli IAM sono descritti in dettaglio nella le sezioni seguenti.
Ruoli IAM
Devi assegnare i ruoli IAM appropriati a un account di servizio per consentire a questo account di servizio di accedere ai metodi API pertinenti.
Ad esempio, puoi concedere a un account di servizio i ruoli IAM per per la gestione di oggetti Cloud Storage o per la gestione di bucket o entrambi, il che limita l'account alle autorizzazioni concesse ruoli.
Quando concedi un ruolo IAM a un account di servizio, qualsiasi applicazione in esecuzione su un'istanza a cui è associato l'account di servizio avrà l'autorizzazione conferita da quel ruolo.
Alcune cose da ricordare:
Alcuni ruoli IAM sono in versione beta.
Se non esiste un ruolo predefinito per il livello di accesso che ti interessa, puoi creare e concedere ruoli personalizzati.
Per autorizzare l'accesso, devi impostare gli ambiti di accesso sull'istanza.
Mentre il livello di accesso di un account di servizio è determinato dai ruoli concesso all'account di servizio, gli ambiti di accesso di un'istanza ambiti OAuth predefiniti per le richieste effettuate tramite gcloud CLI e librerie client sull'istanza. Di conseguenza, gli ambiti di accesso possono limitare ulteriormente l'accesso ai metodi dell'API durante l'autenticazione tramite OAuth.
Ambiti di accesso
Gli ambiti di accesso sono il metodo legacy per specificare l'autorizzazione di un'istanza VM. Definiscono gli ambiti OAuth predefiniti utilizzati nelle richieste dalla CLI gcloud o dalle librerie client. Gli ambiti di accesso non si applicano per le chiamate effettuate tramite gRPC.
Gli ambiti di accesso si applicano per singola VM e rimangono solo per tutta la durata della VM. Puoi impostare gli ambiti di accesso durante la creazione di una VM o aggiornare l'ambito di accesso su una VM esistente.
In genere, la documentazione relativa a ciascun metodo API elenca gli ambiti
richiesta per quel metodo. Ad esempio, il metodo instances.insert
fornisce una
di ambiti validi
autorizzazione
.
Gli ambiti di accesso non hanno effetto se non hai abilitato l'API correlata nella progetto a cui appartiene l'account di servizio. Ad esempio, la concessione di un accesso per Cloud Storage su un'istanza di macchina virtuale consente per chiamare l'API Cloud Storage solo se hai abilitato API Cloud Storage nel progetto.
Ambiti predefiniti
Quando crei una nuova istanza Compute Engine, questa viene eseguita automaticamente configurato con i seguenti ambiti di accesso:
- Accesso di sola lettura a Cloud Storage:
https://www.googleapis.com/auth/devstorage.read_only
- Accesso in scrittura per scrivere i log di Compute Engine:
https://www.googleapis.com/auth/logging.write
- Accesso in scrittura per pubblicare i dati delle metriche nei tuoi progetti Google Cloud:
https://www.googleapis.com/auth/monitoring.write
- Accesso in sola lettura alle funzionalità di Service Management richieste per Google Cloud
Endpoint(alpha):
https://www.googleapis.com/auth/service.management.readonly
- Accesso in lettura o scrittura alle funzionalità di Service Control richieste per Google Cloud
Endpoint(alpha):
https://www.googleapis.com/auth/servicecontrol
- L'accesso in scrittura a Cloud Trace consente a un'applicazione in esecuzione su un
VM per scrivere dati di traccia in un progetto.
https://www.googleapis.com/auth/trace.append
Best practice per gli ambiti
Esistono molti
ambiti di accesso
disponibile tra cui scegliere, ma una best practice consiste nell'impostare cloud-platform
di ambito di accesso, che è un ambito OAuth per i servizi Google Cloud,
controllare l'accesso all'account di servizio assegnandogli i ruoli IAM.
https://www.googleapis.com/auth/cloud-platform
Esempi di ambiti
In base alla best practice relativa agli ambiti, se hai abilitato l'accesso cloud-platform
su un'istanza e viene concesso quanto segue
ruoli IAM predefiniti:
roles/compute.instanceAdmin.v1
roles/storage.objectViewer
roles/compute.networkAdmin
Quindi l'account di servizio avrà solo le autorizzazioni incluse in questi tre ruoli. Le applicazioni che si spacciano per tale account di servizio non possono eseguire azioni all'esterno di di questi ruoli nonostante l'ambito di accesso a Google Cloud.
Se invece concedi un ambito più restrittivo all'istanza, ad esempio
l'ambito di sola Cloud Storage
(https://www.googleapis.com/auth/devstorage.read_only
) e
imposta il ruolo di amministratore roles/storage.objectAdmin
nel servizio
e, per impostazione predefinita, le richieste da gcloud CLI
e librerie client non sarebbero in grado di gestire gli oggetti Cloud Storage
per quell'istanza, anche se hai concesso all'account di servizio
roles/storage.ObjectAdmin
. Questo perché l'API Cloud Storage
l'ambito di sola lettura non autorizza l'istanza a manipolare
Dati di Cloud Storage.
Ecco alcuni esempi di ambiti di accesso:
https://www.googleapis.com/auth/cloud-platform
. Visualizza e gestisci i tuoi dati tra i servizi Google Cloud nell'ambito progetto Google Cloud.https://www.googleapis.com/auth/compute
. Accesso in controllo completo ai metodi di Compute Engine.https://www.googleapis.com/auth/compute.readonly
. Accesso in sola lettura ai metodi di Compute Engine.https://www.googleapis.com/auth/devstorage.read_only
. Accedere in sola lettura a di archiviazione ideale in Cloud Storage.https://www.googleapis.com/auth/logging.write
. Accesso in scrittura al log di Compute Engine.
Passaggi successivi
- Autentica i carichi di lavoro utilizzando gli account di servizio.
- Scopri di più su come creare e gestire gli account di servizio.
- Scopri di più su IAM.
- Scopri di più sulle altre opzioni di controllo dell'accesso di Compute Engine.
- Scopri come visualizzare i log di controllo per monitorare come vengono modificate le risorse Compute Engine.
- Se devi utilizzare un account di servizio di un altro progetto, consulta la sezione sulla configurazione degli account di servizio per una risorsa in un altro progetto.