Cuentas de servicio

En esta página se describen las cuentas de servicio y cómo se pueden usar con Dataproc.

¿Qué son las cuentas de servicio?

Una cuenta de servicio es una cuenta especial que pueden usar los servicios y aplicaciones que se ejecutan en tu instancia de Compute Engine para interactuar con otras API de Google Cloud. Las aplicaciones pueden usar las credenciales de la cuenta de servicio con el fin de otorgarse autorización para trabajar con un conjunto de API y realizar acciones dentro de los permisos otorgados a la cuenta de servicio y la instancia de máquina virtual.

Cuando se crean, las máquinas virtuales de Compute Engine se pueden configurar para usar una cuenta de servicio específica. Si no se especifica una cuenta de servicio, se usa una cuenta de servicio predeterminada. Para obtener más información, revisa la documentación sobre las cuentas de servicio de Compute Engine.

Cuentas de servicio en Dataproc

Los clústeres de Dataproc se compilan sobre las máquinas virtuales de Compute Engine. Si se especifica una cuenta de servicio administrada por el usuario cuando se crea un clúster de Dataproc, podrás usar esa cuenta de servicio para máquinas virtuales de Dataproc en ese clúster. Si no se especifica una cuenta de servicio, las máquinas virtuales de Dataproc usarán la cuenta de servicio predeterminada de Compute Engine administrada por Google [project-number]-compute@developer.gserviceaccount.com.

¿Por qué especificar una cuenta de servicio?

Las cuentas de servicio tienen funciones de IAM otorgadas. Especificar una cuenta de servicio administrada por el usuario cuando se crea un clúster de Dataproc te permite crear y utilizar clústeres con control y acceso detallado a los recursos de Cloud. El uso de cuentas de servicio administradas por el usuario con clústeres diferentes de Dataproc permite que los clústeres tengan un acceso diferente a los recursos de Cloud.

Limitaciones y requisitos de cuenta de servicio

  • Solo se pueden configurar cuentas de servicio cuando se crea un clúster.
  • Debes crear una cuenta de servicio antes de crear el clúster de Dataproc que se asociará con la cuenta de servicio.
  • Una vez configurada, no se puede modificar la cuenta de servicio usada para un clúster.
  • Asegúrate de que las cuentas de servicio tengan alcances apropiados y funciones de IAM para tus necesidades.
  • Las cuentas de servicio que se usan con Dataproc deben tener la función Dataproc/Trabajador de Dataproc (o tener todos los permisos otorgados por la función de Trabajador de Dataproc).
  • Las cuentas de servicio deben residir dentro del proyecto en el que se creará el clúster.
  • Las máquinas virtuales de Compute Engine usadas en los clústeres de Dataproc todavía necesitan permisos de acceso específicos. Los permisos de acceso también se limitan al servicio al que se aplican. Por ejemplo, si a un clúster de Dataproc solo se le otorgó el permiso https://www.googleapis.com/auth/storage-full de Cloud Storage, entonces no puede usar el mismo permiso para realizar solicitudes a BigQuery.

Permisos predeterminados y mínimos

Si no se especifican los permisos de la cuenta de servicio, Dataproc usa el siguiente conjunto predeterminado de permisos:

https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/bigtable.admin.table
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
Si se especifican permisos personalizados, Dataproc usa la combinación de los permisos especificados por el usuario y el siguiente conjunto de permisos mínimos requeridos por Dataproc:
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

Usa cuentas de servicio

Puedes especificar una cuenta de servicio administrada por el usuario cuando creas un clúster nuevo de Dataproc a través de la solicitud de API de Dataproc clusters.create o mediante el uso de la herramienta de línea de comandos de gcloud del SDK de Cloud.

Comando de gcloud

Usa el comando de creación de clústeres de gcloud para crear un clúster nuevo con una nueva cuenta de servicio especificada por el usuario y acceder a los alcances.
gcloud dataproc clusters create cluster-name \
    --region=region \
    --service-account=service-account-name@project-id.iam.gserviceaccount.com \
    --scopes=scope[, ...]

API de REST

Puedes configurar serviceAccount y serviceAccountScopes en el objeto GceClusterConfig como parte de la solicitud a la API clusters.create.

Console

Se agregará la compatibilidad con Dataproc para configurar cuentas de servicio administradas por el usuario en Cloud Console en una versión futura.

¿Qué sigue?