La IAM detallada de Dataproc es una función que te permite otorgar permisos a nivel de políticas de ajuste de escala automático, clúster, trabajos, operaciones o plantilla de flujo de trabajo.
Ejemplo: Puedes otorgar a un usuario la función de visualizador de clúster, que le permite ver un clúster dentro de un proyecto, y otorgar a otro usuario la función de Editor de trabajos, que le permite, además de verlo, actualizar y cancelar el trabajo. Para comprender los comandos específicos de Google Cloud CLI que habilita cada función de la IAM detallada de Dataproc, consulta Comandos del SDK que habilita la IAM detallada.
Funciones y permisos de la IAM detallada de Dataproc
La IAM detallada de Dataproc puede establecer los siguientes roles con los siguientes permisos en los recursos de Dataproc.
Roles de clúster
| Rol | Permisos |
|---|---|
| Lector | 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 |
| Propietario | 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 |
Puestos
| Rol | Permisos |
|---|---|
| Lector | dataproc.jobs.get |
| Editor | dataproc.jobs.get dataproc.jobs.cancel dataproc.jobs.delete dataproc.jobs.update |
| Owner | dataproc.jobs.get dataproc.jobs.cancel dataproc.jobs.delete dataproc.jobs.update dataproc.jobs.setIamPolicy dataproc.jobs.getIamPolicy |
Roles de operación
| Rol | Permisos |
|---|---|
| Lector | dataproc.operations.get |
| Editor | dataproc.jobs.get dataproc.operations.cancel dataproc.operations.delete |
| Owner | dataproc.jobs.get dataproc.operations.cancel dataproc.operations.delete dataproc.operations.setIamPolicy dataproc.operations.getIamPolicy |
Roles de plantillas de flujo de trabajo
| Rol | Permisos |
|---|---|
| Lector | dataproc.workflowTemplates.get |
| Editor | dataproc.workflowTemplates.get dataproc.workflowTemplates.delete dataproc.workflowTemplates.update |
| Owner | dataproc.workflowTemplates.get dataproc.workflowTemplates.delete dataproc.workflowTemplates.update dataproc.workflowTemplates.setIamPolicy dataproc.workflowTemplates.getIamPolicy |
Roles de política de ajuste de escala automático
| Rol | Permisos |
|---|---|
| Lector | dataproc.autoscalingPolicies.get |
| Editor | dataproc.autoscalingPolicies.get dataproc.autoscalingPolicies.use dataproc.autoscalingPolicies.delete dataproc.autoscalingPolicies.update |
| Owner | dataproc.autoscalingPolicies.get dataproc.autoscalingPolicies.use dataproc.autoscalingPolicies.delete dataproc.autoscalingPolicies.update dataproc.autoscalingPolicies.setIamPolicy dataproc.autoscalingPolicies.getIamPolicy |
Usa la IAM detallada de Dataproc
En esta sección, se explica cómo usar la IAM detallada de Dataproc para asignar roles a los usuarios en un recurso existente de Dataproc. Para obtener más información sobre cómo actualizar y quitar roles de Identity and Access Management (IAM), consulta Administra el acceso a proyectos, carpetas y organizaciones.
Comando de gcloud
- Obtén la política de IAM del recurso y escríbela en un archivo JSON (la resource-type puede ser "clústeres", "trabajos", "operaciones", "plantillas de flujo de trabajo" o "políticas de ajuste de escala automático"):
gcloud dataproc resource-type get-iam-policy resource-id \ --region=region \ --format=json > iam.json
- El contenido del archivo JSON se verá similar al siguiente ejemplo:
{ "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" } - Con un editor de texto, agrega un objeto de vinculación nuevo al arreglo de vinculación que define los usuarios y la función de acceso a los recursos para esos usuarios. Por ejemplo, para otorgar la función de Visualizador (
roles/viewer) al usuariosean@example.com, cambiarías el ejemplo anterior para agregar un nuevo objeto de vinculación (se muestra en negrita en el siguiente ejemplo). Nota: Asegúrate de devolver el valoretagque recibiste degcloud dataproc resource-type get-iam-policy. Consulta la documentación de las etiquetas 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" } - Actualiza la política del clúster con el arreglo de vinculación nuevo mediante la ejecución del siguiente comando (resource-type puede ser "clústeres", "trabajos", "operaciones", "plantillas de flujo de trabajo" o "políticas de ajuste de escala automático"):
gcloud dataproc resource-type set-iam-policy resource-name \ --region=region \ --format=json iam.json
- El comando genera la política actualizada:
{ "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 de REST
- Emite una solicitud getIamPolicy resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "autoscalingPolicies") para obtener la política de IAM del recurso.
Ejemplo de clúster getIamPolicy:
GET https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:getIamPolicy
- El contenido del archivo JSON se verá similar al siguiente ejemplo:
{ "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" } - Con un editor de texto, crea el siguiente objeto de política JSON para encerrar los arreglos de vinculación que recibiste del servicio de Dataproc. Asegúrate de mostrar el valor “ETag” que recibiste en la respuesta de getIamPolicy (consulta la documentación de ETag).
Ahora, agrega un objeto de vinculación nuevo al arreglo de vinculación que define los usuarios y la función de acceso al clúster para esos usuarios. Por ejemplo, para otorgar la función Lector (
roles/viewer) al usuariosean@example.com, cambiarías el ejemplo anterior para agregar un nuevo objeto de vinculación (se muestra en negrita, a continuación).{ "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" } } - Establece la política actualizada en el recurso enviando una solicitud
setIamPolicy.Ejemplo de clúster 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" } } - El contenido de la respuesta JSON se verá similar al siguiente ejemplo:
Respuesta
{ "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
Ve a la página Clústeres de Dataproc en la Google Cloud consola y haz clic en el cuadro a la izquierda del nombre del clúster para abrir el panel Permisos/Etiquetas (si el panel no aparece, haz clic en MOSTRAR PANEL DE INFORMACIÓN en la parte superior derecha de la página). En la pestaña Permisos, selecciona el rol de Dataproc, agrega una o más direcciones de cuenta en el cuadro Agregar principales y, luego, haz clic en Agregar.
Comandos del SDK que habilita la IAM detallada
En esta sección, se describen los comandos de gcloud dataproc habilitados en los recursos de Dataproc por cada rol de IAM detallado.
Clústeres
| Función de IAM | Comando |
|---|---|
| Lector | 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 |
| Propietario | 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 |
Trabajos
| Función de IAM | Comando |
|---|---|
| Lector | 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 |
| Propietario | 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 |
Operaciones
| Función de IAM | Comando |
|---|---|
| Lector | gcloud dataproc operations describe operation-id |
| Editor | gcloud dataproc operations delete operation-idgcloud dataproc operations describe operation-idgcloud dataproc operations cancel operation-id |
| Propietario | 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 |
Plantillas de flujos de trabajo
| Función de IAM | Comando |
|---|---|
| Lector | 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 |
| Propietario | 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 ajuste de escala automático
| Función de IAM | Comando |
|---|---|
| Lector | 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 |
| Propietario | 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 |
Envía trabajos con la IAM detallada
Para permitir a un principal (usuario, grupo o cuenta de servicio) enviar trabajos a un clúster específico con la IAM detallada de Cloud Dataproc, además de otorgar a un usuario la función de Editor en un clúster, se deben establecer permisos adicionales a nivel de proyecto. Estos son los pasos que se deben seguir para permitir a un principal enviar trabajos en un clúster específico de Dataproc:
- Crea un depósito de Cloud Storage que pueda usar tu clúster para conectarse a Cloud Storage.
- Agrega el principal a la política a nivel bucket y selecciona la función Visualizador de objetos de almacenamiento para el principal (consulta
roles/storage.objectViewer), que incluye los siguientes permisos:storage.objects.getstorage.objects.list
- Cuando crees el clúster, pasa el nombre del bucket que acabas de crear a tu clúster con el parámetro
--bucket(consultagcloud dataproc clusters create --bucket). - Después de crear el clúster, establece una política en este que le otorgue al principal la función de Editor o Propietario (consulta Usa la IAM detallada de Dataproc).
- Crea una función personalizada de IAM con los siguientes permisos:
dataproc.jobs.createdataproc.jobs.get
- Selecciona o agrega el principal en la página IAM de la consola de Google Cloud y, luego, selecciona el rol personalizado para aplicarlo al principal.