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.
Requisito de seguridad a partir del 3 de agosto de 2020: Los usuarios de Dataproc deben tener un permiso de ActAs cuenta de servicio para implementar los recursos de Dataproc, como crear clústeres y enviar trabajos. La función
Usuario de cuenta de servicio contiene este permiso. Consulta Roles para la autenticación de cuentas de servicio
para obtener información sobre las funciones de Dataproc requeridas.
Habilita los usuarios existentes de Dataproc: Los usuarios existentes de Dataproc a partir del 3 de agosto de 2020 pueden aceptar este requisito de seguridad (consulta Protege Dataproc, Dataflow y Cloud Data Fusion).
¿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 máquina virtual (VM) de Compute Engine para interactuar con otras Google Cloud APIs. 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 del clúster de Dataproc
Las siguientes cuentas de servicio deben tener los permisos necesarios para realizar acciones de Dataproc en el proyecto en el que se encuentra el clúster.
Cuenta de servicio de VM de Dataproc
Las VMs de un clúster de Dataproc usan una cuenta de servicio para
Dataproc operaciones del plano de datos.
La cuenta de servicio predeterminada de Compute Engine,
project_number-compute@developer.gserviceaccount.com, se usa como cuenta de servicio de VM, a menos que especifiques una
cuenta de servicio personalizada
cuando creas un clúster. La cuenta de servicio de VM debe tener la
función Trabajador de Dataproc, que incluye los permisos necesarios para las operaciones del plano de datos de Dataproc. Para obtener más información, consulta
Roles de Dataproc.
Visualiza los roles de la cuenta de servicio de VM
Para ver los roles otorgados a la cuenta de servicio de VM de Dataproc, haz lo siguiente:
En la Google Cloud consola de, dirígete a la página **IAM**.
Haz clic en Incluir asignaciones de roles proporcionadas por Google.
Visualiza los roles que se muestran para la cuenta de servicio de VM. En la siguiente imagen, se muestra la función Trabajador de Dataproc requerida que se muestra para la cuenta de servicio predeterminada de Compute Engine (
project_number-compute@developer.gserviceaccount.com) que Dataproc usa de forma predeterminada como cuenta de servicio de VM.
Puedes hacer clic en el ícono de lápiz que se muestra en la fila de la cuenta de servicio para otorgar o quitar roles de la cuenta de servicio.
Cuenta de servicio del agente de servicio de Dataproc
Dataproc creates the
cuenta de servicio del agente de servicio,
service-project_number@dataproc-accounts.iam.gserviceaccount.com, y le otorga a la cuenta de servicio
la
función Agente de servicio de Dataproc
en un Google Cloud proyecto. Esta cuenta de servicio realiza operaciones del plano de control de Dataproc, como la creación, la actualización y la eliminación de las VMs del clúster. No puedes reemplazar esta cuenta de servicio por una cuenta de servicio de VM personalizada
cuando creas un clúster.
Otorgamiento de roles a la cuenta de servicio del agente de servicio en una red de VPC compartida
Si un clúster de Dataproc usa una red de VPC compartida, un administrador de VPC compartida debe otorgarle a la cuenta de servicio del agente de servicio de Dataproc la función de Usuario de red para el proyecto host de la VPC compartida. Para obtener más información, consulta lo siguiente:
- Crea un clúster que use una red de VPC en otro proyecto
- Documentación de VPC compartida: cómo configurar cuentas de servicio como Administradores de proyectos de servicio
Crea un clúster con una cuenta de servicio de VM personalizada
Cuando creas un clúster, puedes especificar una cuenta de servicio de VM personalizada que usará tu clúster para las operaciones del plano de datos de Dataproc en lugar de la cuenta de servicio de VM predeterminada (no puedes cambiar la cuenta de servicio de VM después de crear el clúster). El uso de una cuenta de servicio de VM con roles de IAM asignados te permite proporcionar a tu clúster acceso detallado a los recursos del proyecto.
Pasos preliminares
Crea la cuenta de servicio de VM personalizada dentro del proyecto en el que se creará el clúster.
Otorga a la cuenta de servicio de VM personalizada la función Trabajador de Dataproc en el proyecto y cualquier función adicional que necesiten tus trabajos, como las funciones de lector y escritor de BigQuery (consulta Roles de Dataproc).
Ejemplo de la CLI de gcloud:
- El siguiente comando de muestra otorga a la cuenta de servicio de VM personalizada en el proyecto del clúster la función Trabajador de Dataproc a nivel del proyecto:
gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role="roles/dataproc.worker"
- Considera una función personalizada: En lugar de otorgar a la cuenta de servicio
la función predefinida de Trabajador de Dataproc (
roles/dataproc.worker), puedes otorgar a la cuenta de servicio una función personalizada que contenga permisos de la función de Trabajador, pero limita losstorage.objects.*permisos.- La función personalizada debe otorgar al menos los permisos
storage.objects.create,storage.objects.getystorage.objects.updatede la cuenta de servicio de VM en los objetos de los buckets de etapa de pruebas y temporales de Dataproc y en cualquier bucket adicional que necesiten los trabajos que se ejecutarán en el clúster.
- La función personalizada debe otorgar al menos los permisos
Crea el clúster
- Crea el clúster en tu proyecto.
Comando de gcloud
Usa el comando gcloud dataproc clusters create para crear un clúster con la cuenta de servicio de VM personalizada.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --scopes=SCOPE
Reemplaza lo siguiente:
- CLUSTER_NAME: Es el nombre del clúster, que debe ser único dentro de un proyecto. El nombre debe comenzar con una letra en minúscula y puede contener hasta 51 letras en minúscula , números y guiones. No puede terminar con un guion. Puede reutilizarse el nombre de un clúster borrado.
- REGION: Es la región en la que se ubicará el clúster.
- SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio.
- PROJECT_ID: Es el Google Cloud ID del proyecto que contiene tu cuenta de servicio de VM. Este será el ID de el proyecto en el que se creará tu clúster o el ID de otro proyecto si creas un clúster con una cuenta de servicio de VM personalizada en otro proyecto.
- SCOPE: Ámbito(s) de acceso para las instancias de VM del clúster (por ejemplo,
https://www.googleapis.com/auth/cloud-platform).
API de REST
Cuando completes
GceClusterConfig
como parte de la
clusters.create
solicitud de API, configura los siguientes campos:
serviceAccount: La cuenta de servicio se ubicará en el proyecto en el que se creará tu clúster, a menos que uses una cuenta de servicio de VM de un proyecto diferente.serviceAccountScopes: Especifica los permisos de acceso para las instancias de VM del clúster (por ejemplo,https://www.googleapis.com/auth/cloud-platform).
Console
No se admite la configuración de una cuenta de servicio de VM de Dataproc
en la Google Cloud consola de. Puedes configurar el cloud-platform
permiso de acceso en las VMs del clúster cuando creas el clúster. Para ello, haz clic en
"Habilita el permiso cloud-platform para este clúster"
en la sección Acceso al proyecto del panel Administrar seguridad
en la página Crear un clúster
de Dataproc en la Google Cloud consola.
Crea un clúster con una cuenta de servicio de VM personalizada de otro proyecto
Cuando creas un clúster, puedes especificar una cuenta de servicio de VM personalizada que usará tu clúster para las operaciones del plano de datos de Dataproc en lugar de usar la cuenta de servicio de VM predeterminada (no puedes especificar una cuenta de servicio de VM personalizada después de crear el clúster). El uso de una cuenta de servicio de VM personalizada con roles de IAM asignados te permite proporcionar a tu clúster acceso detallado a los recursos del proyecto.
Pasos preliminares
En el proyecto de cuenta de servicio (el proyecto en el que se encuentra la cuenta de servicio de VM personalizada), haz lo siguiente:
Habilita cuentas de servicio para conectarlas entre proyectos.
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Otorga a tu cuenta de correo electrónico (el usuario que crea el clúster) la función Usuario de cuenta de servicio en el proyecto de cuenta de servicio o, para un control más detallado, la cuenta de servicio de VM personalizada en el proyecto de cuenta de servicio.
Para obtener más información, consulta Administra el acceso a proyectos, carpetas y organizaciones para otorgar roles a nivel del proyecto y Administra el acceso a cuentas de servicio para otorgar roles a nivel de la cuenta de servicio.
Ejemplos de la CLI de gcloud:
- El siguiente comando de muestra otorga al usuario la función Usuario de cuenta de servicio a nivel del proyecto:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
Notas:
USER_EMAIL: Proporciona la dirección de correo electrónico de tu cuenta de usuario, en el formato:user:user-name@example.com.- El siguiente comando de muestra otorga al usuario la función Usuario de cuenta de servicio a nivel de la cuenta de servicio:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
Notas:
USER_EMAIL: Proporciona la dirección de correo electrónico de tu cuenta de usuario, en el formato:user:user-name@example.com.Otorga a la cuenta de servicio de VM personalizada la función Trabajador de Dataproc en el proyecto del clúster.
Ejemplo de la CLI de gcloud:
gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --role="roles/dataproc.worker"
Otorga a la cuenta de servicio del agente de servicio de Dataproc en el proyecto del clúster las funciones Usuario de cuenta de servicio y Creador de tokens de cuentas de servicio en el proyecto de cuenta de servicio o, para un control más detallado, la cuenta de servicio de VM personalizada en el proyecto de cuenta de servicio. De esta manera, permitirás que la cuenta de servicio del agente de servicio de Dataproc en el proyecto del clúster cree tokens para la cuenta de servicio de VM de Dataproc personalizada en el proyecto de cuenta de servicio.
Para obtener más información, consulta Administra el acceso a proyectos, carpetas y organizaciones para otorgar roles a nivel del proyecto y Administra el acceso a cuentas de servicio para otorgar roles a nivel de la cuenta de servicio.
Ejemplos de la CLI de gcloud:
- Los siguientes comandos de muestra otorgan a la cuenta de servicio del agente de servicio de Dataproc cuenta de servicio en el proyecto del clúster las funciones Usuario de cuenta de servicio y Creador de tokens de cuentas de servicio a nivel del proyecto:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountUser"
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
- Los siguientes comandos de muestra otorgan a la cuenta de servicio del agente de servicio de Dataproc en el proyecto del clúster las funciones Usuario de cuenta de servicio y Creador de tokens de cuentas de servicio a nivel de la cuenta de servicio de VM:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountUser"
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Otorga a la cuenta de servicio del agente de servicio de Compute Engine en el proyecto del clúster la función Creador de tokens de cuentas de servicio en el proyecto de cuenta de servicio o, para un control más detallado, la cuenta de servicio de VM personalizada en el proyecto de cuenta de servicio. De esta manera, otorgas a la cuenta de servicio del agente de servicio de Compute Engine en el proyecto del clúster la capacidad de crear tokens para la cuenta de servicio de VM de Dataproc personalizada en el proyecto de cuenta de servicio.
Para obtener más información, consulta Administra el acceso a proyectos, carpetas y organizaciones para otorgar roles a nivel del proyecto y Administra el acceso a cuentas de servicio para otorgar roles a nivel de la cuenta de servicio.
Ejemplos de la CLI de gcloud:
- El siguiente comando de muestra otorga a la cuenta de servicio del agente de servicio de Compute Engine en el proyecto del clúster la función Creador de tokens de cuentas de servicio a nivel del proyecto:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
- El siguiente comando de muestra otorga a la cuenta de servicio del agente de servicio de Compute Engine en el proyecto del clúster la función Creador de tokens de cuentas de servicio a nivel de la cuenta de servicio de VM:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Crea el clúster
¿Qué sigue?
- Cuentas de servicio
- Permisos de Dataproc y funciones de IAM
- Principales de Dataproc y sus funciones
- Multiusuario de seguridad basado en la cuenta de servicio de Dataproc
- Autenticación del clúster personal de Dataproc
- IAM detallada de Dataproc