IAM granular do Cloud Dataproc

O IAM granular do Cloud 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 SDK do Google Cloud ativados por cada papel do IAM granular do Cloud dataproc.

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

O IAM granular do Cloud Dataproc pode definir os seguintes papéis com as seguintes permissões em recursos do Cloud 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
Proprietário dataproc.clusters.get
dataproc.clusters.list
dataproc.clusters.delete
dataproc.clusters.update
dataproc.clusters.use
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 Cloud Dataproc para atribuir papéis a usuários em um recurso existente do Cloud dataproc. Consulte Como conceder, alterar e revogar acesso a membros do projeto para ver informações mais gerais sobre como atualizar e remover os papéis do Cloud IAM.

Comando gcloud

  1. Acesse a política do IAM do recurso e a grave em um arquivo JSON:
    gcloud dataproc resource-type ("clusters" or "jobs" or "operations" or "workflow-templates" or "autoscaling-policies" \
        get-iam-policy  resource-name --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 leitor (roles/viewer) ao usuário sean@example.com, altere o exemplo acima adicionando um novo objeto de vinculação (mostrado em negrito abaixo). Observação: certifique-se de retornar o valor etag recebido de gcloud dataproc resource-type get-iam-policy (consulte a documentação sobre 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 seguinte comando:
    gcloud dataproc resource-type ("clusters" or "jobs" or "operations" or "workflow-templates" or "autoscaling-policies") \
        set-iam-policy resource-name --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 de tipo "recurso" ("clusters", "jobs", "operations", "workflowTemplates" ou "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 Cloud 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 leitor (roles/viewer) ao usuário sean@example.com, altere o exemplo acima e adicione 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 Cloud Dataproc no Console do GCP e clique na caixa à esquerda do nome do cluster para abrir o painel Permissões/Rótulos. Se ele não for exibido, clique em MOSTRAR PAINEL DE INFORMAÇÕES no canto superior direito da página. Na guia "Permissões", selecione o papel "Dataproc", adicione um ou mais endereços de conta na caixa Adicionar membros e clique em Adicionar.

Comandos do SDK ativados pelo IAM granular

As tabelas abaixo mostram os comandos gcloud dataproc ativados nos recursos do Cloud 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
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 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 membro (usuário, grupo ou conta de serviço) envie jobs a um cluster especificado usando o IAM granular do Cloud Dataproc, além de atribuir a um usuário um papel de Editor em um cluster, é necessário definir permissões adicionais no nível do projeto. Veja abaixo as etapas para permitir que um membro envie jobs em um cluster especificado do Cloud Dataproc:

  1. Crie um intervalo do Cloud Storage que seu cluster possa usar para se conectar ao Cloud Storage.
  2. Adicione o membro à política no nível do intervalo selecionando o papel de "Leitor de Objetos do Storage" para ele (consulte roles/storage.objectViewer), que inclui as seguintes permissões:
    1. storage.objects.get
    2. storage.objects.list
  3. Na criação do cluster, transmita a ele o nome do intervalo recém-criado usando o parâmetro --bucket. Para mais informações, consulte gcloud dataproc clusters create --bucket.
  4. Depois da criação do cluster, defina uma política nele que atribua ao membro um papel de Editor ou Proprietário (consulte Como usar o IAM granular do Dataproc).
  5. Crie um papel personalizado do Cloud IAM com as seguintes permissões:
    1. dataproc.jobs.create
    2. dataproc.jobs.get
  6. Selecione ou adicione o membro na página IAM do Console do GCP e selecione o papel personalizado para aplicá-lo ao membro.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Dataproc
Precisa de ajuda? Acesse nossa página de suporte.