IAM detalhado do Dataproc

O IAM detalhado do Dataproc é uma funcionalidade que lhe permite conceder autorizações ao nível do cluster, das tarefas, das operações, do modelo de fluxo de trabalho ou da política de dimensionamento automático.

Exemplo: pode conceder a um utilizador a função de leitor de cluster, que lhe permite ver um cluster num projeto, e conceder a outro utilizador a função de editor de tarefas, que lhe permite atualizar e cancelar, bem como ver a tarefa. Para compreender os comandos específicos da CLI gcloud ativados por cada função de IAM granular do Dataproc, consulte o artigo Comandos do SDK ativados pela IAM granular.

Funções e autorizações detalhadas da IAM do Dataproc

O IAM detalhado do Dataproc pode definir as seguintes funções com as seguintes autorizações nos recursos do Dataproc.

Funções de cluster

Função Autorizaçõ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

Cargos

Função Autorizaçõ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

Funções de operação

Função Autorizaçõ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

Funções do modelo de fluxo de trabalho

Função Autorizaçõ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

Funções da política de ajuste de escala automático

Função Autorizaçõ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

Use a IAM detalhada do Dataproc

Esta secção explica como usar o IAM granular do Dataproc para atribuir funções a utilizadores num recurso do Dataproc existente. Para mais informações sobre a atualização e a remoção de funções do Identity and Access Management (IAM), consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Comando gcloud

  1. Obtenha a política de IAM do recurso e escreva-a num ficheiro JSON (o resource-type pode ser "clusters", "jobs", "operations", "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 ficheiro JSON é 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. Usando um editor de texto, adicione um novo objeto de associação à matriz de associações que define os utilizadores e a função de acesso aos recursos para esses utilizadores. Por exemplo, para conceder a função de leitor (roles/viewer) ao utilizador sean@example.com, alteraria o exemplo anterior para adicionar um novo objeto de associação (apresentado a negrito no exemplo seguinte). Nota: certifique-se de que devolve o valor etag que recebeu de gcloud dataproc resource-type get-iam-policy. Consulte a documentação sobre etags.
    {
      "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 associações executando o seguinte comando (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. O comando produz a política atualizada:
    {
      "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 um pedido resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "autoscalingPolicies") getIamPolicy para obter a política IAM para o recurso.

    Exemplo de getIamPolicy do cluster:

    GET https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:getIamPolicy
    
  2. O conteúdo do ficheiro JSON é 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. Usando um editor de texto, crie o seguinte objeto JSON policy para incluir a matriz de associações que acabou de receber do serviço Dataproc. Certifique-se de que devolve o valor "etag" que recebeu na resposta getIamPolicy (consulte a documentação etag). Agora, adicione um novo objeto de associação à matriz de associações que define os utilizadores e a função de acesso ao cluster para esses utilizadores. Por exemplo, para conceder a função de leitor (roles/viewer) ao utilizador sean@example.com, alteraria o exemplo acima para adicionar um novo objeto de associaçã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 emitindo um pedido setIamPolicy.

    Cluster setIamPolicy Exemplo:

    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 JSON tem um aspeto 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"
    }
    

Consola

Aceda à página Clusters do Dataproc na Google Cloud consola e, de seguida, clique na caixa à esquerda do nome do cluster para abrir o painel Permissões/Etiquetas (se o painel não for apresentado, clique em MOSTRAR PAINEL DE INFORMAÇÕES na parte superior direita da página). No separador Autorizações, selecione a função Dataproc, adicione um ou mais endereços de contas na caixa Adicionar responsáveis e, de seguida, clique em Adicionar.

Comandos do SDK ativados pela IAM detalhada

Esta secção descreve os comandos gcloud dataproc ativados nos recursos do Dataproc por cada função de IAM detalhada.

Clusters

Função de 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

Empregos

Função de 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

Função de 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

Função de 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 ajuste de escala automático

Função de 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

Envie tarefas com a IAM detalhada

Para permitir que um principal (utilizador, grupo ou conta de serviço) envie tarefas para um cluster especificado através do IAM granular do Dataproc, além de conceder a um utilizador uma função de editor num cluster, têm de ser definidas autorizações adicionais ao nível do projeto. Seguem-se os passos a realizar para permitir que um principal envie tarefas num cluster do Dataproc especificado:

  1. Crie um contentor do Cloud Storage que o cluster possa usar para se ligar ao Cloud Storage.
  2. Adicione o principal à política ao nível do contentor, selecionando a função de leitor de objetos de armazenamento para o principal (consulte roles/storage.objectViewer), que inclui as seguintes autorizações:
    1. storage.objects.get
    2. storage.objects.list
  3. Quando criar o cluster, transmita o nome do contentor que acabou de criar para o cluster através do parâmetro --bucket (consulte gcloud dataproc clusters create --bucket).
  4. Após a criação do cluster, defina uma política no cluster que conceda ao principal uma função de editor ou proprietário (consulte o artigo Use o IAM detalhado do Dataproc).
  5. Crie uma função personalizada do IAM com as seguintes autorizações:
    1. dataproc.jobs.create
    2. dataproc.jobs.get
  6. Selecione ou adicione o principal na página Google Cloud consola IAM e, de seguida, selecione a função personalizada para a aplicar ao principal.