Permisos de Dataproc y funciones de IAM

Descripción general

Google Cloud Identity and Access Management (IAM) te permite controlar el acceso de grupos y usuarios 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 realicen acciones específicas en clústeres y plantillas de flujo de trabajo, y en relación con trabajos y operaciones 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 directamente a los usuarios, 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.getIamPolicy dataproc.clusters.getIamPolicy
projects.regions.clusters.setIamPolicy dataproc.clusters.setIamPolicy

Notas:

  1. También se requiere el permiso dataproc.operations.get para obtener actualizaciones de estado mediante la herramienta de línea de comandos de gcloud.
  2. Asimismo, se requiere el permiso dataproc.clusters.get para obtener el resultado de la operación en la herramienta de línea de comandos de gcloud.
  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 herramienta de línea de comandos de gcloud requiere el permiso dataproc.jobs.get para que los comandos jobs submit, jobs wait, jobs update, jobs delete y jobs kill funcionen de manera correcta.

  2. Asimismo, la herramienta de línea de comandos de gcloud 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 Dataproc Granular IAM, consulta la documentación sobre cómo enviar 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 herramienta de línea de comandos de gcloud 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 Dataproc de Identity and Access Management (IAM) 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.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.editor dataproc.*.create
dataproc.*.get
dataproc.*.list
dataproc.*.delete
dataproc.*.update
dataproc.clusters.use
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 mencionados anteriormente son necesarios o recomendados para crear y ver clústeres de Dataproc cuando se usa Google Cloud Console o la herramienta de línea de comandos de gcloud del SDK de Cloud.
  • 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 brinda al usuario la capacidad de acceder a cualquier depósito 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 a nivel de proyecto de IAM. A continuación, se muestra un resumen de los permisos relacionados con estas funciones:

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 del 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 y cancelar)
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
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 la carga de archivos no se podrán enviar, a menos que el usuario también tenga la función de Creador de objetos de almacenamiento o se le haya otorgado acceso de escritura al depósito staging del proyecto.
  4. El resultado del trabajo no está disponible, a menos que el usuario también tenga la función de Visualizador de objetos de almacenamiento o se le haya otorgado acceso de lectura al depósito de staging del 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. Las cuentas de servicio que se indican a continuación tienen los permisos necesarios para realizar acciones de Dataproc en el proyecto en el que se encuentra el clúster:

  • Dataproc primero intenta usar service-[project-number]@dataproc-accounts.iam.gserviceaccount.com.
  • Si esa cuenta de servicio no existe, Dataproc recurrirá a la cuenta de servicio de las API de Google: [project-number]@cloudservices.gserviceaccount.com.

Si el clúster usa una red de VPC compartida, un Administrador de VPC compartida debe otorgarle a las cuentas de servicio la función de Usuario de red para el proyecto host de la VPC compartida. Para obtener más información, consulta:

Administración de IAM

Puedes obtener y configurar políticas de IAM con Google Cloud Console, la API de IAM o la herramienta de línea de comandos de gcloud.

Qué sigue