Principales de Dataproc y sus funciones

Cuando usas el servicio de Dataproc para crear clústeres y ejecutar trabajos en tus clústeres, el servicio configura los permisos de Dataproc y las funciones de IAM necesarios en tu proyecto a fin de usar y acceder a los recursos que Google Cloud necesita para realizar estas tareas. Sin embargo, si realizas un trabajo entre proyectos, por ejemplo, para acceder a los datos de otro proyecto, deberás configurar las funciones y los permisos necesarios a fin de acceder a los recursos entre proyectos.

Para ayudarte a realizar el trabajo entre proyectos de manera correcta, en este documento se enumeran los diferentes principales que usan el servicio de Dataproc, y las funciones y los permisos asociados necesarios para que esos principales usen y accedan a los recursos de Google Cloud.

Usuario de la API de Dataproc (identidad de usuario final)

Ejemplo: nombredeusuario@example.com

Este es el usuario final que llama al servicio de Dataproc. El usuario final suele ser una persona, pero también puede ser una cuenta de servicio si se invoca a Dataproc a través de un cliente de la API o de otro servicio de Google Cloud, como Compute Engine, Cloud Functions o Cloud Composer.

Permisos y funciones relacionados:

Es bueno saberlo

  • Los trabajos enviados por la API de Dataproc se ejecutan como raíz
  • Los clústeres de Dataproc heredan los metadatos SSH de Compute Engine en todo el proyecto, a menos que se bloqueen explícitamente mediante la configuración de --metadata=block-project-ssh-keys=true cuando creas el clúster (consulta metadatos de clústeres).
  • Si ejecutas gcloud compute ssh en un clúster de Dataproc para enviar un trabajo mediante la línea de comandos, los trabajos deben ejecutarse con el nombre de usuario registrado, pero esta autenticación no se aplica de forma predeterminada dentro de la VM.
  • Los directorios de usuarios HDFS se crean para cada usuario SSH a nivel de proyecto. Estos directorios HDFS se crean en el momento de la implementación del clúster, y nuevo un usuario SSH (posterior a la implementación) no recibirá un directorio HDFS en los clústeres existentes.

Agente del servicio de Dataproc (identidad del plano de control)

Ejemplo: service-project-number@dataproc-accounts.iam.gserviceaccount.com

Dataproc crea esta cuenta de servicio con la función de agente de servicios de Dataproc en el proyecto de Google Cloud de un usuario de Dataproc. Esta cuenta de servicio no se puede reemplazar por una cuenta de servicio especificada por el usuario cuando creas un clúster. No debes configurar esta cuenta de servicio, a menos que crees un clúster que use una red de VPC compartida en otro proyecto.

Esta cuenta de servicio se usa para realizar un amplio conjunto de operaciones del sistema, entre ellas:

  • Operaciones get y list para confirmar la configuración de recursos como imágenes, firewalls, acciones de inicialización de Dataproc y depósitos de Cloud Storage
  • Crear de forma automática el depósito de almacenamiento en etapa intermedia de Dataproc si el usuario no lo especificó
  • Escribir metadatos de configuración de clústeres en el depósito de etapa de pruebas
  • Crear recursos de Compute Engine, que incluyen instancias de VM, grupos de instancias y plantillas de instancias

Error relacionado: “La cuenta de servicio no tiene acceso de lectura o enumeración al recurso”.

Permisos y funciones relacionados:

  • Función: agente de servicios de Dataproc

Cuenta de servicio de VM de Dataproc (identidad del plano de datos)

Ejemplo: project-number-compute@developer.gserviceaccount.com

Las VM de Dataproc se ejecutan como esta cuenta de servicio. A los trabajos de usuario se les otorgan los permisos de esta cuenta de servicio: el código de la aplicación se ejecuta con esta cuenta de servicio en las VM de trabajador de Dataproc.

Puedes especificar una cuenta de servicio administrada por el usuario mediante la marca opcional --service-account con el comando de gcloud dataproc clusters create o la GceClusterConfig.serviceAccount como parte de una solicitud a la API clusters.create de Dataproc. Si no especificas una cuenta de servicio administrada por el usuario cuando creas un clúster, se usa la cuenta de servicio predeterminada de Compute Engine, incluida en el ejemplo anterior.

La cuenta de servicio de VM debe tener permisos para realizar lo siguiente:

  • comunicarse con el plano de control de Dataproc
  • leer y escribir en el depósito de etapa de pruebas de Dataproc

La cuenta de servicio de VM puede necesitar permisos de acuerdo con los requisitos de los trabajos para realizar lo siguiente:

  • Realizar operaciones de lectura y escritura en Cloud Storage, BigQuery, Cloud Logging y otros recursos de Google Cloud

Permisos y funciones relacionados:

Más información