Papéis e permissões do IAM do Dataproc

Visão geral

O gerenciamento de identidade e acesso (IAM) permite controlar o acesso de usuários e grupos aos recursos do projeto. Este documento se concentra nas permissões do IAM correspondentes ao Dataproc e os papéis do IAM que concedem essas permissões.

Permissões do Dataproc

Com as permissões do Dataproc, os usuários, incluindo contas de serviço, podem realizar ações em clusters, jobs, operações e modelos de fluxo de trabalho do Dataproc. Por exemplo, a permissão dataproc.clusters.create permite que um usuário crie clusters do Dataproc em um projeto. Normalmente, você não concede permissões, mas sim papéis, que incluem uma ou mais permissões.

As tabelas a seguir listam as permissões necessárias para chamar as APIs (métodos) do Dataproc. As tabelas são organizadas de acordo com as APIs associadas a cada recurso do Dataproc (clusters, jobs, operações e modelos de fluxo de trabalho).

Escopo da permissão:o escopo das permissões do Dataproc listadas nas tabelas a seguir é o projeto do Google Cloud (escopo cloud-platform). Consulte Permissões da conta de serviço.

Exemplos:

  • dataproc.clusters.create permite a criação de clusters do Dataproc no projeto
  • dataproc.jobs.create permite o envio de jobs do Dataproc para clusters do Dataproc no projeto
  • dataproc.clusters.list permite a listagem de detalhes de clusters do Dataproc no projeto

Permissões necessárias para métodos de clusters

Método Permissões necessárias
projects.regions.clusters.create 1, 2 dataproc.clusters.create
projects.regions.clusters.get dataproc.clusters.get
projects.regions.clusters.list dataproc.clusters.list
projects.regions.clusters.patch 1, 2, 3 dataproc.clusters.update
projects.regions.clusters.delete 1 dataproc.clusters.delete
projects.regions.clusters.start dataproc.clusters.start
projects.regions.clusters.stop dataproc.clusters.stop
projects.regions.clusters.getIamPolicy dataproc.clusters.getIamPolicy
projects.regions.clusters.setIamPolicy dataproc.clusters.setIamPolicy

Observações:

  1. A permissão dataproc.operations.get também é necessária para receber atualizações de status da Google Cloud CLI.
  2. A permissão dataproc.clusters.get também é necessária para o resultado da operação da Google Cloud CLI.
  3. A permissão dataproc.autoscalingPolicies.use também é necessária para ativar uma política de escalonamento automático em um cluster.

Permissões necessárias para métodos de jobs

Método Permissões necessárias
projects.regions.jobs.submit 1, 2 dataproc.jobs.create
dataproc.clusters.use
projects.regions.jobs.get dataproc.jobs.get
projects.regions.jobs.list dataproc.jobs.list
projects.regions.jobs.cancel 1 dataproc.jobs.cancel
projects.regions.jobs.patch 1 dataproc.jobs.update
projects.regions.jobs.delete 1 dataproc.jobs.delete
projects.regions.jobs.getIamPolicy dataproc.jobs.getIamPolicy
projects.regions.jobs.setIamPolicy dataproc.jobs.setIamPolicy

Observações:

  1. A Google Cloud CLI também requer a permissão dataproc.jobs.get para os comandos jobs submit, jobs wait, jobs update, jobs delete e jobs kill.

  2. A CLI gcloud também requer a permissão dataproc.clusters.get para enviar jobs. Para um exemplo de configuração das permissões necessárias para que um usuário execute gcloud dataproc jobs submit em um cluster usando o IAM granular do Dataproc, consulte Envio de jobs com IAM granular.

Permissões necessárias para métodos de operações

Método Permissões necessárias
projects.regions.operations.get dataproc.operations.get
projects.regions.operations.list dataproc.operations.list
projects.regions.operations.cancel dataproc.operations.cancel
projects.regions.operations.delete dataproc.operations.delete
projects.regions.operations.getIamPolicy dataproc.operations.getIamPolicy
projects.regions.operations.setIamPolicy dataproc.operations.setIamPolicy

Permissões necessárias para métodos de modelos de fluxo de trabalho

Método Permissões necessárias
projects.regions.workflowTemplates.instantiate dataproc.workflowTemplates.instantiate
projects.regions.workflowTemplates.instantiateInline dataproc.workflowTemplates.instantiateInline
projects.regions.workflowTemplates.create dataproc.workflowTemplates.create
projects.regions.workflowTemplates.get dataproc.workflowTemplates.get
projects.regions.workflowTemplates.list dataproc.workflowTemplates.list
projects.regions.workflowTemplates.update dataproc.workflowTemplates.update
projects.regions.workflowTemplates.delete dataproc.workflowTemplates.delete
projects.regions.workflowTemplates.getIamPolicy dataproc.workflowTemplates.getIamPolicy
projects.regions.workflowTemplates.setIamPolicy dataproc.workflowTemplates.setIamPolicy

Observações:

  1. As permissões do modelo de fluxo de trabalho não dependem das permissões de cluster e job. Um usuário sem as permissões create cluster ou submit job pode criar e instanciar um modelo de fluxo de trabalho.

  2. Além disso, a CLI do Google Cloud requer a permissão dataproc.operations.get para pesquisar a conclusão do fluxo de trabalho.

  3. A permissão dataproc.operations.cancel é necessária para cancelar um fluxo de trabalho em execução.

Permissões necessárias para os métodos das políticas de escalonamento automático

Método Permissões necessárias
projects.regions.autoscalingPolicies.create dataproc.autoscalingPolicies.create
projects.regions.autoscalingPolicies.get dataproc.autoscalingPolicies.get
projects.regions.autoscalingPolicies.list dataproc.autoscalingPolicies.list
projects.regions.autoscalingPolicies.update dataproc.autoscalingPolicies.update
projects.regions.autoscalingPolicies.delete dataproc.autoscalingPolicies.delete
projects.regions.autoscalingPolicies.getIamPolicy dataproc.autoscalingPolicies.getIamPolicy
projects.regions.autoscalingPolicies.setIamPolicy dataproc.autoscalingPolicies.setIamPolicy

Notas:

  1. A permissão dataproc.autoscalingPolicies.use é necessária para ativar uma política de escalonamento automático em um cluster com uma solicitação de método clusters.patch.

Permissões necessárias para métodos de grupos de nós

Método Permissões necessárias
projects.regions.nodeGroups.create dataproc.nodeGroups.create
projects.regions.nodeGroups.get dataproc.nodeGroups.get
projects.regions.nodeGroups.resize dataproc.nodeGroups.update

Papéis do Dataproc

Os papéis do IAM do Dataproc são um pacote de uma ou mais permissões. Você concede papéis a usuários ou grupos para permitir que executem ações nos recursos do Dataproc em um projeto. Por exemplo, o papel Leitor do Dataproc contém as permissões get e list, que permitem que um usuário acesse e liste clusters, jobs e operações do Dataproc em um projeto.

A tabela a seguir lista os papéis de IAM do Dataproc e as permissões associadas a cada um.

Permissões

(roles/dataproc.admin)

Controle total dos recursos do Dataproc.

compute.machineTypes.*

compute.networks.get

compute.networks.list

compute.projects.get

compute.regions.*

compute.zones.*

dataproc.autoscalingPolicies.*

dataproc.batches.analyze

dataproc.batches.cancel

dataproc.batches.create

dataproc.batches.delete

dataproc.batches.get

dataproc.batches.list

dataproc.batches.sparkApplicationRead

dataproc.clusters.*

dataproc.jobs.*

dataproc.nodeGroups.*

dataproc.operations.*

dataproc.sessionTemplates.*

dataproc.sessions.create

dataproc.sessions.delete

dataproc.sessions.get

dataproc.sessions.list

dataproc.sessions.sparkApplicationRead

dataproc.sessions.terminate

dataproc.workflowTemplates.*

dataprocrm.nodePools.*

dataprocrm.nodes.get

dataprocrm.nodes.heartbeat

dataprocrm.nodes.list

dataprocrm.nodes.update

dataprocrm.operations.get

dataprocrm.operations.list

dataprocrm.workloads.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataproc.editor)

Concede as permissões necessárias para visualizar os recursos necessários para gerenciar o Dataproc, incluindo tipos de máquina, redes, projetos e zonas.

Recursos de nível mais baixo em que você pode conceder esse papel:

  • Cluster

compute.machineTypes.*

compute.networks.get

compute.networks.list

compute.projects.get

compute.regions.*

compute.zones.*

dataproc.autoscalingPolicies.create

dataproc.autoscalingPolicies.delete

dataproc.autoscalingPolicies.get

dataproc.autoscalingPolicies.list

dataproc.autoscalingPolicies.update

dataproc.autoscalingPolicies.use

dataproc.batches.analyze

dataproc.batches.cancel

dataproc.batches.create

dataproc.batches.delete

dataproc.batches.get

dataproc.batches.list

dataproc.batches.sparkApplicationRead

dataproc.clusters.create

dataproc.clusters.delete

dataproc.clusters.get

dataproc.clusters.list

dataproc.clusters.start

dataproc.clusters.stop

dataproc.clusters.update

dataproc.clusters.use

dataproc.jobs.cancel

dataproc.jobs.create

dataproc.jobs.delete

dataproc.jobs.get

dataproc.jobs.list

dataproc.jobs.update

dataproc.nodeGroups.*

dataproc.operations.cancel

dataproc.operations.delete

dataproc.operations.get

dataproc.operations.list

dataproc.sessionTemplates.*

dataproc.sessions.create

dataproc.sessions.delete

dataproc.sessions.get

dataproc.sessions.list

dataproc.sessions.sparkApplicationRead

dataproc.sessions.terminate

dataproc.workflowTemplates.create

dataproc.workflowTemplates.delete

dataproc.workflowTemplates.get

dataproc.workflowTemplates.instantiate

dataproc.workflowTemplates.instantiateInline

dataproc.workflowTemplates.list

dataproc.workflowTemplates.update

dataprocrm.nodePools.*

dataprocrm.nodes.get

dataprocrm.nodes.heartbeat

dataprocrm.nodes.list

dataprocrm.nodes.update

dataprocrm.operations.get

dataprocrm.operations.list

dataprocrm.workloads.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataproc.hubAgent)

Permite o gerenciamento de recursos do Dataproc. Destinado a contas de serviço que executam instâncias do Dataproc Hub.

compute.instances.get

compute.instances.setMetadata

compute.instances.setTags

compute.zoneOperations.get

compute.zones.list

dataproc.autoscalingPolicies.get

dataproc.autoscalingPolicies.list

dataproc.autoscalingPolicies.use

dataproc.clusters.create

dataproc.clusters.delete

dataproc.clusters.get

dataproc.clusters.list

dataproc.clusters.update

dataproc.operations.cancel

dataproc.operations.delete

dataproc.operations.get

dataproc.operations.list

iam.serviceAccounts.actAs

iam.serviceAccounts.get

iam.serviceAccounts.list

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

logging.logEntries.create

logging.logEntries.list

logging.logEntries.route

logging.logMetrics.get

logging.logMetrics.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

storage.buckets.get

storage.objects.get

storage.objects.list

(roles/dataproc.viewer)

Dá acesso somente leitura aos recursos do Dataproc.

Recursos de nível mais baixo em que você pode conceder esse papel:

  • Cluster

compute.machineTypes.get

compute.regions.*

compute.zones.*

dataproc.autoscalingPolicies.get

dataproc.autoscalingPolicies.list

dataproc.batches.analyze

dataproc.batches.get

dataproc.batches.list

dataproc.batches.sparkApplicationRead

dataproc.clusters.get

dataproc.clusters.list

dataproc.jobs.get

dataproc.jobs.list

dataproc.nodeGroups.get

dataproc.operations.get

dataproc.operations.list

dataproc.sessionTemplates.get

dataproc.sessionTemplates.list

dataproc.sessions.get

dataproc.sessions.list

dataproc.sessions.sparkApplicationRead

dataproc.workflowTemplates.get

dataproc.workflowTemplates.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataproc.worker)

Dá acesso de worker aos recursos do Dataproc. Destinado a contas de serviço.

cloudprofiler.profiles.create

cloudprofiler.profiles.update

dataproc.agents.*

dataproc.batches.sparkApplicationWrite

dataproc.sessions.sparkApplicationWrite

dataproc.tasks.*

dataprocrm.nodes.mintOAuthToken

logging.logEntries.create

logging.logEntries.route

monitoring.metricDescriptors.create

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.monitoredResourceDescriptors.*

monitoring.timeSeries.create

storage.buckets.get

storage.folders.*

storage.managedFolders.create

storage.managedFolders.delete

storage.managedFolders.get

storage.managedFolders.list

storage.multipartUploads.*

storage.objects.*

Observações:

  • As permissões compute são necessárias ou recomendadas para criar e visualizar clusters do Dataproc ao usar o console do Google Cloud ou a CLI do Google Cloud gcloud.
  • Para permitir que um usuário faça o upload de arquivos, atribua o papel Storage Object Creator. Para permitir que um usuário visualize a saída do job, atribua o papel Storage Object Viewer.
  • Um usuário precisa ter a permissão monitoring.timeSeries.list para visualizar gráficos na guia "Visão geral" do console do Google Cloud→Dataproc→Detalhes do cluster.
  • Um usuário precisa ter a permissão compute.instances.list para visualizar o status da instância e o menu SSH da instância mestre na guia "Instâncias da VM" do Console do Google Cloud→Dataproc→Detalhes do cluster. Para informações sobre papéis do Compute Engine, consulte Compute Engine→Papéis do IAM disponíveis.
  • Para criar um cluster com uma conta de serviço especificada pelo usuário, essa conta precisa ter todas as permissões concedidas pelo papel Dataproc Worker, que inclui acesso aos buckets de preparação e temporários do Dataproc. Papéis adicionais podem ser necessários, dependendo dos recursos configurados. Consulte Criar um cluster com uma conta de serviço de VM personalizada para mais informações.

Papéis do projeto

Você também pode definir permissões no nível do projeto usando os papéis do Projeto do IAM. A tabela a seguir lista as permissões associadas aos papéis do Projeto do IAM:

Papel do projeto Permissões
Visualizador do projeto Todas as permissões do projeto para ações somente leitura que preservam o estado (get, lista)
Editor do projeto Todas as permissões do Visualizador do projeto acrescidas de todas as permissões do projeto para ações que modificam o estado (criar, excluir, atualizar, usar, cancelar, interromper, iniciar)
Proprietário do projeto Todas as permissões do Editor do projeto acrescidas das permissões para gerenciar o controle de acesso do projeto (get/set IamPolicy) e configurar o faturamento do projeto

Resumo dos papéis de IAM e de operações do Dataproc

A tabela a seguir lista as operações do Dataproc associadas a papéis do projeto e do Dataproc.

Operação Editor do projeto Visualizador do projeto Administrador do Dataproc Editor do Dataproc Leitor do Dataproc
Receber/Definir permissões de IAM do Dataproc Não Não Sim Não Não
Criar cluster Sim Não Sim Sim Não
Listar clusters Sim Sim Sim Sim Sim
Receber detalhes do cluster Sim Sim Sim 1, 2 Sim 1, 2 Sim 1, 2
Atualizar cluster Sim Não Sim Sim Não
Excluir cluster Sim Não Sim Sim Não
Iniciar/parar cluster Sim Não Sim Sim Não
Enviar job Sim Não Sim 3 Sim 3 Não
Listar jobs Sim Sim Sim Sim Sim
Receber detalhes do job Sim Sim Sim 4 Sim 4 Sim 4
Cancelar job Sim Não Sim Sim Não
Excluir job Sim Não Sim Sim Não
Listar operações Sim Sim Sim Sim Sim
Receber detalhes da operação Sim Sim Sim Sim Sim
Excluir operação Sim Não Sim Sim Não

Notas:

  1. O gráfico de desempenho não estará disponível a menos que o usuário também tenha um papel com a permissão monitoring.timeSeries.list.
  2. A lista de VMs no cluster não incluirá informações de status ou um link SSH para a instância mestre, a menos que o usuário também tenha um papel com a permissão compute.instances.list.
  3. Os jobs que fazem upload de arquivos exigem que o usuário tenha o papel Storage Object Creator ou acesso de gravação ao bucket de preparo do Dataproc.
  4. A saída do job não estará disponível, a menos que o usuário também tenha o papel Leitor de objetos de armazenamento ou tenha recebido acesso de leitura ao bucket de preparo do projeto.

Contas de serviço

Quando você chama APIs do Dataproc para realizar ações em um projeto, como criar instâncias de VM, o Dataproc realiza essas ações em seu nome usando uma conta de serviço com as permissões necessárias para executar as ações. Para mais informações, consulte Contas de serviço do Dataproc.

Gerenciamento do IAM

É possível receber e definir políticas do IAM usando o console do Google Cloud, a API IAM ou a Google Cloud CLI.

A seguir