Caso de uso: Control de acceso a un clúster de Dataproc en otro proyecto

En esta página, se describe cómo administrar el control de acceso cuando implementas y ejecutas una canalización que usa clústeres de Dataproc en otro proyecto de Google Cloud.

Situación

De forma predeterminada, cuando se inicia una instancia de Cloud Data Fusion en un proyecto de Google Cloud, implementa y ejecuta canalizaciones con clústeres de Dataproc dentro del mismo proyecto. Sin embargo, es posible que tu organización requiera que uses clústeres en otro proyecto. Para este caso de uso, debes administrar el acceso entre los proyectos. En la siguiente página, se describe cómo puedes cambiar la configuración del modelo de referencia (predeterminado) y aplicar los controles de acceso adecuados.

Antes de comenzar

Para comprender las soluciones de este caso de uso, necesitas el siguiente contexto:

Suposiciones y alcance

Este caso de uso tiene los siguientes requisitos:

  • Una instancia privada de Cloud Data Fusion. Por motivos de seguridad, es posible que una organización requiera que uses este tipo de instancias.
  • Una fuente y un receptor de BigQuery
  • Control de acceso con IAM, no con control de acceso basado en funciones (RBAC).

Solución

En esta solución, se compara la arquitectura y la configuración específicas del modelo de referencia y del caso de uso.

Arquitectura

En los siguientes diagramas, se compara la arquitectura del proyecto para crear una instancia de Cloud Data Fusion y ejecutar canalizaciones cuando usas clústeres en el mismo proyecto (modelo de referencia) y en un proyecto diferente a través de la VPC del proyecto de usuario.

Arquitectura de referencia

En este diagrama, se muestra la arquitectura de referencia de los proyectos:

Arquitectura de proyecto de Dataproc, usuario y cliente en Cloud Data Fusion.

Para la configuración del modelo de referencia, debes crear una instancia privada de Cloud Data Fusion y ejecutar una canalización sin personalización adicional:

  • Se usa uno de los perfiles de procesamiento integrados
  • La fuente y el receptor están en el mismo proyecto que la instancia
  • No se otorgaron roles adicionales a ninguna de las cuentas de servicio

Para obtener más información sobre los proyectos de usuario y cliente, consulta Herramientas de redes.

Arquitectura de casos de uso

En este diagrama, se muestra la arquitectura del proyecto cuando usas clústeres en otro proyecto:

Arquitectura de proyecto de Dataproc, usuario y cliente en Cloud Data Fusion.

Parámetros de configuración

En las siguientes secciones, se compara la configuración del modelo de referencia con la configuración específica de los casos de uso para usar clústeres de Dataproc en un proyecto diferente mediante la VPC predeterminada del proyecto de usuario.

En las siguientes descripciones de casos de uso, el proyecto de cliente es donde se ejecuta la instancia de Cloud Data Fusion y el proyecto de Dataproc es donde se inicia el clúster de Dataproc.

Instancia y VPC del proyecto de usuario

Modelo de referencia Caso de uso
En el diagrama de arquitectura de referencia anterior, el proyecto de usuario contiene los siguientes componentes:
  • Es la VPC predeterminada, que se crea automáticamente.
  • La implementación física de la instancia de Cloud Data Fusion.
No se necesita configuración adicional para este caso de uso.

Proyecto del cliente

Modelo de referencia Caso de uso
Tu proyecto de Google Cloud es donde implementas y ejecutas canalizaciones. De forma predeterminada, los clústeres de Dataproc se inician en este proyecto cuando ejecutas tus canalizaciones. En este caso de uso, administras dos proyectos. En esta página, el proyecto de cliente hace referencia a dónde se ejecuta la instancia de Cloud Data Fusion.
El proyecto de Dataproc hace referencia a la ubicación en la que se inician los clústeres de Dataproc.

VPC del cliente

Modelo de referencia Caso de uso

Desde tu perspectiva (del cliente), la VPC del cliente es donde Cloud Data Fusion se ubica de forma lógica.


Conclusión clave:
Puedes encontrar los detalles de VPC del cliente en la página Redes de VPC de tu proyecto.

Ir a Redes de VPC

No se necesita configuración adicional para este caso de uso.

Subred de Cloud Data Fusion

Modelo de referencia Caso de uso

Desde tu perspectiva (del cliente), esta subred es donde Cloud Data Fusion se ubica de forma lógica.


Conclusión clave:
La región de esta subred es la misma que la ubicación de la instancia de Cloud Data Fusion en el proyecto de usuario.
No se necesita configuración adicional para este caso de uso.

Subred de Dataproc

Modelo de referencia Caso de uso

La subred en la que se inician los clústeres de Dataproc cuando ejecutas una canalización.


Conclusiones clave:
  • Para esta configuración de referencia, Dataproc se ejecuta en la misma subred que la instancia de Cloud Data Fusion.
  • Cloud Data Fusion localiza una subred en la misma región que la instancia y la subred de Cloud Data Fusion. Si solo hay una subred en esta región, las subredes son las mismas.
  • La subred de Dataproc debe tener Acceso privado a Google.

Esta es una subred nueva en la que los clústeres de Dataproc se inician cuando ejecutas una canalización.


Conclusiones clave:
  • Para esta subred nueva, configura el Acceso privado a Google en Activado.
  • No es necesario que la subred de Dataproc esté en la misma ubicación que la instancia de Cloud Data Fusion.

Fuentes y receptores

Modelo de referencia Caso de uso

Las fuentes de las que se extraen los datos y los receptores donde se cargan, como las fuentes y los receptores de BigQuery.


Conclusión clave:
  • Los trabajos que recuperan y cargan datos deben procesarse en la misma ubicación que el conjunto de datos; de lo contrario, se producirá un error.
La configuración de control de acceso específica de los casos de uso en esta página es para fuentes y receptores de BigQuery.

Cloud Storage

Modelo de referencia Caso de uso

El bucket de almacenamiento en el proyecto del cliente que ayuda a transferir archivos entre Cloud Data Fusion y Dataproc.


Conclusiones clave:
  • Puedes especificar este bucket a través de la interfaz web de Cloud Data Fusion en la configuración del Perfil de procesamiento para los clústeres efímeros.
  • Para canalizaciones por lotes y en tiempo real o trabajos de replicación: si no especificas un bucket en el perfil de procesamiento, Cloud Data Fusion crea un bucket en el mismo proyecto que la instancia para este propósito.
  • Incluso para los clústeres estáticos de Dataproc, en esta configuración de modelo de referencia, Cloud Data Fusion crea el bucket y difiere de los buckets temporales y de la etapa de pruebas de Dataproc.
  • El agente de servicio de la API de Cloud Data Fusion tiene permisos integrados para crear este bucket en el proyecto que contiene la instancia de Cloud Data Fusion.
No se necesita configuración adicional para este caso de uso.

Buckets temporales que usan la fuente y el receptor

Modelo de referencia Caso de uso

Los buckets temporales que crean los complementos para tus fuentes y receptores, como los trabajos de carga que inicia el complemento de receptor de BigQuery.


Conclusiones clave:
  • Puedes definir estos buckets cuando configures las propiedades del complemento de origen y receptor.
  • Si no defines un bucket, se crea uno en el mismo proyecto en el que se ejecuta Dataproc.
  • Si el conjunto de datos es multirregional, el bucket se crea en el mismo permiso.
  • Si defines un bucket en la configuración del complemento, la región del bucket debe coincidir con la región del conjunto de datos.
  • Si no defines un bucket en la configuración del complemento, el que se crea para ti se borra cuando finaliza la canalización.
Para este caso de uso, el bucket se puede crear en cualquier proyecto.

Buckets que son fuentes o receptores de datos para complementos

Modelo de referencia Caso de uso
Buckets de clientes, que especificas en la configuración de los complementos, como el complemento de Cloud Storage y el complemento de FTP a Cloud Storage. No se necesita configuración adicional para este caso de uso.

IAM: Agente de servicio de la API de Cloud Data Fusion

Modelo de referencia Caso de uso

Cuando se habilita la API de Cloud Data Fusion, el rol de agente de servicio de la API de Cloud Data Fusion (roles/datafusion.serviceAgent) se otorga automáticamente a la cuenta de servicio de Cloud Data Fusion, el agente de servicio principal.


Conclusiones clave:
  • El rol contiene permisos para servicios en el mismo proyecto que la instancia, como BigQuery y Dataproc. Para obtener más información sobre todos los servicios compatibles, consulta los detalles de la función.
  • La cuenta de servicio de Cloud Data Fusion hace lo siguiente:
    • Comunicación del plano de datos (diseño y ejecución de la canalización) con otros servicios (por ejemplo, comunicación con Cloud Storage, BigQuery y Datastream en el momento del diseño)
    • Aprovisiona clústeres de Dataproc.
  • Si replicas desde una fuente de Oracle, esta cuenta de servicio también debe tener los roles de administrador de Datastream y administrador de almacenamiento en el proyecto en el que se realiza el trabajo. En esta página, no se aborda un caso práctico de replicación.

Para este caso de uso, otorga el rol de Agente de servicio de la API de Cloud Data Fusion a la cuenta de servicio en el proyecto de Dataproc. Luego, otorga los siguientes roles en ese proyecto:

  • Función de usuario de red de Compute
  • Función de editor de Dataproc

IAM: Cuenta de servicio de Dataproc

Modelo de referencia Caso de uso

La cuenta de servicio que se usa para ejecutar la canalización como un trabajo dentro del clúster de Dataproc. De forma predeterminada, es la cuenta de servicio de Compute Engine.


Opcional: En la configuración del modelo de referencia, puedes cambiar la cuenta de servicio predeterminada por otra cuenta de servicio del mismo proyecto. Otorga los siguientes roles de IAM a la cuenta de servicio nueva:

  • El rol de ejecutor de Cloud Data Fusion Esta función permite que Dataproc se comunique con la API de Cloud Data Fusion.
  • El rol Trabajador de Dataproc. Esta función permite que los trabajos se ejecuten en clústeres de Dataproc.
Conclusiones clave:
  • A la cuenta de servicio del agente de API para el servicio nuevo se le debe otorgar el rol de usuario de la cuenta de servicio en la cuenta de servicio de Dataproc para que el agente de la API de servicio pueda usarla para iniciar clústeres de Dataproc.

En este ejemplo de caso práctico, se supone que usas la cuenta de servicio predeterminada de Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com) del proyecto de Dataproc.


Otorga los siguientes roles a la cuenta de servicio predeterminada de Compute Engine en el proyecto de Dataproc.

  • La función Trabajador de Dataproc
  • El rol de administrador de almacenamiento (o, como mínimo, el permiso “storage.buckets.create”) que permite que Dataproc cree buckets temporales para BigQuery.
  • rol de usuario del trabajo de BigQuery. Este rol permite que Dataproc cree trabajos de carga. Los trabajos se crean en el proyecto de Dataproc de forma predeterminada.
  • Editor de conjunto de datos de BigQuery. Esta función permite que Dataproc cree conjuntos de datos mientras se cargan datos.

Otorga el rol Usuario de cuenta de servicio a la cuenta de servicio de Cloud Data Fusion en la cuenta de servicio predeterminada de Compute Engine del proyecto de Dataproc. Esta acción debe realizarse en el proyecto de Dataproc.

Agrega la cuenta de servicio predeterminada de Compute Engine del proyecto de Dataproc al proyecto de Cloud Data Fusion. Otorga también los siguientes roles:

  • El rol Visualizador de objetos de Storage para recuperar artefactos relacionados con los trabajos de canalización desde el bucket del consumidor de Cloud Data Fusion.
  • Rol de ejecutor de Cloud Data Fusion, para que el clúster de Dataproc pueda comunicarse con Cloud Data Fusion mientras está en ejecución.

APIs

Modelo de referencia Caso de uso
Cuando habilitas la API de Cloud Data Fusion, también se habilitan las siguientes APIs. Para obtener más información sobre estas APIs, ve a la página APIs y servicios de tu proyecto.

Ir a APIs y servicios

  • API de ajuste de escala automático de Cloud
  • API de Dataproc
  • API de Cloud Dataproc Control
  • Cloud DNS API
  • API de Cloud OS Login
  • API de Pub/Sub
  • API de Compute Engine
  • API de Container Filesystem
  • API de Container Registry
  • API de Service Account Credentials
  • API de Identity and Access Management
  • API de Google Kubernetes Engine

Cuando habilitas la API de Cloud Data Fusion, las siguientes cuentas de servicio se agregan automáticamente a tu proyecto:

  • Agente de servicios de las APIs de Google
  • Agente de servicio de Compute Engine
  • Agente de servicio de Kubernetes Engine
  • Agente de servicio de Google Container Registry
  • Agente de servicio de Google Cloud Dataproc
  • Agente de servicio de Cloud KMS
  • Cuenta de servicio de Cloud Pub/Sub
Para este caso práctico, habilita las siguientes API en el proyecto que contiene el proyecto de Dataproc:
  • API de Compute Engine
  • API de Dataproc (es probable que ya esté habilitada en este proyecto). La API de Control de Dataproc se habilita automáticamente cuando habilitas la API de Dataproc.
  • API de Resource Manager.

Claves de encriptación

Modelo de referencia Caso de uso

En la configuración del modelo de referencia, las claves de encriptación pueden ser administradas por Google o con CMEK


Conclusiones clave:

Si usas CMEK, la configuración del modelo de referencia requiere lo siguiente:

  • La clave debe ser regional, crearse en la misma región que la instancia de Cloud Data Fusion.
  • Otorga el rol de encriptador o desencriptador de CryptoKey de Cloud KMS a las siguientes cuentas de servicio a nivel de clave (no en la página de IAM de la consola de Google Cloud) en el proyecto en el que se crea:
    • Cuenta de servicio de la API de Cloud Data Fusion
    • La cuenta de servicio de Dataproc, que es el agente de servicio de Compute Engine (service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com) de forma predeterminada
    • Agente de servicio de Google Cloud Dataproc (service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com)
    • Agente de servicio de Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

Según los servicios que se usen en tu canalización, como BigQuery o Cloud Storage, a las cuentas de servicio también se les debe otorgar la función de encriptador o desencriptador de CryptoKey de Cloud KMS:

  • La cuenta de servicio de BigQuery (bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com)
  • La cuenta de servicio de Pub/Sub (service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com)
  • La cuenta de servicio de Spanner (service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com)

Si no usas CMEK, no se necesitan cambios adicionales para este caso de uso.

Si usas CMEK, se debe proporcionar el rol de encriptador o desencriptador de CryptoKey de Cloud KMS a la siguiente cuenta de servicio en el nivel de clave del proyecto en el que se crea:

  • Agente de servicio de Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

Según los servicios que se usen en tu canalización, como BigQuery o Cloud Storage, a otras cuentas de servicio también se les debe otorgar la función de encriptador o desencriptador de CryptoKey de Cloud KMS a nivel de la clave. Por ejemplo:

  • La cuenta de servicio de BigQuery (bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com)
  • La cuenta de servicio de Pub/Sub (service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com)
  • La cuenta de servicio de Spanner (service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com)

Después de realizar estas configuraciones específicas para los casos de uso, tu canalización de datos puede comenzar a ejecutarse en clústeres de otro proyecto.

¿Qué sigue?