La gestión de identidades y accesos granular de Dataproc es una función que te permite conceder permisos a nivel de clúster, tarea, operación, plantilla de flujo de trabajo o política de escalado automático.
Por ejemplo, puedes asignar a un usuario el rol Lector de clúster, que le permite ver un clúster de un proyecto, y asignar a otro usuario el rol Editor de trabajos, que le permite actualizar, cancelar y ver el trabajo. Para saber qué comandos específicos de la CLI de Google Cloud habilita cada rol de gestión de identidades y accesos granular de Dataproc, consulta Comandos del SDK habilitados por la gestión de identidades y accesos granular.
Roles y permisos de gestión de identidades y accesos granulares de Dataproc
La gestión de identidades y accesos granular de Dataproc puede definir 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 |
Cargos
Rol | Permisos |
---|---|
Lector | dataproc.jobs.get |
Editor | dataproc.jobs.get dataproc.jobs.cancel dataproc.jobs.delete dataproc.jobs.update |
Propietario | 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 |
Propietario | dataproc.jobs.get dataproc.operations.cancel dataproc.operations.delete dataproc.operations.setIamPolicy dataproc.operations.getIamPolicy |
Roles de plantilla de flujo de trabajo
Rol | Permisos |
---|---|
Lector | dataproc.workflowTemplates.get |
Editor | dataproc.workflowTemplates.get dataproc.workflowTemplates.delete dataproc.workflowTemplates.update |
Propietario | dataproc.workflowTemplates.get dataproc.workflowTemplates.delete dataproc.workflowTemplates.update dataproc.workflowTemplates.setIamPolicy dataproc.workflowTemplates.getIamPolicy |
Roles de política de autoescalado
Rol | Permisos |
---|---|
Lector | dataproc.autoscalingPolicies.get |
Editor | dataproc.autoscalingPolicies.get dataproc.autoscalingPolicies.use dataproc.autoscalingPolicies.delete dataproc.autoscalingPolicies.update |
Propietario | dataproc.autoscalingPolicies.get dataproc.autoscalingPolicies.use dataproc.autoscalingPolicies.delete dataproc.autoscalingPolicies.update dataproc.autoscalingPolicies.setIamPolicy dataproc.autoscalingPolicies.getIamPolicy |
Usar la gestión de identidades y accesos granular de Dataproc
En esta sección se explica cómo usar IAM granular de Dataproc para asignar roles a los usuarios en un recurso de Dataproc. Para obtener más información sobre cómo actualizar y quitar roles de gestión de identidades y accesos (IAM), consulta el artículo Administra el acceso a proyectos, carpetas y organizaciones.
Comando gcloud
- Obtén la política de gestión de identidades y accesos del recurso y escríbela en un archivo JSON (resource-type puede ser "clusters", "jobs", "operations", "workflow-templates" o "autoscaling-policies"):
gcloud dataproc resource-type get-iam-policy resource-id \ --region=region \ --format=json > iam.json
- El contenido del archivo JSON será similar al siguiente:
{ "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, añade un nuevo objeto de enlace al array de enlaces que define los usuarios y el rol de acceso al recurso de esos usuarios. Por ejemplo, para asignar el rol Lector (
roles/viewer
) al usuariosean@example.com
, cambiarías el ejemplo anterior para añadir un nuevo objeto de enlace (que se muestra en negrita en el siguiente ejemplo). Nota: Asegúrate de devolver el valoretag
que has recibido degcloud dataproc resource-type get-iam-policy
. Consulta la documentación 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" }
- Actualiza la política del clúster con la nueva matriz de enlaces ejecutando el siguiente comando (resource-type puede ser "clusters", "jobs", "operations", "workflow-templates" o "autoscaling-policies"):
gcloud dataproc resource-type set-iam-policy resource-name \ --region=region \ --format=json iam.json
- El comando muestra 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 REST
- Envía una solicitud resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "autoscalingPolicies") getIamPolicy para obtener la política de gestión de identidades y accesos del recurso.
Ejemplo de getIamPolicy de clúster:
GET https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:getIamPolicy
- El contenido del archivo JSON será similar al siguiente:
{ "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 policy JSON para incluir la matriz de enlaces que acabas de recibir del servicio Dataproc. Asegúrate de devolver el valor "etag" que has recibido en la respuesta getIamPolicy (consulta la documentación de etag).
Ahora, añade un nuevo objeto de enlace al array de enlaces que define los usuarios y el rol de acceso al clúster de esos usuarios. Por ejemplo, para conceder el rol Lector (
roles/viewer
) al usuariosean@example.com
, cambiarías el ejemplo anterior para añadir un nuevo objeto de enlace (que se muestra en negrita más abajo).{ "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" } }
- Define la política actualizada en el recurso enviando una
setIamPolicy
solicitud.Clúster setIamPolicy Ejemplo:
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 será similar al siguiente:
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" }
Consola
Ve a la página Clústeres de Dataproc de la consola de Google Cloud y, a continuación, haz clic en la casilla situada a la izquierda del nombre del clúster para abrir el panel Permisos/Etiquetas (si el panel no se muestra, 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, añade una o varias direcciones de cuenta en el cuadro Añadir principales y, a continuación, haz clic en Añadir.

Comandos del SDK habilitados por la gestión de identidades y accesos granular
En esta sección se describen los comandos gcloud dataproc
habilitados en los recursos de Dataproc por cada rol de gestión de identidades y accesos granular.
Clústeres
Rol de IAM | Comando |
---|---|
Lector | 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 |
Propietario | 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 |
Empleo
Rol de IAM | Comando |
---|---|
Lector | 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 |
Propietario | 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 |
Operaciones
Rol de IAM | Comando |
---|---|
Lector | 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 |
Propietario | 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 |
Plantillas de flujo de trabajo
Rol de IAM | Comando |
---|---|
Lector | 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 |
Propietario | 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 autoescalado
Rol de IAM | Comando |
---|---|
Lector | 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 |
Propietario | 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 tareas con gestión de identidades y accesos granular
Para permitir que una entidad (usuario, grupo o cuenta de servicio) envíe trabajos a un clúster específico mediante la gestión de identidades y accesos granular de Dataproc, además de conceder a un usuario el rol Editor en un clúster, se deben definir permisos adicionales a nivel de proyecto. Estos son los pasos que debes seguir para permitir que una entidad envíe trabajos en un clúster de Dataproc específico:
- Crea un segmento de Cloud Storage que tu clúster pueda usar para conectarse a Cloud Storage.
- Añade la cuenta principal a la política a nivel de cubo y selecciona el rol Lector de objetos de Storage para la cuenta principal (consulta
roles/storage.objectViewer
), que incluye los siguientes permisos:storage.objects.get
storage.objects.list
- Cuando crees el clúster, pásale el nombre del segmento que acabas de crear
con el parámetro
--bucket
(consultagcloud dataproc clusters create --bucket
). - Una vez creado el clúster, define una política en él que conceda al principal el rol de editor o propietario (consulta Usar la gestión de identidades y accesos granular de Dataproc).
- Crea un rol personalizado de gestión de identidades y accesos
con los siguientes permisos:
dataproc.jobs.create
dataproc.jobs.get
- Selecciona o añade el principal en la página IAM de la Google Cloud consola y, a continuación, selecciona el rol personalizado para aplicarlo al principal.