IAM granular do Dataproc

O IAM granular do Dataproc é um recurso que permite conceder permissões no nível do cluster, jobs, operações, modelo de fluxo de trabalho ou da política de escalonamento automático.

Por exemplo: é possível conceder a um usuário um papel de Leitor do cluster, que permite ao usuário visualizar um cluster em um projeto, e conceder a outro usuário um papel de Editor de jobs, que permite que o usuário atualize, cancele e visualize o job. Consulte Comandos do SDK ativados pelo IAM granular para entender os comandos específicos do Google Cloud CLI ativados por cada papel do IAM granular do Dataproc.

Papéis e permissões do IAM granular do Dataproc

O IAM granular do Dataproc pode definir os seguintes papéis com as seguintes permissões em recursos do Dataproc.

Papéis de cluster

Papel Permissões
Leitor dataproc.clusters.get
Editor dataproc.clusters.get
dataproc.clusters.list
dataproc.clusters.delete
dataproc.clusters.update
dataproc.clusters.use
dataproc.clusters.start
dataproc.clusters.stop
Proprietário dataproc.clusters.get
dataproc.clusters.list
dataproc.clusters.delete
dataproc.clusters.update
dataproc.clusters.use
dataproc.clusters.start
dataproc.clusters.stop
dataproc.clusters.setIamPolicy
dataproc.clusters.getIamPolicy

Papéis de job

Papel Permissões
Leitor dataproc.jobs.get
Editor dataproc.jobs.get
dataproc.jobs.cancel
dataproc.jobs.delete
dataproc.jobs.update
Proprietário dataproc.jobs.get
dataproc.jobs.cancel
dataproc.jobs.delete
dataproc.jobs.update
dataproc.jobs.setIamPolicy
dataproc.jobs.getIamPolicy

Papéis de operação

Papel Permissões
Leitor dataproc.operations.get
Editor dataproc.jobs.get
dataproc.operations.cancel
dataproc.operations.delete
Proprietário dataproc.jobs.get
dataproc.operations.cancel
dataproc.operations.delete
dataproc.operations.setIamPolicy
dataproc.operations.getIamPolicy

Papéis de modelo de fluxo de trabalho

Papel Permissões
Leitor dataproc.workflowTemplates.get
Editor dataproc.workflowTemplates.get
dataproc.workflowTemplates.delete
dataproc.workflowTemplates.update
Proprietário dataproc.workflowTemplates.get
dataproc.workflowTemplates.delete
dataproc.workflowTemplates.update
dataproc.workflowTemplates.setIamPolicy
dataproc.workflowTemplates.getIamPolicy

Papéis da política de escalonamento automático

Papel Permissões
Leitor dataproc.autoscalingPolicies.get
Editor dataproc.autoscalingPolicies.get
dataproc.autoscalingPolicies.use
dataproc.autoscalingPolicies.delete
dataproc.autoscalingPolicies.update
Proprietário dataproc.autoscalingPolicies.get
dataproc.autoscalingPolicies.use
dataproc.autoscalingPolicies.delete
dataproc.autoscalingPolicies.update
dataproc.autoscalingPolicies.setIamPolicy
dataproc.autoscalingPolicies.getIamPolicy

Como usar o IAM granular do Dataproc

Nesta seção, explicamos como usar o IAM granular do Dataproc para atribuir papéis a usuários em um recurso existente do Dataproc. Veja Como conceder, alterar e revogar um acesso para mais informações gerais sobre como atualizar e remover os papéis de gerenciamento de identidade e acesso (IAM).

Comando gcloud

  1. Acesse a política do IAM do recurso e grave-a em um arquivo JSON. A resource-type pode ser "clusters", "jobs", "operações", "workflow-templates" ou "Autoscaling-policies":
    gcloud dataproc resource-type get-iam-policy  resource-id \
        --region=region \
        --format=json > iam.json
    
  2. O conteúdo do arquivo JSON será semelhante ao seguinte:
    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        }
      ],
      "etag": "string"
    }
    
  3. Com um editor de texto, adicione um novo objeto de vinculação à matriz bindings. Nela, estão definidos os usuários e o papel de acesso ao recurso deles. Por exemplo, para conceder o papel de visualizador (roles/viewer) ao usuário sean@example.com, altere o exemplo acima para adicionar um novo objeto de vinculação (mostrado em negrito, abaixo). Observação: retorne o valor etag recebido de gcloud dataproc resource-type get-iam-policy. Consulte a documentação de etag.
    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/viewer",
          "members": [
            "user:sean@example.com"
          ]
        }
      ],
      "etag": "value-from-get-iam-policy"
    }
    
  4. Atualize a política do cluster com a nova matriz de vinculações executando o comando a seguir. resource-type pode ser "clusters", "jobs", "operations", "workflow-templates" ou "Autoscaling-policies":
    gcloud dataproc resource-type set-iam-policy resource-name \
        --region=region \
        --format=json iam.json
    
  5. A política atualizada é exibida:
    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/viewer",
          "members": [
            "user:sean@example.com"
          ]
        }
      ],
      "etag": "string"
    }
    

API REST

  1. Emita uma solicitação getIamPolicy resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "autoscalingPolicies") para receber a política do IAM para o recurso.

    Exemplo de getIamPolicy de cluster:

    GET https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:getIamPolicy
    
  2. O conteúdo do arquivo JSON será semelhante ao seguinte:
    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        }
      ],
      "etag": "string"
    }
    
  3. Com um editor de texto, crie o seguinte objeto de política JSON para incluir a matriz de vinculações que você acabou de receber do serviço Dataproc. Certifique-se de retornar o valor "etag" que você recebeu na resposta getIamPolicy (consulte a documentação etag). Agora, adicione um novo objeto de vinculação à matriz que define os usuários e o papel de acesso ao cluster desses usuários. Por exemplo, para conceder o papel de visualizador (roles/viewer) ao usuário sean@example.com, altere o exemplo acima para adicionar um novo objeto de vinculação (mostrado em negrito, abaixo).
    {
      "policy": {
        "version": "",
        "bindings": [
          {
            "role": "roles/editor",
            "members": [
              "user:mike@example.com",
              "group:admins@example.com",
              "domain:google.com",
              "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
          },
          {
            "role": "roles/viewer",
            "members": [
              "user:sean@example.com"
            ]
          }
        ],
        "etag": "value-from-getIamPolicy"
      }
    }
    
  4. Defina a política atualizada no recurso enviando uma solicitação setIamPolicy.

    Exemplo de setIamPolicy de cluster:

    POST https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:setIamPolicy
    
    Request body
    {
      "policy": {
        "version": "",
        "bindings": [
          {
            "role": "roles/editor",
            "members": [
              "user:mike@example.com",
              "group:admins@example.com",
              "domain:google.com",
              "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
          },
          {
            "role": "roles/viewer",
            "members": [
              "user:sean@example.com"
            ]
          }
        ],
        "etag": "value-from-getIamPolicy"
      }
    }
    
  5. O conteúdo da resposta do JSON será semelhante ao seguinte:

    Resposta

    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/viewer",
          "members": [
            "user:sean@example.com"
          ]
        }
      ],
      "etag": "string"
    }
    

Console

Acesse a página Clusters do Dataproc no console do Google Cloud e clique na caixa à esquerda do nome do cluster para abrir o painel Permissões/Rótulos. Se o painel não aparecer, clique em MOSTRAR PAINEL DE INFORMAÇÕES no canto superior direito da página. Na guia "Permissões", selecione o papel do "Dataproc", adicione um ou mais endereços de conta na caixa Adicionar principais e clique em Adicionar.

Comandos do SDK ativados pelo IAM granular

As tabelas abaixo mostram os comandos gcloud dataproc ativados nos recursos do Dataproc por cada papel do IAM granular.

Clusters

Papel do IAM Comando
Leitor gcloud dataproc clusters describe cluster-name
Editor gcloud dataproc clusters describe cluster-name
gcloud dataproc clusters list
gcloud dataproc clusters delete cluster-name
gcloud dataproc clusters diagnose cluster-name
gcloud dataproc clusters update cluster-name
gcloud beta dataproc clusters start cluster-name
gcloud beta dataproc clusters stop cluster-name
Proprietário gcloud dataproc clusters describe cluster-name
gcloud dataproc clusters list
gcloud dataproc clusters delete cluster-name
gcloud dataproc clusters diagnose cluster-name
gcloud dataproc clusters update cluster-name
gcloud beta dataproc clusters start cluster-name
gcloud beta dataproc clusters stop cluster-name
gcloud dataproc clusters get-iam-policy cluster-name
gcloud dataproc clusters set-iam-policy cluster-name

Jobs

Papel do IAM Comando
Leitor gcloud dataproc jobs describe job-id
Editor gcloud dataproc jobs delete job-id
gcloud dataproc jobs describe job-id
gcloud dataproc jobs kill job-id
gcloud dataproc jobs update job-id
gcloud dataproc jobs wait job-id
Proprietário gcloud dataproc jobs delete job-id
gcloud dataproc jobs describe job-id
gcloud dataproc jobs kill job-id
gcloud dataproc jobs update job-id
gcloud dataproc jobs wait job-id
gcloud dataproc jobs get-iam-policy job-id
gcloud dataproc jobs set-iam-policy job-id

Operações

Papel do IAM Comando
Leitor gcloud dataproc operations describe operation-id
Editor gcloud dataproc operations delete operation-id
gcloud dataproc operations describe operation-id
gcloud dataproc operations cancel operation-id
Proprietário gcloud dataproc operations delete operation-id
gcloud dataproc operations describe operation-id
gcloud dataproc operations cancel operation-id
gcloud dataproc operations get-iam-policy operation-id
gcloud dataproc operations set-iam-policy operation-id

Modelos de fluxo de trabalho

Papel do IAM Comando
Leitor gcloud dataproc workflow-templates describe template-id
Editor gcloud dataproc workflow-templates delete template-id
gcloud dataproc workflow-templates describe template-id
gcloud dataproc workflow-templates remove-job template-id
gcloud dataproc workflow-templates run template-id
Proprietário gcloud dataproc workflow-templates delete template-id
gcloud dataproc workflow-templates describe template-id
gcloud dataproc workflow-templates remove-job template-id
gcloud dataproc workflow-templates run template-id
gcloud dataproc workflow-templates get-iam-policy template-id
gcloud dataproc workflow-templates set-iam-policy template-id

Políticas de Escalonamento Automático

Papel do IAM Comando
Leitor gcloud dataproc autoscaling-policies describe policy-id
Editor gcloud dataproc autoscaling-policies delete policy-id
gcloud dataproc autoscaling-policies describe policy-id
gcloud dataproc autoscaling-policies update policy-id
gcloud dataproc clusters create cluster-name --autoscaling-policy policy-id
Proprietário gcloud dataproc autoscaling-policies delete policy-id
gcloud dataproc autoscaling-policies describe policy-id
gcloud dataproc autoscaling-policies update policy-id
gcloud dataproc clusters create cluster-name --autoscaling-policy policy-id
gcloud dataproc autoscaling-policies get-iam-policy policy-id
gcloud dataproc autoscaling-policies set-iam-policy policy-id

Como enviar jobs com IAM granular

Para permitir que um principal (usuário, grupo ou conta de serviço) envie jobs a um cluster especificado usando o IAM granular do Dataproc, além de atribuir a um usuário um papel de Editor em um cluster, é necessário definir outras permissões no nível do projeto. Veja abaixo as etapas a serem executadas para permitir que um principal envie jobs em um cluster especificado do Dataproc:

  1. Crie um bucket do Cloud Storage que seu cluster possa usar para se conectar ao Cloud Storage.
  2. Adicione o principal à política no nível do bucket, selecionando o papel Leitor de objetos do Storage para o principal (consulte roles/storage.objectViewer), que inclui as seguintes permissões:
    1. storage.objects.get
    2. storage.objects.list
  3. Ao criar o cluster, transmita o nome do bucket que você acabou de criar usando o parâmetro --bucket. Consulte gcloud dataproc clusters create --bucket.
  4. Depois criar o cluster, defina uma política nele que atribua ao principal um papel de Editor ou Proprietário. Veja Como usar o IAM granular do Dataproc.
  5. Crie um papel personalizado do IAM com as seguintes permissões:
    1. dataproc.jobs.create
    2. dataproc.jobs.get
  6. Selecione ou adicione o principal na página IAM do console do Google Cloud e selecione o papel personalizado para aplicá-lo ao principal.