Questa pagina descrive i service account e gli ambiti di accesso alle VM e come vengono utilizzati con Dataproc.
Requisito di sicurezza a partire dal 3 agosto 2020: gli utenti Dataproc devono disporre dell'autorizzazione ActAs del service account per eseguire il deployment delle risorse Dataproc, ad esempio la creazione di cluster e l'invio di job. Il ruolo
Utente account di servizio contiene questa autorizzazione. Per informazioni sui ruoli Dataproc richiesti, consulta Ruoli per l'autenticazione di service account.
Opt-in per gli utenti Dataproc esistenti: gli utenti Dataproc esistenti al 3 agosto 2020 possono attivare questo requisito di sicurezza (vedi Protezione di Dataproc, Dataflow e Cloud Data Fusion).
Che cosa sono i service account?
Un service account è 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 Google Cloud API. Le applicazioni possono utilizzare le credenziali del service account per autorizzarsi a un insieme di API ed eseguire azioni sulla VM con le autorizzazioni concesse al service account.
Service account del cluster Dataproc
I seguenti service account devono disporre delle autorizzazioni necessarie per eseguire le azioni Dataproc nel progetto in cui si trova il cluster.
Service account VM Dataproc
Le VM in un cluster Dataproc utilizzano un service account per
Dataproc operazioni del piano dati.
Il service account predefinito Compute Engine,
project_number-compute@developer.gserviceaccount.com, viene utilizzato come service account VM, a meno che non ne specifichi uno
personalizzato
quando crei un cluster. Il service account VM deve avere il
ruolo Worker Dataproc, che include le autorizzazioni richieste per le operazioni del piano dati Dataproc. Per ulteriori informazioni, consulta
Ruoli Dataproc.
Visualizzare i ruoli del service account VM
Per visualizzare i ruoli concessi al service account VM Dataproc:
Nella Google Cloud console vai alla pagina IAM.
Fai clic su Includi concessioni di ruoli fornite da Google.
Visualizza i ruoli elencati per il service account VM. L'immagine seguente mostra il ruolo Worker Dataproc richiesto elencato per il service account predefinito Compute Engine (
project_number-compute@developer.gserviceaccount.com) che Dataproc utilizza per impostazione predefinita come service account VM.
Puoi fare clic sull'icona a forma di matita visualizzata nella riga del service account per concedere o rimuovere i ruoli del service account.
Service account dell'agente di servizio Dataproc
Dataproc creates the
service account dell'agente di servizio,
service-project_number@dataproc-accounts.iam.gserviceaccount.com, e concede al service account
il
ruolo Agente di servizio Dataproc
in un Google Cloud progetto. Questo service
account esegue le operazioni del piano di controllo Dataproc
, come la creazione, l'aggiornamento e l'eliminazione delle VM del
cluster. Non puoi sostituire questo service account con un service account VM personalizzato quando crei un cluster.
Concessione di ruoli al service account dell'agente di servizio in una rete VPC condiviso
Se un cluster Dataproc utilizza una rete VPC condiviso, un amministratore VPC condiviso deve concedere il service account dell'agente di servizio Dataproc il ruolo di Utente di rete per il progetto host VPC condiviso. Per ulteriori informazioni, consulta le seguenti risorse:
- Creare un cluster che utilizza una rete VPC in un altro progetto
- Documentazione relativa al VPC condiviso: configurazione dei service account come amministratori del progetto di servizio
Creare un cluster con un service account VM personalizzato
Quando crei un cluster, puoi specificare un service account VM personalizzato che il cluster utilizzerà per le operazioni del piano dati Dataproc anziché il service account VM predefinito (non puoi modificare il service account VM dopo la creazione del cluster ). L'utilizzo di un service account VM con ruoli IAM assegnati ti consente di fornire al cluster un accesso granulare alle risorse del progetto.
Passaggi preliminari
Crea il service account VM personalizzato nel progetto in cui verrà creato il cluster.
Concedi al service account VM personalizzato il ruolo Worker Dataproc nel progetto e tutti i ruoli aggiuntivi necessari per i job, ad esempio i ruoli BigQuery Lettore e Writer (vedi Ruoli Dataproc).
Esempio dell'interfaccia a riga di comando gcloud:
- Il seguente comando di esempio concede al service account VM personalizzato nel progetto del cluster il ruolo Worker Dataproc 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 al service
account il ruolo Worker Dataproc predefinito (
roles/dataproc.worker), puoi concedergli un ruolo personalizzato che contenga le autorizzazioni del ruolo Worker, ma limiti lestorage.objects.*autorizzazioni.- Il ruolo personalizzato deve concedere almeno al service account VM
storage.objects.create,storage.objects.get, estorage.objects.updateautorizzazioni sugli oggetti nei bucket di staging e temporanei di Dataproc e su tutti i bucket aggiuntivi necessari per i job che verranno eseguiti sul cluster.
- Il ruolo personalizzato deve concedere almeno al service account VM
Crea il cluster
- Crea il cluster nel tuo progetto.
Comando gcloud
Utilizza il comando gcloud dataproc clusters create per creare un cluster con il service account 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 del service account.
- PROJECT_ID: l'ID progetto del progetto contenente il service account VM. Google Cloud Questo sarà l'ID di il progetto in cui verrà creato il cluster o l'ID di un altro progetto se stai creando un cluster con un service account VM personalizzato in un altro progetto.
- SCOPE: Ambiti di accesso per le istanze VM del cluster (ad esempio,
https://www.googleapis.com/auth/cloud-platform).
API REST
Quando completi
GceClusterConfig
come parte della richiesta API
clusters.create, imposta i seguenti campi:
serviceAccount: il service account si troverà nel progetto in cui verrà creato il cluster, a meno che tu non stia utilizzando un service account 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 service account VM Dataproc
nella Google Cloud consolle non è supportata. Puoi impostare l'cloud-platform
ambito di accesso sulle VM del cluster quando crei il cluster facendo clic
su "Abilita l'ambito cloud-platform per questo cluster"
nella sezione Accesso al progetto del riquadro Gestisci sicurezza
nella pagina Crea un cluster
di Dataproc nella Google Cloud consolle.
Creare un cluster con un service account VM personalizzato di un altro progetto
Quando crei un cluster, puoi specificare un service account VM personalizzato che il cluster utilizzerà per le operazioni del piano dati Dataproc anziché utilizzare il service account VM predefinito (non puoi specificare un service account VM personalizzato dopo la creazione del cluster ). L'utilizzo di un service account VM personalizzato con ruoli IAM assegnati ti consente di fornire al cluster un accesso granulare alle risorse del progetto.
Passaggi preliminari
Nel progetto del service account (il progetto in cui si trova il service account VM personalizzato):
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Concedi al tuo account email (l'utente che sta creando il cluster) il ruolo Utente account di servizio nel progetto del service account o, per un controllo più granulare, nel service account VM personalizzato nel progetto del service account.
Per ulteriori informazioni: consulta Gestire l'accesso a progetti, cartelle e organizzazioni per concedere i ruoli a livello di progetto e Gestire l'accesso ai service account per concedere i ruoli a livello di service account.
Esempi dell'interfaccia a riga di comando gcloud:
- 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 service account:
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 al service account VM personalizzato il ruolo Worker Dataproc nel progetto del cluster.
Esempio dell'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 al service account dell'agente di servizio Dataproc nel progetto del cluster i ruoli Utente account di servizio e Creatore token account di servizio nel progetto del service account o, per un controllo più granulare, nel service account VM personalizzato nel progetto del service account. In questo modo, consenti al service account dell'agente di servizio Dataproc nel progetto del cluster di creare token per il service account VM Dataproc personalizzato nel progetto del service account.
Per ulteriori informazioni: consulta Gestire l'accesso a progetti, cartelle e organizzazioni per concedere i ruoli a livello di progetto e Gestire l'accesso ai service account per concedere i ruoli a livello di service account.
Esempi dell'interfaccia a riga di comando gcloud:
- I seguenti comandi di esempio concedono al service account dell'agente di servizio Dataproc nel progetto del cluster i ruoli Utente account di servizio e 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@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 al service account dell'agente di servizio Dataproc nel progetto del cluster i ruoli Utente account di servizio e Creatore token account di servizio a livello di service account 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 service account dell'agente di servizio Compute Engine nel progetto del cluster il ruolo Creatore token account di servizio nel progetto del service account o, per un controllo più granulare, nel service account VM personalizzato nel progetto del service account. In questo modo, concedi al service account dell'agente di servizio Compute Engine nel progetto del cluster la possibilità di creare token per il service account VM Dataproc personalizzato nel progetto del service account.
Per ulteriori informazioni: consulta Gestire l'accesso a progetti, cartelle e organizzazioni per concedere i ruoli a livello di progetto e Gestire l'accesso ai service account per concedere i ruoli a livello di service account.
Esempi dell'interfaccia a riga di comando gcloud:
- Il seguente comando di esempio concede al service account dell'agente di servizio 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 concede al service account dell'agente di servizio Compute Engine nel progetto del cluster il ruolo Creatore token account di servizio a livello di service account 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
- Protezione multi-tenancy basata su service account Dataproc
- Autenticazione cluster personale di Dataproc
- IAM granulare Dataproc