Account di servizio Managed Service per Apache Spark

Questa pagina descrive i service account e gli ambiti di accesso alle VM e come vengono utilizzati con Managed Service for Apache Spark.

Requisito di sicurezza a partire dal 3 agosto 2020: gli utenti di Managed Service for Apache Spark devono disporre dell'autorizzazione service account ActAs permission per eseguire il deployment delle risorse di Managed Service for Apache Spark, ad esempio la creazione di cluster e l'invio di job. Il ruolo Utente account di servizio contiene questa autorizzazione. Per informazioni sui ruoli Managed Service for Apache Spark richiesti, consulta Ruoli per l'account di servizio account.

Opt-in per gli utenti esistenti di Managed Service for Apache Spark: gli utenti esistenti di Managed Service for Apache Spark al 3 agosto 2020 possono attivare questo requisito di sicurezza (vedi Protezione di Managed Service for Apache Spark, 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 account di servizio per autorizzarsi a un insieme di API ed eseguire azioni sulla VM con le autorizzazioni concesse al account di servizio.

Service account del cluster Managed Service for Apache Spark

I seguenti service account devono disporre delle autorizzazioni necessarie per eseguire le azioni di Managed Service for Apache Spark nel progetto in cui si trova il cluster.

Account di servizio VM Managed Service for Apache Spark

Le VM in un cluster Managed Service for Apache Spark utilizzano un account di servizio per Managed Service for Apache Spark operazioni del piano dati. Il service account predefinito di Compute Engine, project_number-compute@developer.gserviceaccount.com, viene utilizzato come account di servizio VM, a meno che non ne specifichi uno personalizzato quando crei un cluster. Il account di servizio VM deve avere il ruolo Worker Managed Service for Apache Spark, che include le autorizzazioni richieste per le operazioni del piano dati di Managed Service for Apache Spark. Per ulteriori informazioni, consulta Ruoli Managed Service for Apache Spark.

Visualizza i ruoli del account di servizio VM

Per visualizzare i ruoli concessi al service account VM Managed Service for Apache Spark:

  1. Nella Google Cloud console 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 Worker Dataproc richiesto elencato per il account di servizio predefinito di Compute Engine (project_number-compute@developer.gserviceaccount.com) che Managed Service for Apache Spark utilizza per impostazione predefinita come account di servizio VM.

  4. Puoi fare clic sull'icona a forma di matita visualizzata nella riga del account di servizio per concedere o rimuovere account di servizio account.

Service account dell'agente di servizio Managed Service for Apache Spark

Managed Service for Apache Spark crea il service account dell'agente di servizio, service-project_number@dataproc-accounts.iam.gserviceaccount.com, e concede al account di servizio il ruolo Agente di servizio Managed Service for Apache Spark in un Google Cloud progetto. Questo service account esegue le operazioni del piano di controllo di Managed Service for Apache Spark , come la creazione, l'aggiornamento e l'eliminazione delle VM del cluster. Non puoi sostituire questo account di servizio con un service account VM personalizzato quando crei un cluster.

Concessione di ruoli al account di servizio dell'agente di servizio in una rete VPC condiviso

Se un cluster Managed Service for Apache Spark utilizza una rete VPC condiviso, un amministratore VPC condiviso deve concedere al service account dell'agente di servizio Managed Service for Apache Spark il ruolo Utente rete per il progetto host VPC condiviso. Per ulteriori informazioni, consulta le seguenti risorse:

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 piano dati di Managed Service for Apache Spark 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 ti 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 Managed Service for Apache Spark nel progetto e tutti i ruoli aggiuntivi necessari per i job, come i ruoli Lettore e Writer BigQuery (vedi Ruoli Managed Service for Apache Spark).

    Esempio dell'interfaccia a riga di comando gcloud:

    • Il seguente comando di esempio concede al account di servizio 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 le storage.objects.* autorizzazioni.

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'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 account di servizio 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:

Console

L'impostazione di un account di servizio VM Managed Service for Apache Spark nella Google Cloud console 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 Managed Service for Apache Spark nella Google Cloud console.

Crea un cluster con un account di servizio 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 di Managed Service for Apache Spark 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 ti 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'associazione dei service account tra i progetti.

    2. Abilita l'API Dataproc.

      Ruoli richiesti per abilitare le API

      Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin), che contiene l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

      Abilitare l'API

  2. 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 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 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.

  3. Concedi al account di servizio VM personalizzato il ruolo Worker Managed Service for Apache Spark 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"
     
  4. Concedi al service account dell'agente di servizio Managed Service for Apache Spark 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 account di servizio dell'agente di servizio Dataproc nel progetto del cluster di creare token per il account di servizio VM Dataproc personalizzato nel progetto del account di servizio.

    Per ulteriori informazioni: 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 dell'interfaccia a riga di comando gcloud:

    • I seguenti comandi di esempio concedono al service account dell'agente di servizio Managed Service for Apache Spark 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 Managed Service for Apache Spark 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"
    
  5. 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 account di servizio 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 account di servizio.

    Per ulteriori informazioni: 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 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