Conta de serviço do Serverless para Apache Spark

O

Neste documento, descrevemos como visualizar e gerenciar papéis da conta de serviço do Identity and Access Management. Uma carga de trabalho em lote ou uma sessão interativa do Serverless para Apache Spark é executada como a conta de serviço padrão do Compute Engine, a menos que você especifique uma conta de serviço personalizada ao enviar uma carga de trabalho em lote, criar uma sessão ou criar um modelo de ambiente de execução de sessão.

Papel de worker do Dataproc obrigatório

A conta de serviço da carga de trabalho do Serverless para Apache Spark precisa ter o papel do Identity and Access Management Worker do Dataproc. A conta de serviço padrão do Compute Engine (project_number-compute@developer.gserviceaccount.com) usada pelo Serverless para Apache Spark tem essa função por padrão. Se você especificar sua própria conta de serviço para sua carga de trabalho em lote, sessão ou modelo de sessão, conceda o papel de worker do Dataproc à sua conta de serviço. Outros papéis podem ser necessários para outras operações, como leitura e gravação de dados no BigQuery.

Ver e gerenciar papéis da conta de serviço do IAM

Para conferir e gerenciar os papéis concedidos à conta de serviço da carga de trabalho do Serverless para Apache Spark, faça o seguinte:

  1. No console Google Cloud , acesse a página IAM.

    Acessar IAM

  2. Clique em Incluir concessões de papel fornecidas pelo Google.

  3. Confira os papéis listados para a conta de serviço da carga de trabalho. A imagem a seguir mostra o papel Worker do Dataproc necessário listado para a conta de serviço padrão do Compute Engine (project_number-compute@developer.gserviceaccount.com) que o Serverless para Apache Spark usa por padrão como a conta de serviço de carga de trabalho.

  4. Clique no ícone de lápis exibido na linha da conta de serviço para conceder ou remover papéis da conta de serviço.

Conta de serviço entre projetos

É possível enviar uma carga de trabalho em lote do Serverless para Apache Spark que usa uma conta de serviço de um projeto diferente daquele da carga de trabalho em lote (o projeto em que o lote é enviado). Nesta seção, o projeto em que a conta de serviço está localizada é chamado de service account project, e o projeto em que o lote é enviado é chamado de batch project.

Por que usar uma conta de serviço entre projetos para executar uma carga de trabalho em lote? Um motivo possível é se a conta de serviço no outro projeto tiver recebido papéis do IAM que fornecem acesso refinado aos recursos desse projeto.

Etapas da configuração

  1. No projeto da conta de serviço:

    1. Ativar contas de serviço para serem anexadas a projetos.

    2. Enable the Dataproc API.

      Enable the API

    3. Conceda à sua conta de e-mail (o usuário que está criando o cluster) o papel de Usuário da conta de serviço no projeto da conta de serviço ou, para um controle mais granular, na conta de serviço do projeto da conta de serviço.

      Para mais informações, consulte Gerenciar o acesso a projetos, pastas e organizações para conceder papéis no nível do projeto e Gerenciar o acesso a contas de serviço para conceder papéis no nível da conta de serviço.

      Exemplos da CLI gcloud:

      O exemplo de comando a seguir concede ao usuário o papel de Usuário da conta de serviço no nível do projeto:

      gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
          --member=USER_EMAIL \
          --role="roles/iam.serviceAccountUser"
      

      Observações:

      • USER_EMAIL: informe o endereço de e-mail da sua conta de usuário no formato user:user-name@example.com.

      O exemplo de comando a seguir concede ao usuário o papel de usuário da conta de serviço no nível da conta de serviço:

      gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
          --member=USER_EMAIL \
          --role="roles/iam.serviceAccountUser"
      

      Observações:

      • USER_EMAIL: informe o endereço de e-mail da sua conta de usuário no formato: user:user-name@example.com.
    4. Conceda à conta de serviço o papel Worker do Dataproc no projeto em lote.

      Exemplo da CLI gcloud:

      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. No projeto em lote:

    1. Conceda à conta de serviço do agente de serviço do Dataproc os papéis de Usuário da conta de serviço e Criador de token da conta de serviço no projeto da conta de serviço ou, para um controle mais granular, na conta de serviço no projeto da conta de serviço. Ao fazer isso, você permite que a conta de serviço do agente de serviço do Dataproc no projeto em lote crie tokens para a conta de serviço no projeto da conta de serviço.

      Para mais informações, consulte Gerenciar o acesso a projetos, pastas e organizações para conceder papéis no nível do projeto e Gerenciar o acesso a contas de serviço para conceder papéis no nível da conta de serviço.

      Exemplos da CLI gcloud:

      Os comandos a seguir concedem à conta de serviço do agente de serviço do Dataproc no projeto em lote os papéis de usuário da conta de serviço e criador de token da conta de serviço no nível do projeto:

      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"
      

      Os comandos de exemplo a seguir concedem à conta de serviço do agente de serviço do Dataproc no projeto em lote os papéis de usuário da conta de serviço e criador de token da conta de serviço no nível da conta de serviço:

      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. Conceda à conta de serviço do agente de serviço do Compute Engine no projeto em lote o papel Criador de token da conta de serviço no projeto da conta de serviço ou, para um controle mais granular, na conta de serviço no projeto da conta de serviço. Ao fazer isso, você concede à conta de serviço do agente de serviço do Compute no projeto em lote a capacidade de criar tokens para a conta de serviço no projeto da conta de serviço.

      Para mais informações, consulte Gerenciar o acesso a projetos, pastas e organizações para conceder papéis no nível do projeto e Gerenciar o acesso a contas de serviço para conceder papéis no nível da conta de serviço.

      Exemplos da CLI gcloud:

      O exemplo de comando a seguir concede à conta de serviço do agente de serviço do Compute Engine no projeto em lote o papel de criador de token da conta de serviço no nível do projeto:

      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"
      

      O exemplo de comando a seguir concede à conta de serviço do agente de serviço do Compute Engine no projeto do cluster o papel de criador de token da conta de serviço no nível da conta de serviço:

      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"
      

Enviar a carga de trabalho em lote

Depois de concluir as etapas de configuração, você poderá enviar uma carga de trabalho em lote. Especifique a conta de serviço no projeto de conta de serviço como a conta de serviço a ser usada para a carga de trabalho em lote.