Funciones y permisos de IAM de Dataproc

Descripción general

Identity and Access Management (IAM) te permite controlar el acceso de usuarios y grupos a los recursos del proyecto. Este documento se enfoca en los permisos de IAM pertinentes para Dataproc y las funciones de IAM que otorgan esos permisos.

Permisos de Dataproc

Los permisos de Dataproc permiten que los usuarios, incluidas las cuentas de servicio, realicen acciones en los clústeres, trabajos, operaciones y plantillas de flujo de trabajo de Dataproc. Por ejemplo, el permiso dataproc.clusters.create permite que un usuario cree clústeres de Dataproc en un proyecto. Por lo general, no se otorgan permisos, sino funciones, que incluyen uno o más permisos.

Las siguientes tablas enumeran los permisos necesarios para llamar a las API de Dataproc (métodos). Las tablas se organizan según las API asociadas a cada recurso de Dataproc (clústeres, trabajos, operaciones y plantillas de flujo de trabajo).

Permisos de clústeres

Método Permisos necesarios
projects.regions.clusters.create 1, 2 dataproc.clusters.create
projects.regions.clusters.get dataproc.clusters.get
projects.regions.clusters.list dataproc.clusters.list
projects.regions.clusters.patch1, 2, 3 dataproc.clusters.update
projects.regions.clusters.delete1 dataproc.clusters.delete
projects.regions.clusters.start dataproc.clusters.start
projects.regions.clusters.stop dataproc.clusters.stop
projects.regions.clusters.getIamPolicy dataproc.clusters.getIamPolicy
projects.regions.clusters.setIamPolicy dataproc.clusters.setIamPolicy

Notas:

  1. El permiso dataproc.operations.get también es necesario para obtener actualizaciones de estado de Google Cloud CLI.
  2. También se requiere el permiso dataproc.clusters.get para obtener el resultado de la operación de Google Cloud CLI.
  3. dataproc.autoscalingPolicies.use también es necesario para habilitar una política de ajuste de escala automático en un clúster.

Permisos de trabajos

Método Permisos necesarios
projects.regions.jobs.submit 1, 2 dataproc.jobs.create
dataproc.clusters.use
projects.regions.jobs.get dataproc.jobs.get
projects.regions.jobs.list dataproc.jobs.list
projects.regions.jobs.cancel1 dataproc.jobs.cancel
projects.regions.jobs.patch1 dataproc.jobs.update
projects.regions.jobs.delete1 dataproc.jobs.delete
projects.regions.jobs.getIamPolicy dataproc.jobs.getIamPolicy
projects.regions.jobs.setIamPolicy dataproc.jobs.setIamPolicy

Notas:

  1. Google Cloud CLI también requiere el permiso dataproc.jobs.get para los comandos jobs submit, jobs wait, jobs update, jobs delete y jobs kill.

  2. Gcloud CLI también requiere el permiso dataproc.clusters.get para enviar trabajos. Si deseas ver un ejemplo de cómo configurar los permisos necesarios para que un usuario ejecute gcloud dataproc jobs submit en un clúster con la IAM detallada de Dataproc (consulta Envía trabajos con la IAM detallada).

Permisos de operaciones

Método Permisos necesarios
projects.regions.operations.get dataproc.operations.get
projects.regions.operations.list dataproc.operations.list
projects.regions.operations.cancel dataproc.operations.cancel
projects.regions.operations.delete dataproc.operations.delete
projects.regions.operations.getIamPolicy dataproc.operations.getIamPolicy
projects.regions.operations.setIamPolicy dataproc.operations.setIamPolicy

Permisos de plantillas de flujo de trabajo

Método Permisos necesarios
projects.regions.workflowTemplates.instantiate dataproc.workflowTemplates.instantiate
projects.regions.workflowTemplates.instantiateInline dataproc.workflowTemplates.instantiateInline
projects.regions.workflowTemplates.create dataproc.workflowTemplates.create
projects.regions.workflowTemplates.get dataproc.workflowTemplates.get
projects.regions.workflowTemplates.list dataproc.workflowTemplates.list
projects.regions.workflowTemplates.update dataproc.workflowTemplates.update
projects.regions.workflowTemplates.delete dataproc.workflowTemplates.delete
projects.regions.workflowTemplates.getIamPolicy dataproc.workflowTemplates.getIamPolicy
projects.regions.workflowTemplates.setIamPolicy dataproc.workflowTemplates.setIamPolicy

Notas:

  1. Los permisos de la plantilla de flujo de trabajo son independientes de los permisos de trabajo y clúster. Un usuario sin los permisos create cluster o submit job puede crear una instancia de una plantilla de flujo de trabajo.

  2. Además, Google Cloud CLI requiere el permiso dataproc.operations.get para sondear la finalización del flujo de trabajo.

  3. El permiso dataproc.operations.cancel es necesario para cancelar un flujo de trabajo en ejecución.

Permisos de las políticas de ajuste de escala automático

Método Permisos necesarios
projects.regions.autoscalingPolicies.create dataproc.autoscalingPolicies.create
projects.regions.autoscalingPolicies.get dataproc.autoscalingPolicies.get
projects.regions.autoscalingPolicies.list dataproc.autoscalingPolicies.list
projects.regions.autoscalingPolicies.update dataproc.autoscalingPolicies.update
projects.regions.autoscalingPolicies.delete dataproc.autoscalingPolicies.delete
projects.regions.autoscalingPolicies.getIamPolicy dataproc.autoscalingPolicies.getIamPolicy
projects.regions.autoscalingPolicies.setIamPolicy dataproc.autoscalingPolicies.setIamPolicy

Notas:

  1. dataproc.autoscalingPolicies.use es necesario para habilitar una política de ajuste de escala automático en un clúster con una solicitud del método clusters.patch.

Permisos de los grupos de nodos

Método Permisos necesarios
projects.regions.nodeGroups.create dataproc.nodeGroups.create
projects.regions.nodeGroups.get dataproc.nodeGroups.get
projects.regions.nodeGroups.resize dataproc.nodeGroups.update

Funciones de Dataproc

Las funciones de IAM de Dataproc son un conjunto de uno o más permisos. Otorgas funciones a usuarios o grupos para permitirles realizar acciones en los recursos de Dataproc de un proyecto. Por ejemplo, la función Visualizador de Dataproc contiene los permisos dataproc.*.get y dataproc.*.list, que permiten a un usuario obtener y enumerar una lista de clústeres, trabajos y operaciones de Dataproc de un proyecto.

En la siguiente tabla se muestran las funciones de IAM para Dataproc y los permisos que corresponden a cada función:

ID de función Permisos
roles/dataproc.admin dataproc.*.getIamPolicy
dataproc.*.setIamPolicy
dataproc.*.create
dataproc.*.get
dataproc.*.list
dataproc.*.delete
dataproc.*.update
dataproc.clusters.use
dataproc.clusters.start
dataproc.clusters.stop
dataproc.jobs.cancel
dataproc.workflowTemplates.instantiate
dataproc.workflowTemplates.instantiateInline
compute.machineTypes.get
compute.machineTypes.list
compute.networks.get
compute.networks.list
compute.projects.get
compute.regions.get
compute.regions.list
compute.zones.get
compute.zones.list
resourcemanager.projects.get
resourcemanager.projects.list
roles/dataproc.editor dataproc.*.create
dataproc.*.get
dataproc.*.list
dataproc.*.delete
dataproc.*.update
dataproc.clusters.use
dataproc.clusters.start
dataproc.clusters.stop
dataproc.jobs.cancel
dataproc.workflowTemplates.instantiate
dataproc.workflowTemplates.instantiateInline
compute.machineTypes.get
compute.machineTypes.list
compute.networks.get
compute.networks.list
compute.projects.get
compute.regions.get
compute.regions.list
compute.zones.get
compute.zones.list
resourcemanager.projects.get
resourcemanager.projects.list
roles/dataproc.viewer dataproc.*.get
dataproc.*.list
compute.machineTypes.get
compute.regions.get
compute.regions.list
compute.zones.get
resourcemanager.projects.get
resourcemanager.projects.list
roles/dataproc.worker (solo para cuentas de servicio) dataproc.agents.*
dataproc.tasks.*
logging.logEntries.create
monitoring.metricDescriptors.create
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.monitoredResourceDescriptors.get
monitoring.monitoredResourceDescriptors.list
monitoring.timeSeries.create
storage.buckets.get
storage.objects.create
storage.objects.get
storage.objects.list
storage.objects.update
storage.objects.delete
storage.objects.getIamPolicy
storage.objects.setIamPolicy

Notas:

  • "*" reemplaza a "clusters", "operations" o "jobs", excepto get, list y delete, que son los únicos permisos relacionados con dataproc.operations..
  • Los permisos de compute enumerados anteriormente son necesarios o recomendados para crear y ver clústeres de Dataproc cuando se usa la consola de Google Cloud o Google Cloud CLI de gcloud.
  • Para permitir que un usuario suba archivos, otorga la función Storage Object Creator. Para permitir que un usuario vea el resultado del trabajo, otorga la función Storage Object Viewer. Si se otorga cualquiera de estas funciones de Cloud Storage, el usuario podrá acceder a cualquier bucket del proyecto.
  • Un usuario debe tener el permiso monitoring.timeSeries.list para ver los gráficos en la pestaña Descripción general de la consola de Google Cloud→Dataproc→Detalles del clúster.
  • Un usuario debe tener el permiso compute.instances.list para ver el estado de la instancia y el menú SSH de la instancia principal en la pestaña Instancias de VM en la consola de Google Cloud→Dataproc→Detalles del clúster. Para obtener información sobre las funciones de Compute Engine, consulta Compute Engine→Roles de IAM disponibles.
  • Para crear un clúster con una cuenta de servicio especificada por el usuario, la cuenta de servicio debe tener todos los permisos que otorga la función Dataproc Worker. Es posible que se requieran funciones adicionales según las características configuradas. Consulta Cuentas de servicio para obtener más información.

Funciones de proyecto

También puedes establecer permisos a nivel del proyecto mediante las funciones de Proyecto de IAM. En la siguiente tabla, se enumeran los permisos asociados con las funciones de proyecto de IAM:

Función de proyecto Permisos
Visualizador del proyecto Todos los permisos de proyecto para acciones de solo lectura que conservan el estado (obtener y enumerar)
Editor de proyecto Todos los permisos de Lector del proyecto más todos los permisos del proyecto para acciones que modifican el estado (crear, borrar, actualizar, usar, detener y empezar)
Propietario del proyecto Todos los permisos de Editor del proyecto más los permisos para administrar el control de acceso del proyecto (obtener/configurar IamPolicy) y para configurar la facturación del proyecto

Funciones de IAM y resumen de operaciones de Dataproc

En la siguiente tabla, se enumeran las operaciones de Dataproc asociadas con las funciones de proyecto y de Dataproc.

Operación Editor de proyecto Visualizador del proyecto Administrador de Dataproc Editor de Dataproc Visualizador de Dataproc
Obtener o establecer permisos de IAM para Dataproc No No No No
Crear clúster No No
Mostrar clústeres
Obtener detalles del clúster 1, 2 1, 2 1, 2
Actualizar clúster No No
Borrar clúster No No
Iniciar/detener clúster No No
Enviar trabajo No 3 3 No
Mostrar trabajos
Obtener detalles del trabajo 4 4 4
Cancelar trabajo No No
Borrar trabajos No No
Mostrar lista de operaciones
Obtener detalles de la operación
Borrar operación No No

Notas:

  1. El gráfico de rendimiento no está disponible, a menos que el usuario también tenga una función con el permiso monitoring.timeSeries.list.
  2. La lista de VM del clúster no incluirá información del estado ni un vínculo SSH a la instancia principal, a menos que el usuario también tenga una función con el permiso compute.instances.list.
  3. Los trabajos que suben archivos requieren que el usuario tenga la función Storage Object Creator o acceso de escritura al bucket de etapa de pruebas de Dataproc.
  4. El resultado del trabajo no está disponible, a menos que el usuario también tenga la función de Lector del objeto de Storage o se le haya otorgado acceso de lectura al bucket de etapa de pruebas para el proyecto.

Cuentas de servicio

Cuando llamas a las APIs de Dataproc para realizar acciones en un proyecto, como crear instancias de VM, Dataproc realiza las acciones en tu nombre con una cuenta de servicio que tiene los permisos necesarios para realizarlas. Para obtener más información, consulta Cuentas de servicio de Dataproc.

Administración de IAM

Puedes obtener y establecer políticas de IAM con la consola de Google Cloud, la API de IAM o Google Cloud CLI.

¿Qué sigue?