Contas de serviço do Dataproc

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?

A 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 do 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 do agente de serviço do Dataproc: o Dataproc cria essa conta de serviço com o papel Agente de serviço do Dataproc em um Dataproc projeto do usuário do Google Cloud. Essa conta de serviço não pode ser substituída por uma conta de serviço especificada pelo usuário quando você cria um cluster. Essa conta de agente de serviço é usada para executar operações de plano de controle do Dataproc, como criação, atualização e exclusão de VMs do cluster (consulte Agente de serviço do Dataproc (identidade do plano de controle).

    Por padrão, o Dataproc usa o service-[project-number]@dataproc-accounts.iam.gserviceaccount.com como a conta do agente de serviço. Se essa conta de serviço não existir, o Dataproc usará a conta do agente de serviço das APIs do Google, [project-number]@cloudservices.gserviceaccount.com, para operações de plano de controle.

Rede VPS compartilhada: se o cluster usar uma rede VPC compartilhada, um Administrador de VPC compartilhada precisará conceder a ambas as contas de serviço acima o papel de Usuário de rede para o projeto host da VPC compartilhada. Veja mais informações em:

Escopos de acesso à VM do Dataproc

Os escopos de acesso à VM são usados para conceder ou limitar o acesso a instâncias de VM para APIs. Eles trabalham junto com a conta de serviço da VM para determinar o acesso à API. 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 a VM conta de serviço que eles estão executando, para que um papel do BigQuery tenha permissões amplas.

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/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.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

Como criar um cluster com uma conta de serviço da VM gerenciada pelo usuário

É possível especificar uma conta de serviço de VM ao criar um cluster. O Dataproc não é compatível com a especificação ou alteração da conta de serviço de VM após a criação do cluster.

Por que especificar uma conta de serviço de VM gerenciada pelo usuário? As contas de serviço recebem papéis do IAM. Especificar uma conta de serviço de VM gerenciada pelo usuário ao criar um cluster do Dataproc permite criar clusters com acesso e controle detalhados dos recursos do projeto. O uso de diferentes contas de serviço de VM gerenciadas pelo usuário com diferentes clusters do Dataproc permite configurar clusters com acesso diferente aos recursos do Cloud.

Antes de criar o cluster, crie a conta de serviço no projeto em que o cluster será criado. Conceda à conta de serviço o papel Dataproc Worker e quaisquer outros papéis necessários para os jobs, por exemplo, para permitir a leitura e a gravação de dados de e para recursos do Google Cloud, como como BigQuery.

Comando gcloud

Use o comando gcloud clusters create para criar um novo cluster com uma conta de serviço da VM especificada pelo usuário e escopos de acesso da VM.

gcloud dataproc clusters create cluster-name \
    --region=region \
    --service-account=service-account-name@project-id.iam.gserviceaccount.com \
    --scopes=scope[, ...]

API REST

Defina serviceAccount e serviceAccountScopes no objeto GceClusterConfig como parte da solicitação de API clusters.create. de dados.

Console

No momento, não é possível definir uma conta de serviço da VM do Dataproc gerenciada pelo usuário no Console do Cloud. Para definir o escopo "cloud-platform" nas VMs do seu cluster, clique em "Permitir o acesso da API a todos os serviços do Google Cloud no mesmo projeto" na seção Acesso ao projeto no painel Gerenciar segurança na página Criar um cluster do Dataproc no Console do Cloud.

A seguir