Nesta página, descrevemos as contas de serviço e os escopos de acesso da VM, além de como eles são usados 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 executados em uma instância de máquina virtual (VM) do Compute Engine para interagir com outras APIs Google Cloud . Os aplicativos podem usar as credenciais de conta de serviço para se autorizar em um conjunto de APIs e realizar ações na VM dentro das permissões concedidas à conta de serviço.
Contas de serviço do Dataproc
As contas de serviço a seguir recebem as permissões necessárias para executar ações do Dataproc no projeto em que o cluster está localizado.
Conta de serviço da VM do Dataproc: as VMs em um cluster do Dataproc usam essa conta de serviço para operações do plano de dados do Dataproc. A conta de serviço padrão do Compute Engine,
project_number-compute@developer.gserviceaccount.com
, é usada como a conta de serviço da VM do Dataproc, a menos que você especifique uma conta de serviço da VM ao criar um cluster. Por padrão, a conta de serviço padrão do Compute Engine recebe o papel de worker do Dataproc, que inclui as permissões necessárias para operações do plano de dados do Dataproc.Contas de serviço personalizadas:se você especificar uma conta de serviço personalizada ao criar um cluster, conceda a ela as permissões necessárias para operações do plano de dados do Dataproc. Para isso, atribua o papel de worker do Dataproc à conta de serviço, já que ele inclui as permissões necessárias para operações do plano de dados do Dataproc. São necessários papéis extras para conceder permissões para outras operações, como leitura e gravação de dados no BigQuery. Consulte Ver e gerenciar papéis da conta de serviço do IAM para mais informações.
Conta de serviço do agente de serviço do Dataproc: o Dataproc cria a conta de serviço do agente de serviço,
service-project_number@dataproc-accounts.iam.gserviceaccount.com
, com o papel Agente de serviço do Dataproc em um projeto Google Cloud do usuário do Dataproc. Essa conta de serviço não pode ser substituída por uma conta de serviço de VM personalizada quando você cria um cluster. Essa conta de agente de serviço é usada para realizar operações do plano de controle do Dataproc, como a criação, atualização e exclusão de VMs do cluster.
Redes VPC compartilhada:se o cluster usar uma rede VPC compartilhada, um administrador de VPC compartilhada precisará conceder à conta de serviço do agente de serviço do Dataproc o papel de Usuário da rede para o projeto host da VPC compartilhada. Veja mais informações em:
- Criar um cluster que use uma rede VPC em outro projeto
- Documentação de VPC compartilhada: como configurar contas de serviço como administradores de projeto de serviço
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 VM do Dataproc, faça o seguinte:
No console Google Cloud , acesse a página IAM.
Clique em Incluir concessões de papel fornecidas pelo Google.
Confira os papéis listados para a conta de serviço da VM. A imagem a seguir mostra a função Trabalhador do Dataproc necessária listada para a conta de serviço padrão do Compute Engine (
project_number-compute@developer.gserviceaccount.com
) que o Dataproc usa por padrão como a conta de serviço da VM.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.
Escopos de acesso à VM do Dataproc
Os escopos de acesso à VM e os papéis do IAM trabalham juntos para limitar o acesso da VM às APIs Google Cloud. Por exemplo, se as VMs de cluster receberem apenas o escopo
https://www.googleapis.com/auth/storage-full
, os aplicativos em execução
nas VMs de cluster poderão chamar as APIs do Cloud Storage, mas não poderão
fazer solicitações ao BigQuery, mesmo se estiverem sendo executados como uma conta de serviço de VM
que recebeu uma função do BigQuery com permissões amplas.
Uma prática recomendada
é conceder o escopo amplo cloud-platform
(https://www.googleapis.com/auth/cloud-platform
)
às VMs e limitar o acesso delas concedendo papéis do IAM específicos à conta de serviço da VM.
Escopos da VM padrão do Dataproc. Se os escopos não forem especificados quando um cluster for criado (consulte gcloud dataproc cluster create --scopes), as VMs do Dataproc terão o seguinte conjunto padrão de escopos:
https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+
).
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 você especificar escopos ao criar um cluster, as VMs do cluster terão os escopos especificadose o seguinte conjunto mínimo de escopos obrigatórios (mesmo que você não os especifique):
https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+
).
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
Criar um cluster com uma conta de serviço de VM personalizada
Ao criar um cluster, é possível especificar uma conta de serviço de VM personalizada que o cluster vai usar para operações do plano de dados do Dataproc em vez da conta de serviço de VM padrão. Não é possível mudar a conta de serviço de VM depois que o cluster é criado. Usar uma conta de serviço de VM com papéis do IAM atribuídos permite fornecer ao cluster acesso detalhado aos recursos do projeto.
Etapas preliminares
Crie a conta de serviço personalizada da VM no projeto em que o cluster será criado.
Conceda à conta de serviço da VM personalizada o papel de worker do Dataproc no projeto e quaisquer outros papéis necessários para os jobs, como os papéis de leitor e gravador do BigQuery. Consulte Permissões do Dataproc e papéis do IAM.
Exemplo da CLI gcloud:
- O comando de exemplo a seguir concede à conta de serviço da VM personalizada no projeto do cluster o papel de worker do Dataproc no nível do projeto:
gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role="roles/dataproc.worker"
- Considere um papel personalizado:em vez de conceder à conta de serviço o papel predefinido
Worker
do Dataproc, é possível conceder a ela um papel personalizado que contenha permissões de worker, mas limite as permissõesstorage.objects.*
.- O papel personalizado precisa conceder, no mínimo, as permissões
storage.objects.create
,storage.objects.get
estorage.objects.update
da conta de serviço da VM nos objetos dos buckets temporários e de preparo do Dataproc e em qualquer bucket adicional necessário para jobs executados no cluster.
- O papel personalizado precisa conceder, no mínimo, as permissões
Crie o cluster
- Crie o cluster no projeto.
Comando gcloud
Use o comando gcloud dataproc clusters create para criar um cluster com a conta de serviço personalizada da VM.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --scopes=SCOPE
Substitua:
- CLUSTER_NAME: o nome do cluster, que precisa ser exclusivo em um projeto. O nome precisa começar com uma letra minúscula e pode conter até 51 letras minúsculas, números e hífens. Não pode terminar com um hífen. O nome de um cluster excluído pode ser reutilizado.
- REGION: a região em que o cluster vai estar localizado.
- SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
- PROJECT_ID: o ID do projeto Google Cloud que contém a conta de serviço da VM. Esse será o ID do projeto em que o cluster será criado ou o ID de outro projeto se você estiver criando um cluster com uma conta de serviço de VM personalizada em outro cluster.
- SCOPE: escopos de acesso para instâncias de VM do cluster (por exemplo,
https://www.googleapis.com/auth/cloud-platform
).
API REST
Ao preencher o
GceClusterConfig
como parte da solicitação da API
clusters.create
, defina os seguintes campos:
serviceAccount
: a conta de serviço vai estar localizada no projeto em que o cluster será criado, a menos que você esteja usando uma conta de serviço de VM de outro projeto.serviceAccountScopes
: especifique os escopos de acesso para instâncias de VM do cluster (por exemplo,https://www.googleapis.com/auth/cloud-platform
).
Console
Não é possível definir uma conta de serviço da VM do Dataproc no console Google Cloud . É possível definir o cloud-platform
escopo de acesso em VMs
de cluster ao criar o cluster clicando em
"Ativa o escopo cloud-platform para este cluster"
na seção Acesso ao projeto do painel Gerenciar segurança
na página Criar um cluster
do Dataproc no console Google Cloud .

Criar um cluster com uma conta de serviço de VM personalizada de outro projeto
Ao criar um cluster, é possível especificar uma conta de serviço de VM personalizada que o cluster vai usar para operações do plano de dados do Dataproc em vez da conta de serviço de VM padrão. Não é possível especificar uma conta de serviço de VM personalizada depois que o cluster é criado. Usar uma conta de serviço de VM personalizada com papéis do IAM atribuídos permite fornecer ao cluster acesso refinado aos recursos do projeto.
Etapas preliminares
No projeto da conta de serviço (onde a conta de serviço personalizada da VM está localizada):
Enable the Dataproc API.
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 personalizada da VM 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 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
.Conceda à conta de serviço personalizada da VM o papel de worker do Dataproc no projeto do cluster.
Exemplo da CLI 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"
Conceda à conta de serviço do agente de serviço do Dataproc no projeto do cluster os papéis 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 personalizada da VM 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 do cluster crie tokens para a conta de serviço personalizada da VM do Dataproc 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 de exemplo a seguir concedem à conta de serviço do agente de serviço do Dataproc no projeto do cluster 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-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"
- Os comandos de exemplo a seguir concedem à conta de serviço do agente de serviço do Dataproc no projeto do cluster 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 da 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"
Conceda à conta de serviço do agente de serviço do Compute Engine no projeto do cluster o papel Criador de token da conta de serviço no projeto da conta de serviço ou, para um controle mais granular, a conta de serviço da VM personalizada 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 do cluster a capacidade de criar tokens para a conta de serviço personalizada da VM do Dataproc 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 comando de exemplo 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 do projeto:
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"
- 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 da 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"
Crie o cluster
A seguir
- Contas de serviço
- Permissões do Dataproc e papéis do IAM
- Papéis e funções do Dataproc
- Multilocação segura com base na conta de serviço do Dataproc
- Autenticação de cluster pessoal do Dataproc
- IAM granular do Dataproc