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.
Requisito de segurança a partir de 3 de agosto de 2020: os usuários do Dataproc precisam ter permissão ActAs da conta de serviço para implantar recursos do Dataproc, como criar clusters e enviar jobs. O papel
Usuário da conta de serviço contém essa permissão. Consulte Papéis para autenticação da conta de serviço
para informações sobre os papéis necessários do Dataproc.
Ativação dos usuários atuais do Dataproc: Os usuários atuais do Dataproc a partir de 3 de agosto de 2020 podem ativar esse requisito de segurança (consulte Como proteger o Dataproc, o Dataflow e o Cloud Data Fusion).
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 máquina virtual (VM) do Compute Engine para interagir com outras Google Cloud APIs. 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 cluster do Dataproc
As contas de serviço a seguir precisam ter 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 uma 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, a menos que você especifique uma
conta de serviço personalizada
ao criar um cluster. A conta de serviço da VM precisa ter o
papel de worker do Dataproc, que inclui as permissões necessárias para operações do plano de dados do Dataproc. Para mais informações, consulte
Papéis do Dataproc.
Ver papéis da conta de serviço da VM
Para ver os papéis concedidos à conta de serviço da VM do Dataproc, faça o seguinte:
No Google Cloud console, acesse a página IAM.
Clique em Incluir atribuições de papel fornecidas pelo Google.
Confira os papéis listados para a conta de serviço da VM. 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 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.
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, e concede à conta de serviço
o
papel Agente de serviço do Dataproc
em um Google Cloud projeto. Essa conta de serviço
realiza operações do plano de controle do Dataproc
, como a criação, atualização e exclusão de VMs do
cluster. Não é possível substituir essa conta de serviço por uma conta de serviço de VM personalizada ao criar um cluster.
Concessão de papel à conta de serviço do agente de serviço em uma rede VPC compartilhada
Se um cluster do Dataproc usar uma rede VPC compartilhada, um administrador de VPC compartilhada precisará atribuir à conta de serviço do agente de serviço do Dataproc o papel Usuário da rede do projeto host de VPC compartilhada. Para ver mais informações, consulte os seguintes tópicos:
- Como 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
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 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 da VM depois que o cluster é criado. O uso de uma conta de serviço de VM com papéis do IAM atribuídos permite que você forneça ao cluster acesso refinado aos recursos do projeto.
Etapas preliminares
Crie a conta de serviço de VM personalizada no projeto em que o cluster será criado.
Conceda à conta de serviço de VM personalizada o papel de worker do Dataproc no projeto e quaisquer outros papéis necessários para seus jobs, como os papéis de leitor e gravador do BigQuery (consulte Papéis do Dataproc).
Exemplo da CLI gcloud:
- O comando de exemplo a seguir concede à conta de serviço de 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 de worker do Dataproc (
roles/dataproc.worker), é possível conceder à conta de serviço um papel personalizado que contenha permissões de papel de worker, mas limite as permissõesstorage.objects.*.- O papel personalizado precisa conceder, no mínimo, as permissões 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.
storage.objects.createstorage.objects.getstorage.objects.update
- O papel personalizado precisa conceder, no mínimo, as permissões 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.
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 de VM personalizada.
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 hífen. O nome de um cluster excluído pode ser reutilizado.
- REGION: a região onde o cluster estará localizado.
- SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
- PROJECT_ID: o Google Cloud ID do projeto 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 projeto.
- SCOPE: Escopos de acesso para instâncias de VM do cluster (por exemplo,
https://www.googleapis.com/auth/cloud-platform).
API REST
Ao concluir o
GceClusterConfig
como parte da solicitação de API
clusters.create, defina os seguintes campos:
serviceAccount: a conta de serviço estará localizada no projeto em que o cluster será criado, a menos que você esteja usando uma conta de serviço de VM de um projeto diferente.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 Google Cloud console. É possível definir o cloud-platform
escopo de acesso nas VMs do 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 Google Cloud console.
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 usará para operações do plano de dados do Dataproc em vez de usar a 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. O uso de uma conta de serviço de VM personalizada com papéis do IAM atribuídos permite que você forneça ao cluster acesso refinado aos recursos do projeto.
Etapas preliminares
No projeto da conta de serviço (o projeto em que a conta de serviço de VM personalizada está localizada):
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
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, a conta de serviço de VM personalizada 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 da gcloud
- O comando de exemplo 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: forneça o endereço de e-mail da sua conta de usuário, no formato:user:user-name@example.com.- O comando de exemplo 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: forneça o endereço de e-mail da sua conta de usuário, no formato:user:user-name@example.com.Conceda à conta de serviço de VM personalizada 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 de usuário da conta de serviço e de criador do token da conta de serviço no projeto da conta de serviço ou, para um controle mais granular, a conta de serviço de VM personalizada 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 de VM personalizada 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 da gcloud
- Os comandos de exemplo a seguir concedem à conta de serviço do agente de serviço do Dataproc conta de serviço no projeto do cluster os papéis de usuário da conta de serviço e de criador do 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 de criador do 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 de criador do token da conta de serviço no projeto da conta de serviço ou, para um controle mais granular, a conta de serviço de 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 Engine no projeto do cluster a capacidade de criar tokens para a conta de serviço de VM personalizada 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 da 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 do 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 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 do 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