Cuentas de servicio de Dataproc

En esta página se describen las cuentas de servicio y los permisos de acceso de las VM, y cómo se usan 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 una instancia de máquina virtual (VM) de Compute Engine para interactuar con otras API de Google Cloud. Las aplicaciones pueden usar credenciales de cuentas de servicio con el fin de otorgar autorización para trabajar con un conjunto de API y realizar acciones en la VM dentro de los permisos otorgados a la cuenta de servicio.

Cuentas de servicio de Dataproc

Las siguientes cuentas de servicio tienen los permisos necesarios para realizar acciones de Dataproc en el proyecto en el que se encuentra el clúster.

  • Cuenta de servicio del agente de servicio de Dataproc: Dataproc crea esta cuenta de servicio con la función Agente de servicio de Dataproc en el proyecto de Google Cloud del 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. Esta cuenta de agente de servicio se usa para realizar operaciones del plano de control de Dataproc, como la creación, la actualización y la eliminación de las VM del clúster (consulta Agente de servicio de Dataproc [identidad del plano de control]).

    De forma predeterminada, Dataproc usa service-[project-number]@dataproc-accounts.iam.gserviceaccount.com como la cuenta de agente de servicio. Si esa cuenta de servicio no existe, Dataproc usa la cuenta del agente de servicio de las API de Google, [project-number]@cloudservices.gserviceaccount.com, para las operaciones del plano de control.

Redes de VPC compartidas: Si el clúster usa una red de VPC compartida, un administrador de VPC compartida debe otorgar a ambas cuentas de servicio anteriores la función Usuario de red para el proyecto host de VPC compartida. Para obtener más información, consulte:

Permisos de acceso a la VM de Dataproc

Los permisos de acceso a las VM se usan para otorgar o limitar el acceso a las API de las instancias de VM. Funcionan junto con la cuenta de servicio de VM para determinar el acceso a la API. Por ejemplo, si a las VM del clúster solo se les otorga el permiso https://www.googleapis.com/auth/storage-full, las aplicaciones que se ejecutan en las VM del clúster pueden llamar a las API de Cloud Storage, pero no pueden realizar solicitudes a BigQuery, incluso si a la cuenta de servicio de VM en la que se ejecutan se les otorgara una función de BigQuery con permisos amplios.

Permisos de VM predeterminados de Dataproc. Si no se especifican los permisos cuando se crea un clúster (consulta gcloud dataproc cluster create --scopes), las VM de Dataproc tienen 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 especificas permisos cuando creas un clúster, las VM de clúster tendrán los permisos que especifiques y el siguiente conjunto de permisos mínimos necesarios (incluso si no los especificas):

https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

Crea un clúster con una cuenta de servicio de VM administrada por el usuario

Puedes especificar una cuenta de servicio de VM cuando creas un clúster. Dataproc no admite la especificación o cambio de la cuenta de servicio de VM después de crear el clúster.

¿Por qué especificar una cuenta de servicio de VM administrada por el usuario? Las cuentas de servicio tienen funciones de IAM otorgadas. Especificar una cuenta de servicio de VM administrada por el usuario cuando se crea un clúster de Dataproc te permite crear clústeres con control y acceso detallado a los recursos del proyecto. El uso de cuentas de servicio de VM administradas por el usuario con clústeres diferentes de Dataproc te permite configurar clústeres con acceso diferente a los recursos de Cloud.

Antes de crear el clúster, crea la cuenta de servicio dentro del proyecto en el que se creará el clúster. Otorga a la cuenta de servicio la función Trabajador de Dataproc y cualquier función adicional que necesitará tus trabajos, por ejemplo, para permitir la lectura y escritura de datos desde y hacia los recursos de Google Cloud como BigQuery.

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 de VM especificada por el usuario y acceder a los permisos de acceso de VM.

gcloud dataproc clusters create cluster-name \
    --region=region \
    --service-account=service-account-name@project-id.iam.gserviceaccount.com \
    --scopes=scope[, ...]

API de REST

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

Console

Por el momento, no se admite la configuración de una cuenta de servicio de VM de Dataproc administrada por el usuario en Cloud Console. Puedes configurar el permiso “cloud-platform” en las VM de tu clúster si haces clic en “Permitir el acceso a la API a todos los servicios de Google Cloud en el mismo proyecto” en el Acceso al proyecto en el panel Administrar seguridad de la página Crear un clúster de Dataproc en Cloud Console.

¿Qué sigue?