Permissões do Dataproc e papéis do IAM

Visão geral

O Google Cloud Identity and Access Management (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

As permissões do Dataproc permitem que os usuários executem 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, mas atribui a eles papéis com uma ou mais permissões agrupadas.

As tabelas a seguir listam as permissões necessárias para chamar as APIs (métodos) do Cloud 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.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 ferramenta de linha de comando gcloud.
  2. A permissão dataproc.clusters.get também é necessária para o resultado da operação da ferramenta de linha de comando gcloud.
  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. A ferramenta de linha de comando gcloud também requer dataproc.jobs.get para que os comandos jobs submit, jobs wait, jobs update, jobs delete e jobs kill funcionem corretamente.

  2. A ferramenta de linha de comando 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 específico usando o IAM granular do Dataproc, consulte Envio de jobs com 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 são independentes 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. A ferramenta de linha de comando gcloud também 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 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

Observações:

  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 Dataproc de Gerenciamento de acesso e identidade (IAM, na sigla em inglês) 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 obter 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 uma:

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.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.editor dataproc.*.create
dataproc.*.get
dataproc.*.list
dataproc.*.delete
dataproc.*.update
dataproc.clusters.use
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

Observações:

  • "*" 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 ferramenta de linha de comando gcloud do SDK do Cloud.
  • 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 qualquer um desses papéis do Storage permite que o usuário acesse qualquer intervalo do 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 informações sobre papéis do Google Compute Engine, consulte Compute Engine→Papéis de 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. Veja 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)
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
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

Observações:

  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 o papel Criador de objetos de armazenamento ou tenha recebido acesso de gravação ao intervalo 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 intervalo 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. As contas de serviço listadas abaixo têm as permissões necessárias para executar ações do Dataproc no projeto em que o cluster está localizado:

  • Primeiro, o Dataproc tenta usar service-[project-number]@dataproc-accounts.iam.gserviceaccount.com.
  • Se essa conta de serviço não existir, o Dataproc voltará a usar a conta de serviço de APIs do Google, [project-number]@cloudservices.gserviceaccount.com.

Se o cluster usar uma rede de VPC compartilhada, um administrador de VPC compartilhada precisará atribuir às contas de serviço o papel Usuário da rede do projeto host de VPC compartilhada. Para saber mais, consulte:

Gerenciamento do IAM

É possível receber e definir políticas do IAM usando o Console do Google Cloud, a API IAM ou a ferramenta de linha de comando gcloud.

A seguir