Service account Dataproc

Questa pagina descrive i service account e gli ambiti di accesso alle VM e come vengono utilizzati con Dataproc.

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 API Google Cloud . Le applicazioni possono utilizzare le credenziali del account di servizio per autorizzarsi a un insieme di API ed eseguire azioni sulla VM all'interno delle autorizzazioni concesse al service account.

Service account Dataproc

Ai seguenti service account vengono concesse le autorizzazioni necessarie per eseguire azioni Dataproc nel progetto in cui si trova il cluster.

  • Service account VM Dataproc: le VM in un cluster Dataproc utilizzano questo account di servizio per le operazioni del data plane di Dataproc. L'account di servizio predefinito di Compute Engine, project_number-compute@developer.gserviceaccount.com, viene utilizzato come service account VM Dataproc, a meno che tu non specifichi un service account VM quando crei un cluster. Per impostazione predefinita, al account di servizio Compute Engine viene concesso il ruolo Dataproc Worker, che include le autorizzazioni necessarie per le operazioni del piano di dati di Dataproc.

    Service account personalizzati:se specifichi un service account personalizzato quando crei un cluster, devi concedere al account di servizio personalizzato le autorizzazioni necessarie per le operazioni del data plane Dataproc. Puoi farlo assegnando il ruolo Dataproc Worker al account di servizio perché questo ruolo include le autorizzazioni necessarie per le operazioni del piano dati di Dataproc.

    Altri ruoli: puoi concedere al account di servizio della VM ruoli predefiniti o personalizzati aggiuntivi che contengono le autorizzazioni necessarie per altre operazioni, come la lettura e la scrittura di dati da e verso Cloud Storage, BigQuery, Cloud Logging e altre risorse Google Cloud (per saperne di più, consulta Visualizzare e gestire i ruoli del account di servizio IAM).

  • Service account agente di servizio Dataproc: Dataproc crea il account di servizio agente di servizio, service-project_number@dataproc-accounts.iam.gserviceaccount.com, con il ruolo Agente di servizio Dataproc nel progetto Google Cloud di un utente Dataproc. Questo service account 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 cluster.

Reti VPC condiviso:se il cluster utilizza una rete VPC condiviso, 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:

Visualizzare e gestire i ruoli degli account di servizio IAM

Per visualizzare e gestire i ruoli concessi al service account VM Dataproc, procedi nel seguente modo:

  1. Nella console Google Cloud , vai alla pagina IAM.

    Vai a IAM

  2. Fai clic su Includi concessioni di ruoli fornite da Google.

  3. Visualizza i ruoli elencati per il account di servizio VM. L'immagine seguente mostra il ruolo Dataproc Worker richiesto elencato per il account di servizio Compute Engine predefinito (project_number-compute@developer.gserviceaccount.com) che Dataproc utilizza per impostazione predefinita come account di servizio VM.

  4. 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 VM e i ruoli IAM funzionano insieme per limitare l'accesso VM alle API. Google CloudAd 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 effettuare 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 cloud-platform ampio (https://www.googleapis.com/auth/cloud-platform) alle VM, quindi limitare l'accesso alle VM concedendo ruoli IAM specifici al service account VM.

Ambiti VM Dataproc predefiniti. Se gli ambiti non vengono specificati durante la creazione di 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 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

Crea un cluster con un account di servizio VM personalizzato

Quando crei un cluster, puoi specificare un service account VM personalizzato che il cluster utilizzerà per le operazioni del data plane Dataproc anziché il service account VM predefinito (non puoi modificare il 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 del progetto.

Passaggi preliminari

  1. Crea il service account VM personalizzato nel progetto in cui verrà creato il cluster.

  2. Concedi al account di servizio VM personalizzato il ruolo Worker Dataproc nel progetto e tutti i ruoli aggiuntivi necessari per i tuoi job, ad esempio i ruoli Lettore e Writer BigQuery (consulta Autorizzazioni Dataproc e ruoli IAM).

    Esempio di gcloud CLI:

    • 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:invece di concedere al service account il ruolo predefinito Worker di Dataproc, puoi concedere al account di servizio un ruolo personalizzato che contenga le autorizzazioni del ruolo Worker, ma che limiti le autorizzazioni storage.objects.*.
      • Il ruolo personalizzato deve concedere almeno le autorizzazioni storage.objects.create, storage.objects.get e storage.objects.update al account di servizio VM sugli oggetti nei bucket temporanei e di staging di Dataproc e su tutti i bucket aggiuntivi necessari per i job che verranno eseguiti sul cluster.

Crea il cluster

  • Crea il cluster nel tuo progetto.

Comando gcloud

Utilizza il comando gcloud dataproc clusters create per creare un cluster con il 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 del account di servizio.
  • PROJECT_ID: l' Google Cloud ID progetto del progetto contenente il tuo service account VM. Questo sarà l'ID del progetto in cui verrà creato il cluster o l'ID di un altro progetto se crei un cluster con un account di servizio VM personalizzato 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 compili il 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 pannello Gestisci 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 service account VM personalizzato che il cluster utilizzerà per le operazioni del data plane Dataproc anziché utilizzare il service account 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 un accesso granulare alle risorse del progetto.

Passaggi preliminari

  1. Nel progetto del account di servizio (il progetto in cui si trova il account di servizio VM personalizzato):

    1. Consenti l'allegato di service account tra progetti.

    2. Enable the Dataproc API.

      Enable the API

  2. Concedi al tuo account email (l'utente che sta creando il cluster) il ruolo Utente service account nel progetto del account di servizio o, per un controllo più granulare, nel account di servizio VM personalizzato nel progetto del account di servizio.

    Per saperne di più, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni per concedere i ruoli a livello di progetto e Gestisci l'accesso ai service account 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 service account 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 service account a livello diaccount di serviziot:
    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.

  3. Concedi al account di servizio VM personalizzato il ruolo Dataproc Worker nel progetto cluster.

    Esempio di gcloud CLI:

    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 al service account dell'agente di servizio Dataproc nel progetto del cluster i ruoli Utente service account e Creatore token service account nel progetto del account di servizio o, per un controllo più granulare, nel account di servizio VM personalizzato nel progetto del account di servizio. In questo modo, consenti all'account di servizio dell'agente di servizio Dataproc nel progetto cluster di creare token per l'account di servizio VM Dataproc personalizzato nel progetto service account.

    Per saperne di più, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni per concedere i ruoli a livello di progetto e Gestisci l'accesso ai service account per concedere i ruoli a livello di account di servizio.

    Esempi di gcloud CLI:

    • I seguenti comandi di esempio concedono al service account dell'agente di servizio Dataproc nel progetto cluster i ruoli Utente service account e Creatore di token 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 al account di servizio Service Agent Dataproc nel progetto cluster i ruoli Utente service account e Creatore token service account a livello daccount di serviziont 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 agente di servizio Compute Engine nel progetto cluster il ruolo Creatore token service account nel progetto service account o, per un controllo più granulare, al service account VM personalizzato nel progetto service account. In questo modo, concedi al account di servizio dell'agente di servizio Compute nel progetto del cluster la possibilità di creare token per il service account VM Dataproc personalizzato nel progetto deaccount di serviziont.

    Per saperne di più, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni per concedere i ruoli a livello di progetto e Gestisci l'accesso ai service account per concedere i ruoli a livello di account di servizio.

    Esempi di gcloud CLI:

    • Il seguente comando di esempio concede all'account di servizio Service Agent di Compute Engine nel progetto cluster il ruolo Creatore token service account 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 all'account di servizio Agente di servizio Compute Engine nel progetto cluster il ruolo Creatore token service account 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