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 di macchina virtuale (VM) per interagire con altre API Google Cloud. Le applicazioni possono utilizzare le credenziali dell'account di servizio per autorizzarsi a un di API ed eseguire azioni sulla VM nell'ambito delle autorizzazioni concesse al servizio .
Account di servizio Dataproc
Ai seguenti account di servizio sono concesse le autorizzazioni per eseguire azioni Dataproc nel progetto in cui in cui si trova il cluster.
Account di servizio VM Dataproc: Le VM in un cluster Dataproc utilizzano questo account di servizio per Dataproc operative del piano dati. L'account di servizio predefinito di Compute Engine,
[project-number]-compute@developer.gserviceaccount.com
, è in uso come account di servizio VM Dataproc, a meno che non specifica Account di servizio VM quando crei un cluster. Per impostazione predefinita, Compute Engine all'account di servizio predefinito viene concesso il ruolo Editor di progetto, che include le autorizzazioni per creare ed eliminare risorse per la maggior parte delle risorse Google Cloud incluse le autorizzazioni necessarie per eseguire i dati Dataproc le operazioni dei piani.Account di servizio personalizzati: se specifichi account di servizio personalizzato quando crei un cluster, devi concedere all'account di servizio personalizzato le autorizzazioni necessarie. per le operazioni del piano dati Dataproc. Puoi farlo assegnando il metodo Ruolo Worker Dataproc all'account di servizio poiché questo ruolo include le autorizzazioni minime necessarie per i dati Dataproc le operazioni dei piani. Sono necessari ruoli aggiuntivi per concedere autorizzazioni ad altri operazioni come la lettura e la scrittura di dati in BigQuery.
Account di servizio dell'agente di servizio Dataproc: Dataproc crea questo account di servizio Agente di servizio Dataproc nel progetto Google Cloud di un utente Dataproc. Questo servizio non può essere sostituito da un account di servizio VM personalizzata quando per creare un cluster. Questo account dell'agente di servizio viene utilizzato per eseguire Dataproc le operazioni del piano di controllo, come la creazione, l'aggiornamento le VM del cluster (vedi Agente di servizio Dataproc (identità piano di controllo)).
Per impostazione predefinita, Dataproc utilizza
service-[project-number]@dataproc-accounts.iam.gserviceaccount.com
come account dell'agente di servizio. Se quell'account di servizio non dispone dell'autorizzazione, Dataproc utilizza Account dell'agente di servizio API di Google,[project-number]@cloudservices.gserviceaccount.com
, per il piano di controllo operazioni.
Reti VPC condivise: se il cluster utilizza una rete VPC condivisa, un amministratore del VPC condiviso deve concedere per entrambi gli account di servizio riportati sopra Utente di rete per il VPC condiviso progetto host. Per ulteriori informazioni, vedi:
- Crea un cluster che utilizza una rete VPC in un'altra rete VPC progetto
- Documentazione sulla rete VPC condivisa: configurazione di account di servizio come progetto di servizio Amministratori
Ambiti di accesso alle VM Dataproc
Gli ambiti di accesso alle VM e i ruoli IAM operano insieme per limitare l'accesso alle VM a Google Cloud
su quelle di livello inferiore. Ad esempio, se alle VM del cluster viene concesso solo
https://www.googleapis.com/auth/storage-full
ambito, applicazioni in esecuzione
sulle VM dei cluster possono chiamare le API Cloud Storage,
effettuare richieste a BigQuery, anche se sono in esecuzione come account di servizio VM
a cui è stato concesso
un ruolo BigQuery con autorizzazioni ampie.
Una best practice
è concedere l'ampio cloud-platform
ambito (https://www.googleapis.com/auth/cloud-platform
)
alle VM e limitare l'accesso alle VM concedendo
i ruoli IAM nell'account di servizio VM.
Ambiti VM Dataproc predefiniti. Se gli ambiti non sono specificato quando viene creato un cluster (vedi gcloud dataproc cluster create --scopes), Le VM Dataproc hanno il seguente insieme predefinito di ambiti:
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 specificati e il seguente insieme minimo di (anche se non specifichi gli ambiti richiesti questi elementi):
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
Crea un cluster con un account di servizio per VM personalizzata
Quando crei un cluster, puoi specificare un Account di servizio VM che il cluster utilizzerà per le operazioni del piano dati Dataproc dell'account di servizio VM predefinito (non puoi modificare l'account di servizio VM dopo il cluster viene creata). Utilizzo di un account di servizio VM con ruoli IAM assegnati consente di fornire al cluster un accesso granulare alle risorse di progetto.
Passaggi preliminari
Crea l'account di servizio per VM personalizzata all'interno del progetto in cui verrà creato il cluster.
Concedi all'account di servizio della VM personalizzata Worker Dataproc nel progetto e gli eventuali ruoli aggiuntivi richiesti dai tuoi job, come Lettore e scrittore BigQuery (vedi Autorizzazioni Dataproc e ruoli IAM).
Esempio di interfaccia a riga di comando gcloud:
- Il comando di esempio seguente concede l'account di servizio della VM personalizzata nel progetto 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"
- Prendi in considerazione un ruolo personalizzato: anziché concedere il servizio
account il ruolo Dataproc
Worker
predefinito, puoi concedere all'account di servizio un ruolo personalizzato che contiene le autorizzazioni del ruolo Worker ma limitastorage.objects.*
autorizzazioni aggiuntive.- Il ruolo personalizzato deve concedere almeno l'account di servizio VM
storage.objects.create
,storage.objects.get
estorage.objects.update
per gli oggetti in Bucket temporanei e di gestione temporanea di Dataproc e su eventuali bucket aggiuntivi richiesti dai job che verranno eseguiti in un cluster Kubernetes.
- Il ruolo personalizzato deve concedere almeno l'account di servizio VM
Crea il cluster
- Crea il cluster nel tuo progetto.
Comando gcloud
Utilizza gcloud dataproc clusters create per creare un cluster con l'account di servizio della VM personalizzata.
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 lettere, numeri e trattini. Non può terminare con un trattino. Il nome di un 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 del progetto Google Cloud che contiene la tua Account di servizio VM. Questo sarà l'ID di il progetto in cui verrà creato il cluster o l'ID di un altro progetto, se creazione di un cluster con un account di servizio VM personalizzata in un altro cluster.
- SCOPE: ambiti di accesso per le istanze VM del cluster (ad esempio
https://www.googleapis.com/auth/cloud-platform
).
API REST
Quando completi
GceClusterConfig
nell'ambito della
clusters.create
API request, imposta i seguenti campi:
serviceAccount
: l'account di servizio verrà localizzato nel progetto in cui verrà creato il cluster, a meno che tu non utilizzi una Account di servizio VM di un altro progetto.serviceAccountScopes
: specifica il ambiti di accesso per le istanze VM del cluster, ad esempiohttps://www.googleapis.com/auth/cloud-platform
).
Console
Impostazione di un account di servizio VM Dataproc
nella console Google Cloud non è supportato. Puoi impostare cloud-platform
ambito di accesso sul cluster
VM quando crei il cluster facendo clic su
"Abilita l'ambito cloud-platform per questo cluster"
nella sezione Accesso al progetto della pagina Gestione della sicurezza
nel riquadro Dataproc
Crea un cluster
nella console Google Cloud.
Crea un cluster con un account di servizio VM personalizzato da un altro progetto
Quando crei un cluster, puoi specificare un Account di servizio VM che il cluster utilizzerà per le operazioni del piano dati Dataproc dell'utilizzo dell'account di servizio VM predefinito (non puoi specificare un account di servizio per VM personalizzata dopo il cluster viene creata). Utilizzo di un account di servizio VM personalizzato con ruoli IAM assegnati consente di fornire al cluster un accesso granulare alle risorse di progetto.
Passaggi preliminari
Nel progetto dell'account di servizio (il progetto in cui si trova l'account di servizio della VM personalizzata):
Abilita il collegamento degli account di servizio tra progetti.
Attiva Dataproc API.
Concedi al tuo account email (l'utente che crea il cluster) Ruolo Utente account di servizio sul progetto dell'account di servizio oppure, per un controllo più granulare, l'account di servizio della VM personalizzata nel progetto dell'account di servizio.
Per ulteriori informazioni: vedi Gestione dell'accesso a progetti, cartelle e organizzazioni di concedere ruoli a livello di progetto Gestire l'accesso agli account di servizio e concedere ruoli a livello di account di servizio.
Esempi dell'interfaccia a riga di comando gcloud:
- Il comando di esempio seguente concede all'utente l'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 seguente formato:user:user-name@example.com
.- Il comando di esempio seguente concede all'utente l'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 seguente formato:user:user-name@example.com
.Concedi all'account di servizio della VM personalizzata Worker Dataproc sul 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 l'account di servizio dell'agente di servizio Dataproc Nel progetto cluster Service Account User (Utente account di servizio) e Creatore token account di servizio ruoli nel progetto dell'account di servizio o, per un controllo più granulare, l'account di servizio della VM personalizzata nel progetto dell'account di servizio. In questo modo, consenti all'account di servizio dell'agente di servizio Dataproc nel progetto del cluster di creare token per l'account di servizio VM Dataproc personalizzato nel progetto dell'account di servizio.
Per ulteriori informazioni: vedi Gestione dell'accesso a progetti, cartelle e organizzazioni di concedere ruoli a livello di progetto Gestire l'accesso agli account di servizio e concedere ruoli a livello di account di servizio.
Esempi dell'interfaccia a riga di comando gcloud:
- I seguenti comandi di esempio concedono all'agente di servizio Dataproc l'account di servizio nel progetto cluster: Utente dell'account di servizio e token dell'account di servizio Ruoli di creator 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'agente di servizio Dataproc l'account di servizio nel progetto cluster Utente account di servizio e Utente Ruoli Creatore token account 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 Account di servizio dell'agente di servizio API di Google nel progetto cluster Creatore token account di servizio nel progetto dell'account di servizio oppure, per un controllo più granulare, l'account di servizio della VM personalizzata nel progetto dell'account di servizio. In questo modo, concedi l'account di servizio dell'agente di servizio delle API di Google nel cluster crea la capacità di creare token per il servizio VM Dataproc personalizzato nel progetto dell'account di servizio.
Per ulteriori informazioni: vedi Gestione dell'accesso a progetti, cartelle e organizzazioni di concedere ruoli a livello di progetto Gestire l'accesso agli account di servizio e concedere ruoli a livello di account di servizio.
Esempi dell'interfaccia a riga di comando gcloud:
- Il seguente comando di esempio concede l'account di servizio dell'agente di servizio delle API di Google Nel progetto cluster il ruolo Creatore token account di servizio a livello di progetto:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:CLUSTER_PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
- Il seguente comando di esempio concede l'account di servizio dell'agente di servizio delle API di Google Nel progetto di 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:CLUSTER_PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Concedi Account di servizio dell'agente di servizio Compute Engine nel progetto cluster Creatore token account di servizio nel progetto dell'account di servizio oppure, per un controllo più granulare, l'account di servizio della VM personalizzata nel progetto dell'account di servizio. In questo modo, concedi l'account di servizio dell'agente di servizio dell'agente Compute nel cluster crea la capacità di creare token per il servizio VM Dataproc personalizzato nel progetto dell'account di servizio.
Per ulteriori informazioni: vedi Gestione dell'accesso a progetti, cartelle e organizzazioni di concedere ruoli a livello di progetto Gestire l'accesso agli account di servizio e concedere ruoli a livello di account di servizio.
Esempi dell'interfaccia a riga di comando gcloud:
- Il comando di esempio seguente concede l'account di servizio dell'agente di servizio Compute Engine Nel progetto 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 comando di esempio seguente concede l'account di servizio dell'agente di servizio Compute Engine Nel progetto di 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
- Account di servizio
- Autorizzazioni Dataproc e ruoli IAM
- Entità e ruoli Dataproc
- Protezione multi-tenancy basata su account di servizio Dataproc
- Autenticazione cluster personale di Dataproc
- IAM granulare di Dataproc