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 da 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
- 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
- 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" }
- 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áriosean@example.com
, altere o exemplo acima para adicionar um novo objeto de vinculação (mostrado em negrito, abaixo). Observação: retorne o valoretag
recebido degcloud 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" }
- Atualize a política do cluster com a nova matriz de vinculações executando o seguinte comando (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 set-iam-policy resource-name \ --region=region \ --format=json iam.json
- 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
- 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
- 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" }
- 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áriosean@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" } }
- 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" } }
- 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 ele 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 "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:
- Crie um bucket do Cloud Storage que seu cluster possa usar para se conectar ao Cloud Storage.
- 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:storage.objects.get
storage.objects.list
- 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. - 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.
- Crie um papel personalizado do IAM
com as seguintes permissões:
dataproc.jobs.create
dataproc.jobs.get
- Selecionar ou adicionar o principal no console do Google Cloud IAM e selecione o papel personalizado para aplicá-lo ao principal.