Permisos de Dataproc y funciones de IAM

Descripción general

La administración de identidades y accesos (IAM) te permite controlar el acceso de usuarios y grupos a los recursos de tu 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 específicas en los clústeres, los trabajos, las operaciones y las plantillas de flujo de trabajo de Dataproc. Por ejemplo, el permiso dataproc.clusters.create permite que un usuario cree clústeres de Dataproc en tu proyecto. No se otorgan permisos a los usuarios directamente, 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 la CLI de Google Cloud.
  2. El permiso dataproc.clusters.get también es necesario para obtener el resultado de la operación de la CLI de Google Cloud.
  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. Además, la CLI de Google Cloud requiere dataproc.jobs.get para que los comandos jobs submit, jobs wait, jobs update, jobs delete y jobs kill funcionen correctamente.

  2. Además, la CLI de Google Cloud requiere el permiso dataproc.clusters.get para enviar trabajos. Para ver un ejemplo de cómo configurar los permisos necesarios a fin de que un usuario ejecute gcloud dataproc jobs submit en un clúster específico 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 plantilla 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, la CLI de Google Cloud 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.

Funciones de Dataproc

Las funciones de IAM de Dataproc son un conjunto de uno o más permisos. Debes otorgar funciones a usuarios o grupos para permitirles realizar acciones en los recursos de Dataproc de tu 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..
  • Se necesitan o recomiendan los permisos compute mencionados anteriormente para crear y ver clústeres de Dataproc cuando se usa Google Cloud Console o la CLI de Google Cloud 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. Ten en cuenta que otorgar cualquiera de estas funciones de Storage le da al usuario la capacidad de acceder a cualquier bucket del proyecto.
  • Un usuario debe tener el permiso monitoring.timeSeries.list para ver los gráficos de la pestaña Descripción general en Google Cloud Console→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 Google Cloud Console→Dataproc→Detalles del clúster. Para obtener información sobre las funciones de Google Compute Engine, consulta Compute Engine→Funciones 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 una lista de funciones adicionales.

Funciones de proyecto

También puedes establecer permisos a nivel del proyecto mediante las funciones de Proyecto de IAM. Aquí hay un resumen de 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

La siguiente tabla resume las operaciones de Dataproc disponibles según la función otorgada al usuario y se señalan algunas advertencias.

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 incluyen archivos para subir no se pueden enviar, a menos que el usuario también tenga la función de Creador de objeto de Storage o se le haya otorgado acceso de escritura al bucket de etapa de pruebas para el proyecto.
  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 API de Dataproc para realizar acciones en un proyecto en el que se encuentra tu clúster, como crear instancias de VM en el proyecto, Dataproc realiza estas acciones en tu nombre mediante 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 configurar políticas de IAM mediante Google Cloud Console, la API de IAM o la CLI de Google Cloud.

¿Qué sigue?