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 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 Dataproc, consulte Comandos do SDK ativados pelo IAM granular.
Permissões e papéis granulares do IAM no Dataproc
O IAM granular do Dataproc pode definir os seguintes papéis com as seguintes permissões em recursos do Dataproc.
Funções do 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 |
Funções 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 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. 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
- 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 leitor (
roles/viewer) ao usuáriosean@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 valoretagrecebido 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 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 "Dataproc", adicione um ou mais endereços de conta na caixa Adicionar principais e clique em Adicionar.
Comandos do SDK ativados pelo IAM granular
Nesta seção, descrevemos 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-namegcloud dataproc clusters listgcloud dataproc clusters delete cluster-namegcloud dataproc clusters diagnose cluster-namegcloud dataproc clusters update cluster-namegcloud beta dataproc clusters start cluster-namegcloud beta dataproc clusters stop cluster-name |
| Proprietário | gcloud dataproc clusters describe cluster-namegcloud dataproc clusters listgcloud dataproc clusters delete cluster-namegcloud dataproc clusters diagnose cluster-namegcloud dataproc clusters update cluster-namegcloud beta dataproc clusters start cluster-namegcloud beta dataproc clusters stop cluster-namegcloud dataproc clusters get-iam-policy cluster-namegcloud 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-idgcloud dataproc jobs describe job-idgcloud dataproc jobs kill job-idgcloud dataproc jobs update job-idgcloud dataproc jobs wait job-id |
| Proprietário | gcloud dataproc jobs delete job-idgcloud dataproc jobs describe job-idgcloud dataproc jobs kill job-idgcloud dataproc jobs update job-idgcloud dataproc jobs wait job-idgcloud dataproc jobs get-iam-policy job-idgcloud 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-idgcloud dataproc operations describe operation-idgcloud dataproc operations cancel operation-id |
| Proprietário | gcloud dataproc operations delete operation-idgcloud dataproc operations describe operation-idgcloud dataproc operations cancel operation-idgcloud dataproc operations get-iam-policy operation-idgcloud 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-idgcloud dataproc workflow-templates describe template-idgcloud dataproc workflow-templates remove-job template-idgcloud dataproc workflow-templates run template-id |
| Proprietário | gcloud dataproc workflow-templates delete template-idgcloud dataproc workflow-templates describe template-idgcloud dataproc workflow-templates remove-job template-idgcloud dataproc workflow-templates run template-idgcloud dataproc workflow-templates get-iam-policy template-idgcloud 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-idgcloud dataproc autoscaling-policies describe policy-idgcloud dataproc autoscaling-policies update policy-idgcloud dataproc clusters create cluster-name --autoscaling-policy policy-id |
| Proprietário | gcloud dataproc autoscaling-policies delete policy-idgcloud dataproc autoscaling-policies describe policy-idgcloud dataproc autoscaling-policies update policy-idgcloud dataproc clusters create cluster-name --autoscaling-policy policy-idgcloud dataproc autoscaling-policies get-iam-policy policy-idgcloud dataproc autoscaling-policies set-iam-policy policy-id |
Enviar jobs com o 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.getstorage.objects.list
- Ao criar o cluster, transmita o nome do bucket que você acabou de criar
usando o parâmetro
--bucket. Consultegcloud dataproc clusters create --bucket. - Depois de 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 Dataproc.
- Crie um papel personalizado do IAM
com as seguintes permissões:
dataproc.jobs.createdataproc.jobs.get
- Selecione ou adicione o principal na página IAM do console Google Cloud e selecione o papel personalizado para aplicar a ele.