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
- 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 valoretagque você recebeu degcloud 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" } - 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
- 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 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á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:
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 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-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 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:
- 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
- Na criação do cluster, transmita a ele o nome do bucket recém-criado
usando o parâmetro
--bucket. Para mais informações, consultegcloud dataproc clusters create --bucket. - 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.
- Crie uma função personalizada do IAM
com as seguintes permissões:
dataproc.jobs.createdataproc.jobs.get
- Selecione ou adicione o principal na página IAM do console e selecione a função personalizada que será aplicada a ele. Google Cloud