IAM granular do Managed Service for Apache Spark

O IAM granular do Managed Service for Apache Spark é 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. Para entender os comandos específicos da Google Cloud CLI ativados por cada papel do IAM granular do Managed Service for Apache Spark, consulte Comandos do SDK ativados pelo IAM granular.

Papéis e permissões do IAM granular do Managed Service for Apache Spark

O IAM granular do Managed Service for Apache Spark pode definir os seguintes papéis com as seguintes permissões nos recursos do Managed Service for Apache Spark.

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

Funções

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

Usar o IAM granular do Managed Service for Apache Spark

Nesta seção, explicamos como usar o IAM granular do Managed Service for Apache Spark para atribuir papéis a usuários em um recurso existente do Managed Service for Apache Spark. Para mais informações sobre como atualizar e remover papéis do Identity and Access Management (IAM) , consulte Gerenciar o acesso a projetos, pastas e organizações.

Comando gcloud

  1. Acesse a política do IAM do recurso e a grave em um arquivo JSON ( a resource-type pode ser "clusters", "jobs", "operações", "modelos de fluxo de trabalho" ou "políticas de escalonamento automático"):
    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 Leitor (roles/viewer) ao usuário sean@example.com, altere o exemplo anterior para adicionar um novo objeto de vinculação (mostrado em negrito no exemplo a seguir). Observação: retorne o valor etag que você recebeu de gcloud dataproc resource-type get-iam-policy. Consulte a documentação 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 (resource-type pode ser "clusters", "jobs", "operações", "modelos de fluxo de trabalho" ou "políticas de escalonamento automático"):
    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 resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "autoscalingPolicies") getIamPolicy 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 Managed Service for Apache Spark . 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 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:

    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 Managed Service for Apache Spark no Google Cloud console e clique na caixa à esquerda do nome do cluster para abrir o painel Permissões/rótulos (se o painel não estiver sendo exibido), clique em MOSTRAR PAINEL DE INFORMAÇÕES no canto superior direito da página. Na guia "Permissões", selecione o papel do Managed Service for Apache Spark, adicione um ou mais endereços de conta na caixa Adicionar principais e clique em Adicionar.

Comandos do SDK ativados pelo IAM granular

Esta seção descreve os comandos gcloud dataproc ativados nos recursos do Managed Service for Apache Spark 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

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 Managed Service for Apache Spark, 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 Managed Service for Apache Spark:

  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 de Leitor de objetos do Storage para ele (veja 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 bucket recém-criado usando o parâmetro --bucket. Para mais informações, 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. Consulte Usar o IAM granular do Managed Service for Apache Spark.
  5. Crie uma função personalizada 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 e selecione a função personalizada que será aplicada a ele. Google Cloud