Account di servizio Dataproc

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 nell'ambito 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 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 specifica un account di servizio VM quando crei un cluster. Per impostazione predefinita, all'account di servizio predefinito di Compute Engine viene concesso il ruolo Editor di progetto, che include le autorizzazioni per creare ed eliminare risorse per la maggior parte dei servizi Google Cloud, incluse le autorizzazioni necessarie per eseguire le operazioni del piano dati Dataproc.

    Account di servizio personalizzati: se specifichi un account di servizio personalizzato quando crei un cluster, devi concedere a quest'ultimo le autorizzazioni necessarie per le operazioni del piano dati Dataproc. Puoi farlo assegnando il ruolo Worker Dataproc all'account di servizio, perché questo ruolo include le autorizzazioni minime 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.

  • Account di servizio dell'agente di servizio Dataproc: Dataproc crea questo account di servizio con il ruolo Agente di servizio Dataproc nel progetto Google Cloud di un utente Dataproc. Questo account di servizio non può essere sostituito da un account di servizio per VM personalizzata quando crei un cluster. Questo account dell'agente di servizio viene utilizzato per eseguire le operazioni del piano di controllo Dataproc, come la creazione, l'aggiornamento e l'eliminazione delle VM del cluster (vedi Agente di servizio Dataproc (identità del piano di controllo)).

    Per impostazione predefinita, Dataproc utilizza service-[project-number]@dataproc-accounts.iam.gserviceaccount.com come account dell'agente di servizio. Se l'account di servizio non dispone dell'autorizzazione, Dataproc utilizza l'account dell'agente di servizio delle API di Google, [project-number]@cloudservices.gserviceaccount.com, per le operazioni del piano di controllo.

Reti VPC condivise: se il cluster utilizza una rete VPC condivisa, un amministratore del VPC condiviso deve concedere a entrambi gli account di servizio precedenti il ruolo di Utente di rete per il progetto host del VPC condiviso. Per ulteriori informazioni, consulta:

Ambiti di accesso alle VM Dataproc

Gli ambiti di accesso alle VM e i ruoli IAM operano insieme per limitare l'accesso delle VM alle API 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 possono 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 consiste nel concedere alle VM l'ambito cloud-platform ampio (https://www.googleapis.com/auth/cloud-platform) e limitare l'accesso alle VM concedendo ruoli IAM specifici all'account di servizio VM.

Ambiti VM Dataproc predefiniti. Se gli ambiti non sono specificati al momento della creazione di un cluster (consulta 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 cluster avranno gli ambiti da te specificati e il seguente insieme minimo di ambiti obbligatori (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

Crea un cluster con un account di servizio per VM personalizzata

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 predefinito per le VM (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 un accesso granulare alle risorse di progetto.

Passaggi preliminari

  1. Crea l'account di servizio della VM personalizzata all'interno del progetto in cui verrà creato il cluster.

  2. Concedi all'account di servizio VM personalizzato il ruolo Worker Dataproc nel progetto ed eventuali ruoli aggiuntivi richiesti dai job, ad esempio i ruoli Lettore e scrittore BigQuery (vedi Autorizzazioni Dataproc e ruoli IAM).

    Esempio di interfaccia a riga di comando gcloud:

    • Il comando di esempio seguente assegna all'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 all'account di servizio il ruolo Dataproc Worker predefinito, puoi concedere all'account di servizio un ruolo personalizzato che contiene le autorizzazioni del ruolo Worker, ma limita le autorizzazioni storage.objects.*.
      • Il ruolo personalizzato deve concedere almeno le autorizzazioni all'account di servizio VM storage.objects.create, storage.objects.get e storage.objects.update per gli oggetti nei bucket temporanei e di gestione temporanea di Dataproc e su eventuali bucket aggiuntivi richiesti dai job che verranno eseguiti sul cluster.

Crea il cluster

  • Crea il cluster nel tuo progetto.

Comando gcloud

Usa il comando gcloud dataproc clusters create per creare un cluster con l'account di servizio per 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, 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 del progetto Google Cloud che contiene il tuo account di servizio VM. Questo sarà l'ID del progetto in cui verrà creato il cluster o l'ID di un altro progetto se stai creando un cluster con un account di servizio per 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 richiesta API clusters.create, imposta i seguenti campi:

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 "Abilita l'ambito cloud-platform per questo cluster" nella sezione Accesso al progetto del riquadro Gestione della sicurezza nella pagina Crea un cluster di Dataproc 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 personalizzato che il cluster utilizzerà per le operazioni del piano dati Dataproc anziché utilizzare l'account di servizio predefinito per le VM (non puoi specificare un account di servizio per VM personalizzate dopo la creazione del cluster). L'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

  1. Nel progetto dell'account di servizio (il progetto in cui si trova l'account di servizio della VM personalizzata):

    1. Abilita il collegamento degli account di servizio tra progetti.

    2. Attiva Dataproc API.

      Abilita l'API

  2. Concedi al tuo account email (l'utente che crea il cluster) il ruolo Utente account di servizio nel progetto dell'account di servizio o, per un controllo più granulare, sull'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 ruoli a livello di progetto e Gestire l'accesso agli account di servizio concedere ruoli a livello di account di servizio.

    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 dell'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 dell'account utente nel formato: user:user-name@example.com.

  3. Concedi all'account di servizio della VM personalizzata il ruolo 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"
     
  4. 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, all'account di servizio per 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: consulta Gestire l'accesso a progetti, cartelle e organizzazioni per concedere ruoli a livello di progetto e Gestire l'accesso agli account di servizio concedere 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 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 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 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"
    
  5. Concedi all'account di servizio dell'agente di servizio Compute Engine nel progetto cluster il ruolo Creatore token account di servizio nel progetto dell'account di servizio o, per un controllo più granulare, sull'account di servizio della VM personalizzata nel progetto dell'account di servizio. In questo modo, concedi all'account di servizio dell'agente di servizio dell'agente Compute nel progetto di 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 ruoli a livello di progetto e Gestire l'accesso agli account di servizio concedere ruoli a livello di account di servizio.

    Esempi dell'interfaccia a riga di comando gcloud:

    • Il comando di esempio seguente concede all'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 all'account di servizio dell'agente di servizio Compute Engine nel progetto 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