Contas de serviço

Esta página descreve as contas de serviço e como elas podem ser usadas com o Dataproc.

O que são contas de serviço?

Uma conta de serviço é uma conta especial que pode ser usada por serviços e aplicativos em execução na instância do Compute Engine para interagir com outras APIs do Google Cloud. Os aplicativos podem usar as credenciais de conta de serviço para autorizarem a si mesmos a um conjunto de APIs, assim como para realizarem ações de acordo com as permissões concedidas à conta de serviço e à instância de máquina virtual.

Ao serem criadas, as máquinas virtuais do Compute Engine podem ser configuradas para usar uma conta de serviço específica. Se não for especificada, será usada uma conta de serviço padrão. Para mais informações, leia a documentação de conta de serviço do Compute Engine.

Contas de serviço no Dataproc

Os clusters do Dataproc são criados com base nas máquinas virtuais do Compute Engine. Ao criar um cluster do Dataproc, especifique uma conta de serviço gerenciada pelo usuário para usá-la em máquinas virtuais do Dataproc nesse cluster. Se não for especificada, as máquinas virtuais do Dataproc usarão a conta de serviço padrão do Compute Engine gerenciada pelo Google: [project-number]-compute@developer.gserviceaccount.com.

Por que especificar uma conta de serviço?

As contas de serviço recebem papéis do IAM. Quando criar um cluster do Dataproc, especifique uma conta de serviço gerenciada pelo usuário para poder criar e utilizar clusters com acesso e controle minuciosos dos recursos do Cloud. O uso de várias contas de serviço gerenciadas pelo usuário com diferentes clusters do Dataproc permite clusters com acessos diferentes nos recursos do Cloud.

Requisitos e limitações da conta de serviço

  • As contas de serviço só podem ser definidas quando um cluster é criado.
  • É preciso criar uma conta de serviço antes de criar o cluster do Dataproc que será associado a ela.
  • Uma vez definida, a conta de serviço usada para um cluster não pode ser alterada.
  • Verifique se as contas de serviço têm papéis apropriados do IAM para suas necessidades.
  • As contas de serviço usadas com o Dataproc precisam ter o papel Dataproc/Worker do Dataproc ou ter todas as permissões concedidas pelo papel "Worker do Dataproc".
  • As contas de serviço precisam estar ligadas ao projeto em que o cluster será criado.
  • As máquinas virtuais do Compute Engine nos clusters do Dataproc ainda precisam de escopos de acesso específicos. Os escopos de acesso também estão limitados ao serviço a que se aplicam. Por exemplo, se um cluster do Dataproc tiver recebido apenas o escopo https://www.googleapis.com/auth/storage-full do Cloud Storage, ele não poderá usar o mesmo escopo para fazer solicitações ao BigQuery.

Escopos padrão e mínimos

Se os escopos da conta de serviço não forem especificados, o Dataproc usará o seguinte conjunto padrão de escopos:

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 os escopos personalizados forem especificados, o Dataproc usará a combinação dos escopos especificados pelo usuário e o seguinte conjunto mínimo de escopos exigidos pelo Dataproc:
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

Como usar contas de serviço

É possível especificar uma conta de serviço gerenciada pelo usuário ao criar um novo cluster do Dataproc na solicitação clusters.create da API Dataproc ou usar a ferramenta de linha de comando gcloud do SDK do Cloud.

Comando gcloud

Use o comando gcloud clusters create para criar um novo cluster com uma conta de serviço especificada pelo usuário e escopos de acesso.
gcloud dataproc clusters create cluster-name \
    --region=region \
    --service-account=service-account-name@project-id.iam.gserviceaccount.com \
    --scopes=scope[, ...]

API REST

Você pode definir serviceAccount e serviceAccountScopes no objeto GceClusterConfig como parte da solicitação de API clusters.create.

Console

O suporte do Dataproc para definir contas de serviço gerenciadas pelo usuário no Console do Cloud será adicionado em uma versão futura.

A seguir