Permisos y roles de IAM de Dataproc

Descripción general

La administración de identidades y accesos (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, 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 un proyecto. Por lo general, no otorgas 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 APIs asociadas a cada recurso de Dataproc (clústeres, trabajos, operaciones y plantillas de flujo de trabajo).

Alcance de los permisos: El alcance de los permisos de Dataproc que se muestran en las siguientes tablas es el proyecto de Google Cloud en el que se otorgan (alcance de cloud-platform). Consulta Permisos de la cuenta de servicio.

Ejemplos:

  • dataproc.clusters.create permite la creación de clústeres de Dataproc en el proyecto en el que se otorga.
  • dataproc.jobs.create permite el envío de trabajos de Dataproc a clústeres de Dataproc en el proyecto que los contiene.
  • dataproc.clusters.list permite mostrar una lista de detalles de los clústeres de Dataproc en el proyecto en el que se otorga.

Permisos necesarios de los métodos 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. También se requiere el permiso dataproc.operations.get para obtener actualizaciones de estado de Google Cloud CLI.
  2. Asimismo, se requiere el permiso dataproc.clusters.get para obtener el resultado de la operación en 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 necesarios de los métodos de Jobs

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 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. 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 con la IAM detallada de Dataproc (consulta Cómo enviar trabajos con la IAM detallada).

Permisos necesarios de los métodos 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 necesarios de los métodos 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 necesarios de los métodos 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 necesarios de los métodos de 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. Debes otorgar roles a usuarios o grupos para permitirles realizar acciones en los recursos de Dataproc de un proyecto. Por ejemplo, el rol de Visualizador de Dataproc contiene los permisos get y 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.

Permisos

(roles/dataproc.admin)

Control total de los recursos de Dataproc.

compute.machineTypes.*

compute.networks.get

compute.networks.list

compute.projects.get

compute.regions.*

compute.zones.*

dataproc.autoscalingPolicies.*

dataproc.batches.analyze

dataproc.batches.cancel

dataproc.batches.create

dataproc.batches.delete

dataproc.batches.get

dataproc.batches.list

dataproc.batches.sparkApplicationRead

dataproc.clusters.*

dataproc.jobs.*

dataproc.nodeGroups.*

dataproc.operations.*

dataproc.sessionTemplates.*

dataproc.sessions.create

dataproc.sessions.delete

dataproc.sessions.get

dataproc.sessions.list

dataproc.sessions.sparkApplicationRead

dataproc.sessions.terminate

dataproc.workflowTemplates.*

dataprocrm.nodePools.*

dataprocrm.nodes.get

dataprocrm.nodes.heartbeat

dataprocrm.nodes.list

dataprocrm.nodes.update

dataprocrm.operations.get

dataprocrm.operations.list

dataprocrm.workloads.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataproc.editor)

Proporciona los permisos necesarios para ver los recursos requeridos a fin de administrar Dataproc, incluidos los tipos de máquinas, redes, proyectos y zonas.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Clúster

compute.machineTypes.*

compute.networks.get

compute.networks.list

compute.projects.get

compute.regions.*

compute.zones.*

dataproc.autoscalingPolicies.create

dataproc.autoscalingPolicies.delete

dataproc.autoscalingPolicies.get

dataproc.autoscalingPolicies.list

dataproc.autoscalingPolicies.update

dataproc.autoscalingPolicies.use

dataproc.batches.analyze

dataproc.batches.cancel

dataproc.batches.create

dataproc.batches.delete

dataproc.batches.get

dataproc.batches.list

dataproc.batches.sparkApplicationRead

dataproc.clusters.create

dataproc.clusters.delete

dataproc.clusters.get

dataproc.clusters.list

dataproc.clusters.start

dataproc.clusters.stop

dataproc.clusters.update

dataproc.clusters.use

dataproc.jobs.cancel

dataproc.jobs.create

dataproc.jobs.delete

dataproc.jobs.get

dataproc.jobs.list

dataproc.jobs.update

dataproc.nodeGroups.*

dataproc.operations.cancel

dataproc.operations.delete

dataproc.operations.get

dataproc.operations.list

dataproc.sessionTemplates.*

dataproc.sessions.create

dataproc.sessions.delete

dataproc.sessions.get

dataproc.sessions.list

dataproc.sessions.sparkApplicationRead

dataproc.sessions.terminate

dataproc.workflowTemplates.create

dataproc.workflowTemplates.delete

dataproc.workflowTemplates.get

dataproc.workflowTemplates.instantiate

dataproc.workflowTemplates.instantiateInline

dataproc.workflowTemplates.list

dataproc.workflowTemplates.update

dataprocrm.nodePools.*

dataprocrm.nodes.get

dataprocrm.nodes.heartbeat

dataprocrm.nodes.list

dataprocrm.nodes.update

dataprocrm.operations.get

dataprocrm.operations.list

dataprocrm.workloads.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataproc.hubAgent)

Permite la administración de los recursos de Dataproc. Está destinada a las cuentas de servicio que ejecutan instancias de Dataproc Hub.

compute.instances.get

compute.instances.setMetadata

compute.instances.setTags

compute.zoneOperations.get

compute.zones.list

dataproc.autoscalingPolicies.get

dataproc.autoscalingPolicies.list

dataproc.autoscalingPolicies.use

dataproc.clusters.create

dataproc.clusters.delete

dataproc.clusters.get

dataproc.clusters.list

dataproc.clusters.update

dataproc.operations.cancel

dataproc.operations.delete

dataproc.operations.get

dataproc.operations.list

iam.serviceAccounts.actAs

iam.serviceAccounts.get

iam.serviceAccounts.list

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

logging.logEntries.create

logging.logEntries.list

logging.logEntries.route

logging.logMetrics.get

logging.logMetrics.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

storage.buckets.get

storage.objects.get

storage.objects.list

(roles/dataproc.viewer)

Acceso de solo lectura a los recursos de Dataproc.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Clúster

compute.machineTypes.get

compute.regions.*

compute.zones.*

dataproc.autoscalingPolicies.get

dataproc.autoscalingPolicies.list

dataproc.batches.analyze

dataproc.batches.get

dataproc.batches.list

dataproc.batches.sparkApplicationRead

dataproc.clusters.get

dataproc.clusters.list

dataproc.jobs.get

dataproc.jobs.list

dataproc.nodeGroups.get

dataproc.operations.get

dataproc.operations.list

dataproc.sessionTemplates.get

dataproc.sessionTemplates.list

dataproc.sessions.get

dataproc.sessions.list

dataproc.sessions.sparkApplicationRead

dataproc.workflowTemplates.get

dataproc.workflowTemplates.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataproc.worker)

Proporciona acceso de trabajador a los recursos de Dataproc. Se orienta a cuentas de servicio.

cloudprofiler.profiles.create

cloudprofiler.profiles.update

dataproc.agents.*

dataproc.batches.sparkApplicationWrite

dataproc.sessions.sparkApplicationWrite

dataproc.tasks.*

dataprocrm.nodes.mintOAuthToken

logging.logEntries.create

logging.logEntries.route

monitoring.metricDescriptors.create

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.monitoredResourceDescriptors.*

monitoring.timeSeries.create

storage.buckets.get

storage.folders.*

storage.managedFolders.create

storage.managedFolders.delete

storage.managedFolders.get

storage.managedFolders.list

storage.multipartUploads.*

storage.objects.*

Notas:

  • Se necesitan o recomiendan los permisos de compute para crear y ver clústeres de Dataproc cuando se usa la consola de Google Cloud o la CLI de Google 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.
  • Un usuario debe tener el permiso monitoring.timeSeries.list para ver los gráficos de la pestaña Descripción general en 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 de la consola de Google Cloud→Dataproc→Detalles del clúster. Para obtener información sobre los roles de 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 otorgados por el rol Dataproc Worker, que incluye el acceso a los buckets temporales y de preparación de Dataproc. Es posible que se requieran funciones adicionales según las características configuradas. Consulta Crea un clúster con una cuenta de servicio de VM personalizada 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 los roles del 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 el rol de 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 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 con la consola de Google Cloud, la API de IAM o Google Cloud CLI.

¿Qué sigue?