Esta página descreve as contas de serviço e os âmbitos de acesso da VM, bem como a forma como são usados com o Dataproc.
Requisito de segurança a partir de 3 de agosto de 2020: os utilizadores do Dataproc têm de ter a autorização da ActAsconta de serviço para implementar recursos do Dataproc, como criar clusters e enviar tarefas. A função de
utilizador da conta de serviço contém esta autorização. Consulte o artigo Funções para autenticação de contas de serviço
para obter informações sobre as funções do Dataproc necessárias.
Ativar para utilizadores existentes do Dataproc: os utilizadores existentes do Dataproc a partir de 3 de agosto de 2020 podem ativar este requisito de segurança (consulte o artigo 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 aplicações em execução numa instância de máquina virtual (VM) do Compute Engine para interagir com outras Google Cloud APIs. As aplicações podem usar credenciais de contas de serviço para se autorizarem a um conjunto de APIs e realizar ações na VM dentro das autorizações concedidas à conta de serviço.
Contas de serviço do cluster do Dataproc
As seguintes contas de serviço têm de ter as autorizações necessárias para realizar ações do Dataproc no projeto onde o cluster está localizado.
Conta de serviço da VM do Dataproc
As VMs num cluster do Dataproc usam uma conta de serviço para as operações do plano de dados do Dataproc.
A conta de serviço predefinida do Compute Engine,
project_number-compute@developer.gserviceaccount.com, é usada como a conta de serviço da VM, a menos que especifique uma
conta de serviço personalizada
quando cria um cluster. A conta de serviço da VM tem de ter a função
Dataproc Worker, que inclui as autorizações necessárias para as operações do plano de
dados do Dataproc. Para mais informações, consulte o artigo
Funções do Dataproc.
Veja as funções da conta de serviço da VM
Para ver as funções concedidas à conta de serviço da VM do Dataproc, faça o seguinte:
Na Google Cloud consola, aceda à página IAM.
Clique em Incluir concessões de funções fornecidas pela Google.
Veja as funções listadas para a conta de serviço da VM. A imagem seguinte mostra a função Dataproc Worker necessária listada para a conta de serviço predefinida do Compute Engine (
project_number-compute@developer.gserviceaccount.com) que o Dataproc usa por predefinição como a conta de serviço da VM.
Pode clicar no ícone de lápis apresentado na linha da conta de serviço para conceder ou remover funções 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 a função de agente de serviço do Dataproc num Google Cloud projeto. Esta conta de serviço executa operações do plano de controlo do Dataproc, como a criação, a atualização e a eliminação de VMs de cluster. Não pode substituir esta conta de serviço por uma conta de serviço de VM personalizada quando cria um cluster.
Concessão de funções à conta de serviço do agente de serviço numa rede de VPC partilhada
Se um cluster do Dataproc usar uma rede de VPC partilhada, um administrador da VPC partilhada tem de conceder à conta de serviço do agente de serviço do Dataproc a função de Utilizador da rede para o projeto anfitrião da VPC partilhada. Para mais informações, consulte o seguinte:
- Crie um cluster que use uma rede VPC noutro projeto
- Documentação da VPC partilhada: configurar contas de serviço como administradores do projeto de serviço
Crie um cluster com uma conta de serviço de VM personalizada
Quando cria um cluster, pode 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 predefinida (não pode alterar a conta de serviço de VM depois de o cluster ser criado). A utilização de uma conta de serviço de VM com funções de IAM atribuídas permite-lhe conceder ao cluster acesso detalhado aos recursos do projeto.
Passos preliminares
Crie a conta de serviço da VM personalizada no projeto onde o cluster vai ser criado.
Conceda à conta de serviço da VM personalizada a função de trabalhador do Dataproc no projeto e quaisquer funções adicionais necessárias para as suas tarefas, como as funções de leitor e escritor do BigQuery (consulte as funções do Dataproc).
Exemplo da CLI gcloud:
- O comando de exemplo seguinte concede à conta de serviço da VM personalizada a função de trabalhador do Dataproc ao 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 uma função personalizada: em vez de conceder à conta de serviço a função de trabalhador do Dataproc predefinida (
roles/dataproc.worker), pode conceder à conta de serviço uma função personalizada que contenha autorizações da função de trabalhador, mas que limite as autorizações destorage.objects.*.- A função personalizada tem de conceder, pelo menos, as autorizações
storage.objects.create,storage.objects.getestorage.objects.updateà conta de serviço da VM nos objetos nos buckets de preparação e temporários do Dataproc e em quaisquer buckets adicionais necessários para as tarefas que vão ser executadas no cluster.
- A função personalizada tem de conceder, pelo menos, as autorizações
Crie o cluster
- Crie o cluster no seu projeto.
Comando gcloud
Use o comando gcloud dataproc clusters create para criar um cluster com a conta de serviço da VM personalizada.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --scopes=SCOPE
Substitua o seguinte:
- CLUSTER_NAME: o nome do cluster, que tem de ser exclusivo num projeto. O nome tem de começar com uma letra minúscula e pode conter até 51 letras minúsculas, números e hífenes. Não pode terminar com um hífen. O nome de um cluster eliminado pode ser reutilizado.
- REGION: a região onde o cluster vai estar localizado.
- SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
- PROJECT_ID: O Google Cloud ID do projeto que contém a sua conta de serviço da VM. Este será o ID do projeto onde o cluster vai ser criado ou o ID de outro projeto se estiver a criar um cluster com uma conta de serviço de VM personalizada noutro projeto.
- SCOPE: Âmbito(s) de acesso para instâncias de VM de cluster (por exemplo,
https://www.googleapis.com/auth/cloud-platform).
API REST
Quando preencher o elemento
GceClusterConfig
como parte do pedido da API
clusters.create, defina os seguintes campos:
serviceAccount: a conta de serviço vai estar localizada no projeto onde o cluster vai ser criado, a menos que esteja a usar uma conta de serviço de VM de um projeto diferente.serviceAccountScopes: especifique os âmbitos de acesso para instâncias de VM do cluster (por exemplo,https://www.googleapis.com/auth/cloud-platform).
Consola
A definição de uma conta de serviço de VM do Dataproc na Google Cloud consola não é suportada. Pode definir o cloud-platform
âmbito de acesso nas VMs do cluster quando cria o cluster clicando em
"Ativa o âmbito da plataforma na nuvem para este cluster"
na secção Acesso ao projeto do painel Gerir segurança
na página Criar um cluster
do Google Cloud console.
Crie um cluster com uma conta de serviço de VM personalizada de outro projeto
Quando cria um cluster, pode 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 de usar a conta de serviço de VM predefinida (não pode especificar uma conta de serviço de VM personalizada depois de o cluster ser criado). A utilização de uma conta de serviço de VM personalizada com funções de IAM atribuídas permite-lhe conceder ao cluster acesso detalhado aos recursos do projeto.
Passos preliminares
No projeto da conta de serviço (o projeto onde se encontra a conta de serviço da VM personalizada):
Permitir que as contas de serviço sejam anexadas em vários projetos.
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 email (o utilizador que está a criar o cluster) a função de utilizador da conta de serviço no projeto da conta de serviço ou, para um controlo mais detalhado, na conta de serviço de VM personalizada no projeto da conta de serviço.
Para mais informações: consulte Faça a gestão do acesso a projetos, pastas e organizações para conceder funções ao nível do projeto e Faça a gestão do acesso a contas de serviço para conceder funções ao nível da conta de serviço.
Exemplos da CLI gcloud:
- O seguinte comando de exemplo concede ao utilizador a função de utilizador da conta de serviço ao nível do projeto:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
Notas:
USER_EMAIL: indique o endereço de email da sua conta de utilizador no formato:user:user-name@example.com.- O seguinte comando de exemplo concede ao utilizador a função de utilizador da conta de serviço ao 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"
Notas:
USER_EMAIL: indique o endereço de email da sua conta de utilizador no formato:user:user-name@example.com.Conceda à conta de serviço da VM personalizada a função de trabalhador 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 as funções de utilizador da conta de serviço e criador de tokens da conta de serviço no projeto da conta de serviço ou, para um controlo mais detalhado, na conta de serviço de VM personalizada no projeto da conta de serviço. Ao fazê-lo, permite que a conta de serviço do agente do serviço Dataproc no projeto do cluster crie tokens para a conta de serviço da VM do Dataproc personalizada no projeto da conta de serviço.
Para mais informações: consulte Faça a gestão do acesso a projetos, pastas e organizações para conceder funções ao nível do projeto e Faça a gestão do acesso a contas de serviço para conceder funções ao nível da conta de serviço.
Exemplos da CLI gcloud:
- Os seguintes comandos de exemplo concedem à conta de serviço do agente de serviço do Dataproc as funções de utilizador da conta de serviço e criador do token da conta de serviço ao 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 seguintes comandos de exemplo concedem à conta de serviço do agente de serviço do Dataproc as funções de utilizador da conta de serviço e criador de tokens da conta de serviço ao nível da conta de serviço da VM no projeto do cluster:
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 a função de criador de tokens de contas de serviço no projeto da conta de serviço ou, para um controlo mais detalhado, na conta de serviço de VM personalizada no projeto da conta de serviço. Ao fazê-lo, concede à conta de serviço do agente de serviço de computação no projeto do cluster a capacidade de criar tokens para a conta de serviço da VM do Dataproc personalizada no projeto da conta de serviço.
Para mais informações: consulte Faça a gestão do acesso a projetos, pastas e organizações para conceder funções ao nível do projeto e Faça a gestão do acesso a contas de serviço para conceder funções ao nível da conta de serviço.
Exemplos da CLI gcloud:
- O comando de exemplo seguinte concede à conta de serviço do agente de serviço do Compute Engine a função de criador de tokens de conta de serviço ao 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 seguinte concede à conta de serviço do agente de serviço do Compute Engine a função de criador de tokens de conta de serviço ao 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
O que se segue?
- Contas de serviço
- Autorizações do Dataproc e funções da IAM
- Principais e funções do Dataproc
- Multilocatário seguro baseado na conta de serviço do Dataproc
- Autenticação de cluster pessoal do Dataproc
- IAM detalhado do Dataproc