Account di servizio Serverless per Apache Spark

Questo documento descrive come visualizzare e gestire i ruoli degli account di servizio Identity and Access Management. Un workload batch o una sessione interattiva di Serverless per Apache Spark viene eseguito come account di servizio predefinito di Compute Engine, a meno che tu non specifichi un service account personalizzato quando invii un workload batch, crei una sessione o crei un modello di runtime della sessione.

Ruolo Dataproc Worker richiesto

Il service account di servizio di workload Serverless for Apache Spark deve avere il ruolo Identity and Access Management Dataproc Worker. Il account di servizio Compute Engine predefinito (project_number-compute@developer.gserviceaccount.com) utilizzato da Serverless per Apache Spark dispone di questo ruolo per impostazione predefinita. Se specifichi il tuo account di serviziot per il batch, la sessione o il modello di sessione, devi concedere il ruolo Worker Dataproc al tuaccount di serviziont. Potrebbero essere necessari ruoli aggiuntivi per altre operazioni, come la lettura e la scrittura di dati in BigQuery.

Visualizzare e gestire i ruoli degli account di servizio IAM

Per visualizzare e gestire i ruoli concessi al account di servizio del workload Serverless per Apache Spark, 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 del workload. 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 Serverless for Apache Spark utilizza per impostazione predefinita come account di servizio del workload.

  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.

Account di servizio tra progetti

Puoi inviare un workload batch Serverless for Apache Spark che utilizza un account di servizio di un progetto diverso da quello del workload batch (il progetto in cui viene inviato il batch). In questa sezione, il progetto in cui si trova il account di servizio è chiamato service account project, mentre il progetto in cui viene inviato il batch è chiamato batch project.

Perché utilizzare un account di servizio tra progetti per eseguire un carico di lavoro batch? Un possibile motivo è se al account di servizio nell'altro progetto sono stati assegnati ruoli IAM che forniscono un accesso granulare alle risorse in quel progetto.

Procedura di configurazione

  1. Nel progetto del account di servizio:

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

    2. Enable the Dataproc API.

      Enable the API

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

      Per saperne di più, vedi Gestire l'accesso a progetti, cartelle e organizzazioni per concedere i ruoli a livello di progetto e Gestire 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.
    4. Concedi al account di servizio il ruolo Dataproc Worker nel progetto batch.

      Esempio di gcloud CLI:

      gcloud projects add-iam-policy-binding BATCH_PROJECT_ID \
          --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
          --role="roles/dataproc.worker"
      
  2. Nel progetto batch:

    1. Concedi all'account di servizio dell'agente di servizio Dataproc i ruoli Utente account di servizio e Creatore token account di servizio nel progetto dell'account di servizio o, per un controllo più granulare, nell'account di servizio nel progetto dell'account di servizio. In questo modo, consenti alaccount di serviziot dell'agente di servizio Dataproc nel progetto batch di creare token per iaccount di serviziont nel progetaccount di serviziount.

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

      Esempi di gcloud CLI:

      I seguenti comandi concedono all'account di servizio service agent Dataproc nel progetto batch 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-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountUser"
      
      gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
          --member=serviceAccount:service-BATCH_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 batch i ruoli Utente service account e Creatore token service account a livello di service account:

      gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
          --member=serviceAccount:service-BATCH_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-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountTokenCreator"
      
    2. Concedi all'account di servizio agente di servizio Compute Engine nel progetto batch il ruolo Creatore token service account nel progetto service account o, per un controllo più granulare, nel service account nel progetto service account. In questo modo, concedi al account di servizio dell'agente di servizio Compute nel progetto batch la possibilità di creare token per il account di servizio nel progetto service account.

      Per saperne di più, vedi Gestire l'accesso a progetti, cartelle e organizzazioni per concedere i ruoli a livello di progetto e Gestire 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 dell'agente di servizio Compute Engine nel progetto batch il ruolo Creatore token service account a livello di progetto:

      gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
          --member=serviceAccount:service-BATCH_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountTokenCreator"
      

      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 service account:

      gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
          --member=serviceAccount:service-BATCH_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountTokenCreator"
      

Invia il carico di lavoro batch

Dopo aver completato i passaggi di configurazione, puoi inviare un carico di lavoro batch. Assicurati di specificare il account di servizio nel progetto del account di servizio come account di serviziot da utilizzare per il batch.