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 per eseguire il deployment delle risorse Managed Service for Apache Spark, ad esempio la creazione di cluster e l'invio di job. Il ruolo Utente service account contiene questa autorizzazione. Consulta Ruoli per account di servizio account per informazioni sui ruoli Managed Service for Apache Spark richiesti.

Attivazione per gli utenti Managed Service for Apache Spark esistenti: gli utenti Managed Service for Apache Spark esistenti 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 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 account di servizio.

Account di servizio 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 le operazioni del data plane di Managed Service for Apache Spark. Il service account predefinito di Compute Engine, project_number-compute@developer.gserviceaccount.com, viene utilizzato come account di servizio VM, a meno che tu non specifichi un service account personalizzato quando crei un cluster. Il account di servizio VM deve disporre del ruolo Managed Service for Apache Spark Worker, che include le autorizzazioni richieste per le operazioni del piano di dati di Managed Service for Apache Spark. Per saperne di più, consulta Ruoli di 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, svolgi le seguenti operazioni:

  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 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 dell'account di servizio per concedere o rimuovere i ruoli dell'account di servizio.

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

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

Concessione del ruolo 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 di Utente di 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 data plane 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 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 tuoi job, ad esempio i ruoli Lettore e Scrittore BigQuery (vedi Ruoli di Managed Service for Apache Spark).

    Esempio di gcloud CLI:

    • Il seguente comando di esempio concede al account di servizio VM personalizzato nel progetto 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:anziché concedere al service account il ruolo predefinito Dataproc Worker (roles/dataproc.worker), 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 Managed Service for Apache Spark e su tutti i bucket aggiuntivi necessari per i job che verranno eseguiti sul cluster.

Crea il cluster

  • Crea il cluster nel tuo progetto.

ConsoleGoogle Cloud

L'impostazione di un account di servizio VM Managed Service for Apache Spark nella console non è supportata. Per impostare l'ambito di accesso cloud-platform sulle VM del cluster quando crei il cluster:

  1. Apri la pagina Crea cluster.
  2. Fai clic su Configurazione aggiuntiva per espandere la sezione.
  3. Modifica Sicurezza.
  4. Nel riquadro che si apre, in Accesso al progetto, seleziona la casella di controllo Abilita l'ambito cloud-platform per questo cluster.

gcloud CLI

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 progetto.
  • SCOPE: ambito o 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:

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 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 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 in più progetti.

    2. Abilitare l'API Dataproc.

      Ruoli richiesti per abilitare le API

      Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

      Abilitare l'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 Worker Managed Service for Apache Spark nel progetto del 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 Managed Service per Apache Spark nel progetto cluster i ruoli Utente service account e Creatore token service account nel progetto account di servizio o, per un controllo più granulare, nel account di servizio VM personalizzato nel progetto account di servizio. In questo modo, consenti alaccount di serviziot dell'agente di servizio Dataproc nel progetto del cluster di creare token per iaccount di serviziont 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:

    • I seguenti comandi di esempio concedono al account di servizio Service Agent di Managed Service for Apache Spark nel progetto del cluster i ruoli Utente service account e Creatore 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 di Managed Service for Apache Spark nel progetto cluster i ruoli Utente service account e Creatore di token service 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"
    
  5. Concedi al service account dell'agente di servizio Compute Engine nel progetto cluster il ruolo Creatore token service account nel progetto account di servizio o, per un controllo più granulare, nel account di servizio VM personalizzato nel progetto account di servizio. 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 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'account di servizio service agent 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 al account di servizio Compute Engine Service Agent nel progetto cluster il ruolo Creatore token service 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@compute-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     

Crea il cluster

Passaggi successivi