Questa pagina descrive gli account di servizio e gli ambiti di accesso alle VM e come vengono utilizzati con Dataproc.
Che cosa sono gli account di servizio?
Un account di servizio è un account speciale che può essere utilizzato da servizi e applicazioni in esecuzione su un'istanza di macchina virtuale (VM) Compute Engine per interagire con altre API Google Cloud. Le applicazioni possono utilizzare le credenziali dell'account di servizio per autorizzarsi a un insieme di API ed eseguire azioni sulla VM nel rispetto delle autorizzazioni concesse all'account di servizio.
Account di servizio Dataproc
Ai seguenti account di servizio vengono concesse le autorizzazioni necessarie per eseguire azioni Dataproc nel progetto in cui si trova il cluster.
Account di servizio VM Dataproc: le VM in un cluster Dataproc utilizzano questo account di servizio per le operazioni del piano dati di Dataproc. L'account di servizio predefinito di Compute Engine,
project_number-compute@developer.gserviceaccount.com
, viene utilizzato come account di servizio VM Dataproc, a meno che non specifichi un account di servizio VM quando crei un cluster. Per impostazione predefinita, all'account di servizio predefinito di Compute Engine viene concesso il ruolo Dataproc Worker, che include le autorizzazioni necessarie per le operazioni del piano di dati di Dataproc.Account di servizio personalizzati: se specifichi un account di servizio personalizzato quando crei un cluster, devi concedere all'account di servizio personalizzato le autorizzazioni necessarie per le operazioni del piano dati di Dataproc. Per farlo, assegna il ruolo Dataproc Worker all'account di servizio perché questo ruolo include le autorizzazioni necessarie per le operazioni del piano dati Dataproc. Sono necessari ruoli aggiuntivi per concedere autorizzazioni per altre operazioni, come la lettura e la scrittura di dati in BigQuery (per ulteriori informazioni, consulta Visualizzare e gestire i ruoli degli account di servizio IAM).
Account di servizio Dataproc Service Agent: Dataproc crea l'account di servizio Service Agent,
service-project_number@dataproc-accounts.iam.gserviceaccount.com
, con il ruolo Dataproc Service Agent nel progetto Google Cloud di un utente Dataproc. Questo account di servizio non può essere sostituito da un account di servizio VM personalizzato quando crei un cluster. Questo account agente di servizio viene utilizzato per eseguire operazioni del piano di controllo Dataproc, come la creazione, l'aggiornamento e l'eliminazione di VM del cluster.
Reti VPC condivise: se il cluster utilizza una rete VPC condivisa, un amministratore VPC condiviso deve concedere al service account dell'agente di servizio Dataproc il ruolo di Utente di rete per il progetto host VPC condiviso. Per ulteriori informazioni, vedi:
- Creare un cluster che utilizza una rete VPC in un altro progetto
- Documentazione VPC condiviso: configurazione degli account di servizio come amministratori dei progetti di servizio
Visualizzare e gestire i ruoli degli account di servizio IAM
Per visualizzare e gestire i ruoli concessi all'account di servizio VM Dataproc, procedi nel seguente modo:
Nella console Google Cloud, vai alla pagina IAM.
Fai clic su Includi concessioni di ruoli fornite da Google.
Visualizza i ruoli elencati per l'account di servizio della VM. L'immagine seguente mostra il ruolo Dataproc Worker richiesto elencato per l'account di servizio predefinito di Compute Engine (
project_number-compute@developer.gserviceaccount.com
) che Dataproc utilizza per impostazione predefinita come account di servizio VM.Puoi fare clic sull'icona a forma di matita visualizzata nella riga dell'account di servizio per concedere o rimuovere i ruoli dell'account di servizio.
Ambiti di accesso alle VM Dataproc
Gli ambiti di accesso alle VM e i ruoli IAM agiscono insieme per limitare l'accesso delle VM alle API di Google Cloud. Ad esempio, se alle VM del cluster viene concesso solo l'ambito https://www.googleapis.com/auth/storage-full
, le applicazioni in esecuzione sulle VM del cluster possono chiamare le API Cloud Storage, ma non sono in grado di inviare richieste a BigQuery, anche se vengono eseguite come account di servizio VM a cui è stato concesso un ruolo BigQuery con autorizzazioni ampie.
Una best practice consiste nel concedere l'ambito ampio cloud-platform
(https://www.googleapis.com/auth/cloud-platform
) alle VM e poi limitare l'accesso alle VM concedendo specifici ruoli IAM all'account di servizio VM.
Ambito delle VM Dataproc predefinite. Se gli ambiti non vengono specificati al momento della creazione di un cluster (vedi gcloud dataproc cluster create --scopes), le VM Dataproc hanno il seguente insieme di ambiti predefiniti:
https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+
).
https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/bigtable.admin.table
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
Se specifichi gli ambiti durante la creazione di un cluster, le VM del cluster avranno gli ambiti specificati e il seguente insieme minimo di ambiti richiesti (anche se non li specifichi):
https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+
).
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
Creare un cluster con un account di servizio VM personalizzato
Quando crei un cluster, puoi specificare un account di servizio VM personalizzato che verrà utilizzato dal cluster per le operazioni del piano dati Dataproc anziché l'account di servizio VM predefinito (non puoi modificare l'account di servizio VM dopo la creazione del cluster). L'utilizzo di un account di servizio VM con ruoli IAM assegnati consente di fornire al cluster l'accesso granulare alle risorse del progetto.
Passaggi preliminari
Crea l'account di servizio VM personalizzato nel progetto in cui verrà creato il cluster.
Concedi all'account di servizio della VM personalizzata il ruolo Dataproc Worker nel progetto e tutti i ruoli aggiuntivi necessari per i job, ad esempio i ruoli Lettore e Scrittore di BigQuery (consulta Autorizzazioni e ruoli IAM di Dataproc).
Esempio di interfaccia a riga di comando gcloud:
- Il seguente comando di esempio concede all'account di servizio VM personalizzato nel progetto del cluster il ruolo Dataproc Worker a livello di progetto:
gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role="roles/dataproc.worker"
- Valuta la possibilità di utilizzare un ruolo personalizzato: anziché concedere all'account di servizio il ruolo
Worker
Dataproc predefinito, puoi concedere all'account di servizio un ruolo personalizzato che contenga le autorizzazioni del ruolo di utente, ma limiti le autorizzazionistorage.objects.*
.- Il ruolo personalizzato deve concedere almeno all'account di servizio della VM le autorizzazioni
storage.objects.create
,storage.objects.get
estorage.objects.update
per gli oggetti nei bucket temporanei e di staging di Dataproc e per eventuali bucket aggiuntivi necessari per i job che verranno eseguiti sul cluster.
- Il ruolo personalizzato deve concedere almeno all'account di servizio della VM le autorizzazioni
Crea il cluster
- Crea il cluster nel tuo progetto.
Comando gcloud
Utilizza il comando gcloud dataproc clusters create per creare un cluster con l'account di servizio VM personalizzato.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --scopes=SCOPE
Sostituisci quanto segue:
- CLUSTER_NAME: il nome del cluster, che deve essere univoco all'interno di un progetto. Il nome deve iniziare con una lettera minuscola e può contenere fino a 51 lettere minuscole, numeri e trattini. Non può terminare con un trattino. Il nome di un cluster eliminato può essere riutilizzato.
- REGION: la regione in cui si troverà il cluster.
- SERVICE_ACCOUNT_NAME: il nome dell'account di servizio.
- PROJECT_ID: l'ID progetto Google Cloud del progetto contenente il tuo account di servizio VM. Si tratta dell'ID del progetto in cui verrà creato il cluster o dell'ID di un altro progetto se stai creando un cluster con un account di servizio VM personalizzato in un altro cluster.
- SCOPE: ambito di accesso per le istanze VM del cluster (ad esempio
https://www.googleapis.com/auth/cloud-platform
).
API REST
Quando completi il campo
GceClusterConfig
nell'ambito della richiesta dell'API
clusters.create
, imposta i seguenti campi:
serviceAccount
: l'account di servizio si troverà nel progetto in cui verrà creato il cluster, a meno che non utilizzi un account di servizio VM di un altro progetto.serviceAccountScopes
: specifica gli ambiti di accesso per le istanze VM del cluster (ad esempio,https://www.googleapis.com/auth/cloud-platform
).
Console
L'impostazione di un account di servizio VM Dataproc
nella console Google Cloud non è supportata. Puoi impostare l'cloud-platform
ambito di accesso sulle VM del cluster quando crei il cluster facendo clic su
"Attiva l'ambito della piattaforma cloud per questo cluster"
nella sezione Accesso al progetto del pannello Gestisci la sicurezza
nella pagina Dataproc
Crea un cluster
nella console Google Cloud.
Creare un cluster con un account di servizio VM personalizzato da un altro progetto
Quando crei un cluster, puoi specificare un account di servizio VM personalizzato che verrà utilizzato dal cluster per le operazioni del piano dati di Dataproc anziché utilizzare l'account di servizio VM predefinito (non puoi specificare un account di servizio VM personalizzato dopo la creazione del cluster). L'utilizzo di un account di servizio VM personalizzato con ruoli IAM assegnati consente di fornire al cluster l'accesso granulare alle risorse del progetto.
Passaggi preliminari
Nel progetto dell'account di servizio (il progetto in cui si trova l'account di servizio VM personalizzato):
Enable the Dataproc API.
Concedi al tuo account email (l'utente che sta creando il cluster) il ruolo Utente account di servizio nel progetto dell'account di servizio o, per un controllo più granulare, nell'account di servizio VM personalizzato nel progetto dell'account di servizio.
Per ulteriori informazioni: consulta Gestire l'accesso a progetti, cartelle e organizzazioni per concedere i ruoli a livello di progetto e Gestire l'accesso agli account di servizio per concedere i ruoli a livello di account di servizio.
Esempi di gcloud CLI:
- Il seguente comando di esempio concede all'utente il ruolo Utente account di servizio a livello di progetto:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
Note:
USER_EMAIL
: fornisci l'indirizzo email del tuo account utente nel formato:user:user-name@example.com
.- Il seguente comando di esempio concede all'utente il ruolo Utente account di servizio a livello di account di servizio:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
Note:
USER_EMAIL
: fornisci l'indirizzo email del tuo account utente nel formato:user:user-name@example.com
.Concedi all'account di servizio VM personalizzato il ruolo Dataproc Worker nel progetto del cluster.
Esempio di interfaccia a riga di comando gcloud:
gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --role="roles/dataproc.worker"
Concedi all'account di servizio dell'agente di servizio Dataproc nel progetto del cluster i ruoli Utente account di servizio e Creatore token account di servizio nel progetto dell'account di servizio o, per un controllo più granulare, l'account di servizio VM personalizzato nel progetto dell'account di servizio. In questo modo, consente all'account di servizio dell'agente di servizio Dataproc nel progetto del cluster di creare token per l'account di servizio della VM Dataproc personalizzata nel progetto dell'account di servizio.
Per ulteriori informazioni: consulta Gestire l'accesso a progetti, cartelle e organizzazioni per concedere i ruoli a livello di progetto e Gestire l'accesso agli account di servizio per concedere i ruoli a livello di account di servizio.
Esempi dell'interfaccia a riga di comando gcloud:
- I seguenti comandi di esempio concedono all'account di servizio Agente di servizio Dataproc nel progetto del cluster i ruoli Utente account di servizio e Creatore di token del service account a livello di progetto:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountUser"
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
- I seguenti comandi di esempio concedono all'account di servizio Agente di servizio Dataproc nel progetto del cluster i ruoli Utente account di servizio e Creatore token account di servizio a livello di account di servizio VM:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountUser"
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Concedi al account di servizio Agente di servizio Compute Engine nel progetto del cluster il ruolo Creatore token account di servizio nel progetto dell'account di servizio o, per un controllo più granulare, l'account di servizio VM personalizzato nel progetto dell'account di servizio. In questo modo, concedi all'account di servizio Agente di servizio Compute Agent nel progetto del cluster la possibilità di creare token per l'account di servizio VM Dataproc personalizzato nel progetto dell'account di servizio.
Per ulteriori informazioni: consulta Gestire l'accesso a progetti, cartelle e organizzazioni per concedere i ruoli a livello di progetto e Gestire l'accesso agli account di servizio per concedere i ruoli a livello di account di servizio.
Esempi di gcloud CLI:
- Il seguente comando di esempio assegna all'account di servizio Service Agent di Compute Engine nel progetto del cluster il ruolo Creatore token account di servizio a livello di progetto:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
- Il seguente comando di esempio assegna all'account di servizio Agente di servizio Compute Engine nel progetto del cluster il ruolo Creatore token account di servizio a livello di account di servizio VM:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Crea il cluster
Passaggi successivi
- Service account
- Autorizzazioni Dataproc e ruoli IAM
- Entità e ruoli Dataproc
- Multi-tenancy sicura basata su service account Dataproc
- Autenticazione del cluster personale Dataproc
- IAM granulare di Dataproc