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.
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 executar ações na VM dentro das autorizações concedidas à conta de serviço.
Contas de serviço do Dataproc
As seguintes contas de serviço têm 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 esta 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 do Dataproc, a menos que especifique uma conta de serviço da VM quando cria um cluster. Por predefinição, à conta de serviço predefinida do Compute Engine é atribuída a função de trabalhador do Dataproc, que inclui as autorizações necessárias para as operações do plano de dados do Dataproc.Contas de serviço personalizadas: se especificar uma conta de serviço personalizada quando criar um cluster, tem de conceder à conta de serviço personalizada as autorizações necessárias para as operações do plano de dados do Dataproc. Pode fazê-lo atribuindo a função de trabalhador do Dataproc à conta de serviço, uma vez que esta função inclui as autorizações necessárias para as operações do plano de dados do Dataproc.
Outras funções: pode conceder à conta de serviço da VM funções predefinidas ou personalizadas adicionais que contenham as autorizações necessárias para outras operações, como ler e escrever dados do e para o Cloud Storage, o BigQuery, o Cloud Logging e outros Google Cloud recursos (consulte Ver e gerir funções de contas 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 a função Agente de serviço do Dataproc no projeto de um utilizador do Dataproc Google Cloud . Não é possível substituir esta conta de serviço por uma conta de serviço de VM personalizada quando cria um cluster. Esta conta de agente de serviço é usada para realizar operações do plano de controlo do Dataproc , como a criação, a atualização e a eliminação de VMs de cluster.
Redes de VPC partilhada: se o cluster usar uma rede de VPC partilhada, um administrador de 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 de VPC partilhada. Para mais informações, consulte:
- 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
Veja e faça a gestão das funções da conta do serviço IAM
Para ver e gerir 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.
Âmbitos de acesso da VM do Dataproc
Os âmbitos de acesso da VM e as funções de IAM funcionam em conjunto para limitar o acesso da VM às Google Cloud
APIs. Por exemplo, se as VMs do cluster tiverem apenas o âmbito https://www.googleapis.com/auth/storage-full, as aplicações em execução nas VMs do cluster podem chamar APIs Cloud Storage, mas não podem fazer pedidos ao BigQuery, mesmo que estejam a ser executadas como uma conta de serviço de VM à qual foi concedida uma função do BigQuery com autorizações amplas.
Uma prática recomendada
é conceder o âmbito cloud-platform amplo (https://www.googleapis.com/auth/cloud-platform)
às VMs e, em seguida, limitar o acesso das VMs concedendo funções IAM específicas à conta de serviço da VM.
Âmbitos predefinidos da VM do Dataproc. Se os âmbitos não forem especificados quando um cluster é criado (consulte gcloud dataproc cluster create --scopes), as VMs do Dataproc têm o seguinte conjunto predefinido de âmbitos:
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 especificar âmbitos ao criar um cluster, as VMs do cluster têm os âmbitos especificados e o seguinte conjunto mínimo de âmbitos obrigatórios (mesmo que 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
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 autorizações do Dataproc e as funções de IAM).
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
Workerpredefinida do Dataproc, 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 por 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 é 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 cluster.
- SCOPE: Âmbito(s) de acesso para instâncias de VM do 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