Permissões do Dataproc e papéis do IAM

Visão geral

O gerenciamento de identidade e acesso (IAM, na sigla em inglês) permite controlar o acesso de usuários e grupos aos recursos do seu 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 executar ações específicas 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 seu projeto. Você não concede permissões diretamente aos usuários. Em vez disso, você concede papéis, que já têm uma ou mais permissões incluídas.

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).

Permissões dos clusters

Método Permissão exigida
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 CLI do Google Cloud.
  2. A permissão dataproc.clusters.get também é necessária para receber o resultado da operação da CLI do Google Cloud.
  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 de jobs

Método Permissão exigida
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. Além disso, o Google Cloud CLI requer dataproc.jobs.get para que os comandos jobs submit, jobs wait, jobs update, jobs delete e jobs kill funcionem corretamente.

  2. A CLI do Google Cloud também requer permissão dataproc.clusters.get para enviar jobs. Para um exemplo de como definir as permissões necessárias para um usuário executar gcloud dataproc jobs submit em um cluster específico usando o IAM granular do Dataproc, consulte Como enviar jobs com o IAM granular.

Permissões de operações

Método Permissão exigida
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 do modelo de fluxo de trabalho

Método Permissão exigida
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 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 de políticas de escalonamento automático

Método Permissão exigida
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.

Papéis do Dataproc

Os papéis do IAM do Dataproc são um pacote de uma ou mais permissões. Você atribui papéis a usuários ou grupos para permitir que executem ações nos recursos do Dataproc no seu projeto. Por exemplo, o papel Leitor do Dataproc contém as permissões dataproc.*.get e dataproc.*.list, que permitem ao usuário conseguir e listar 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:

ID do papel Permissões
roles/dataproc.admin dataproc.*.getIamPolicy
dataproc.*.setIamPolicy
dataproc.*.create
dataproc.*.get
dataproc.*.list
dataproc.*.delete
dataproc.*.update
dataproc.clusters.use
dataproc.clusters.start
dataproc.clusters.stop
dataproc.jobs.cancel
dataproc.workflowTemplates.instantiate
dataproc.workflowTemplates.instantiateInline
compute.machineTypes.get
compute.machineTypes.list
compute.networks.get
compute.networks.list
compute.projects.get
compute.regions.get
compute.regions.list
compute.zones.get
compute.zones.list
resourcemanager.projects.get
resourcemanager.projects.list
roles/dataproc.editor dataproc.*.create
dataproc.*.get
dataproc.*.list
dataproc.*.delete
dataproc.*.update
dataproc.clusters.use
dataproc.clusters.start
dataproc.clusters.stop
dataproc.jobs.cancel
dataproc.workflowTemplates.instantiate
dataproc.workflowTemplates.instantiateInline
compute.machineTypes.get
compute.machineTypes.list
compute.networks.get
compute.networks.list
compute.projects.get
compute.regions.get
compute.regions.list
compute.zones.get
compute.zones.list
resourcemanager.projects.get
resourcemanager.projects.list
roles/dataproc.viewer dataproc.*.get
dataproc.*.list
compute.machineTypes.get
compute.regions.get
compute.regions.list
compute.zones.get
resourcemanager.projects.get
resourcemanager.projects.list
roles/dataproc.worker (somente para contas de serviço) dataproc.agents.*
dataproc.tasks.*
logging.logEntries.create
monitoring.metricDescriptors.create
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.monitoredResourceDescriptors.get
monitoring.monitoredResourceDescriptors.list
monitoring.timeSeries.create
storage.buckets.get
storage.objects.create
storage.objects.get
storage.objects.list
storage.objects.update
storage.objects.delete
storage.objects.getIamPolicy
storage.objects.setIamPolicy

Notas:

  • "*" significa "clusters", "jobs" "ou" "operações", mas as únicas permissões associadas a dataproc.operations. são get, list e delete.
  • As permissões compute listadas acima 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 CLI 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. Conceder um desses papéis do Storage permite que o usuário acesse qualquer bucket no projeto.
  • 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 ver informações sobre papéis do Google 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. Papéis adicionais podem ser necessários, dependendo dos recursos configurados. Consulte Contas de serviço para ver uma lista de papéis adicionais.

Papéis do projeto

Você também pode definir permissões no nível do projeto usando os papéis do Projeto do IAM. Este é um resumo das 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 resume as operações do Dataproc disponíveis com base no papel atribuído ao usuário, com algumas ressalvas.

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 incluem arquivos para upload não podem ser enviados, a menos que o usuário também tenha a o papel Criador de objetos de armazenamento ou tenha recebido acesso de gravação ao bucket de preparo do projeto.
  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 executar ações em um projeto em que o cluster está localizado, como criar instâncias de VM no projeto, 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 CLI do Google Cloud.

A seguir