Caso de uso: Control de acceso para un clúster de Managed Service for Apache Spark 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 Managed Service para Apache Spark en otro proyecto de Google Cloud .

Situación

De forma predeterminada, cuando se inicia una instancia de Cloud Data Fusion en un proyecto deGoogle Cloud , se implementan y ejecutan canalizaciones con clústeres de Managed Service para Apache Spark dentro del mismo proyecto. Sin embargo, es posible que tu organización te exija usar clústeres en otro proyecto. En 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 de referencia (predeterminada) 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, una organización puede requerir que uses este tipo de instancia.
  • Es una fuente y un receptor de BigQuery.
  • Control de acceso con IAM, no con control de acceso basado en roles (RBAC).

Solución

Esta solución compara la arquitectura y la configuración de referencia con las específicas 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 (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 proyectos de inquilino, cliente y Dataproc en Cloud Data Fusion.

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

  • Usas uno de los perfiles de procesamiento integrados.
  • El origen 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 de cliente, consulta Redes.

Arquitectura de casos de uso

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

Arquitectura de proyectos de inquilino, cliente y Dataproc en Cloud Data Fusion.

Parámetros de configuración

En las siguientes secciones, se comparan las configuraciones de referencia con las configuraciones específicas del caso de uso para utilizar clústeres de Managed Service for Apache Spark en un proyecto diferente a través de la VPC predeterminada del proyecto de inquilino.

En las siguientes descripciones de casos de uso, el proyecto del cliente es donde se ejecuta la instancia de Cloud Data Fusion y el proyecto del servicio administrado para Apache Spark es donde se inicia el clúster del servicio administrado para Apache Spark.

VPC y instancia del proyecto de usuario

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

Proyecto del cliente

Modelo de referencia Caso de uso
Tu proyecto Google Cloud es donde implementas y ejecutas canalizaciones. De forma predeterminada, los clústeres de Managed Service for Apache Spark se inician en este proyecto cuando ejecutas tus canalizaciones. En este caso de uso, administrarás dos proyectos. En esta página, el proyecto del cliente hace referencia al lugar donde se ejecuta la instancia de Cloud Data Fusion.
El proyecto de Managed Service para Apache Spark hace referencia al lugar donde se inician los clústeres de Managed Service para Apache Spark.

VPC del cliente

Modelo de referencia Caso de uso

Desde tu perspectiva (la del cliente), la VPC del cliente es donde se encuentra lógicamente Cloud Data Fusion.


Puntos clave:
Puedes encontrar los detalles de la VPC del cliente en la página de redes de VPC de tu proyecto.

Ir a Redes de VPC

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

Subred de Cloud Data Fusion

Modelo de referencia Caso de uso

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


Punto 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 requiere ninguna configuración adicional para este caso de uso.

Subred de Managed Service para Apache Spark

Modelo de referencia Caso de uso

Es la subred en la que se inician los clústeres de Managed Service for Apache Spark cuando ejecutas una canalización.


Conclusiones principales:
  • En esta configuración de referencia, el servicio administrado de Apache Spark se ejecuta en la misma subred que la instancia de Cloud Data Fusion.
  • Cloud Data Fusion ubica 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 iguales.
  • La subred del servicio administrado para Apache Spark debe tener Acceso privado a Google.

Esta es una subred nueva en la que se inician los clústeres de Managed Service for Apache Spark cuando ejecutas una canalización.


Conclusiones principales:
  • Para esta nueva subred, configura el Acceso privado a Google como Activado.
  • La subred del servicio administrado para Apache Spark no necesita estar en la misma ubicación que la instancia de Cloud Data Fusion.

Fuentes y receptores

Modelo de referencia Caso de uso

Las fuentes desde las que se extraen los datos y los receptores en los que 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.
Las configuraciones de control de acceso específicas del caso de uso que se describen en esta página son para las fuentes y los receptores de BigQuery.

Cloud Storage

Modelo de referencia Caso de uso

Es el bucket de almacenamiento en el proyecto del cliente que ayuda a transferir archivos entre Cloud Data Fusion y Managed Service for Apache Spark.


Conclusiones principales:
  • Puedes especificar este bucket a través de la interfaz web de Cloud Data Fusion en la configuración de Perfil de procesamiento para clústeres efímeros.
  • En el caso de las canalizaciones por lotes y en tiempo real, o los 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 Managed Service para Apache Spark, en esta configuración de referencia, Cloud Data Fusion crea el bucket, que es diferente de los buckets de etapa de pruebas y temporales de Managed Service para Apache Spark.
  • 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 requiere ninguna configuración adicional para este caso de uso.

Buckets temporales que usan la fuente y el receptor

Modelo de referencia Caso de uso

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


Conclusiones principales:
  • Puedes definir estos buckets cuando configures las propiedades del complemento de origen y receptor.
  • Si no defines un bucket, se creará uno en el mismo proyecto en el que se ejecuta Managed Service for Apache Spark.
  • Si el conjunto de datos es multirregional, el bucket se crea en el mismo alcance.
  • 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.

Son buckets que son fuentes o receptores de datos para complementos.

Modelo de referencia Caso de uso
Buckets del cliente, que se especifican en las configuraciones de los complementos, como el complemento de Cloud Storage y el complemento de FTP a Cloud Storage No se requiere ninguna configuración adicional para este caso de uso.

IAM: Agente de servicios 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, que es el agente de servicio principal.


Conclusiones principales:
  • El rol contiene permisos para los servicios en el mismo proyecto que la instancia, como BigQuery y Managed Service for Apache Spark. Para obtener información sobre todos los servicios compatibles, consulta los detalles de los roles.
  • 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 Managed Service para Apache Spark.
  • Si realizas la replicación desde una fuente de Oracle, esta cuenta de servicio también debe tener los roles de administrador de Datastream y administrador de Storage en el proyecto en el que se ejecuta el trabajo. Esta página no aborda un caso de uso 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 Managed Service for Apache Spark. Luego, otorga los siguientes roles en ese proyecto:

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

IAM: Cuenta de servicio de Managed Service para Apache Spark

Modelo de referencia Caso de uso

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


Opcional: En la configuración 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 nueva cuenta de servicio:

  • Es el rol de ejecutor de Cloud Data Fusion. Este rol permite que Managed Service for Apache Spark se comunique con la API de Cloud Data Fusion.
  • El rol de trabajador de Dataproc Este rol permite que los trabajos se ejecuten en clústeres del servicio administrado para Apache Spark.
Conclusiones principales:
  • Se debe otorgar a la cuenta de servicio del agente de la API para el servicio nuevo el rol de usuario de la cuenta de servicio en la cuenta de servicio del servicio administrado de Apache Spark para que el agente de la API de Service pueda usarla para iniciar clústeres del servicio administrado de Apache Spark.

En este ejemplo de caso de uso, se supone que usas la cuenta de servicio predeterminada de Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com) del proyecto de Managed Service for Apache Spark.


Otorga los siguientes roles a la cuenta de servicio predeterminada de Compute Engine en el proyecto de Managed Service for Apache Spark.

  • El rol de trabajador de Dataproc
  • La función de administrador de almacenamiento (o, como mínimo, el permiso `storage.buckets.create`) para permitir que el servicio administrado de Apache Spark cree buckets temporales para BigQuery
  • Rol de usuario de trabajo de BigQuery Este rol permite que el servicio administrado para Apache Spark cree trabajos de carga. De forma predeterminada, los trabajos se crean en el proyecto del servicio administrado para Apache Spark.
  • Rol de editor de conjuntos de datos de BigQuery Este rol permite que Managed Service for Apache Spark cree conjuntos de datos mientras carga datos.

Otorga el rol de 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 Managed Service for Apache Spark. Esta acción se debe realizar en el proyecto del servicio administrado para Apache Spark.

Agrega la cuenta de servicio predeterminada de Compute Engine del proyecto de Managed Service for Apache Spark al proyecto de Cloud Data Fusion. También otorga los siguientes roles:

  • El rol de visualizador de objetos de Storage para recuperar artefactos relacionados con el trabajo de la canalización del bucket de Cloud Data Fusion Consumer
  • Rol de Cloud Data Fusion Runner, de modo que el clúster de Managed Service for Apache Spark pueda comunicarse con Cloud Data Fusion mientras se ejecuta.

API

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 Cloud Autoscaling
  • 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 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 API de Google
  • Agente de servicios de Compute Engine
  • Agente de servicios 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 de uso, habilita las siguientes APIs en el proyecto que contiene el proyecto del servicio administrado para Apache Spark:
  • API de Compute Engine
  • API de Dataproc (es probable que ya esté habilitada en este proyecto) La API de Dataproc Control 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 de referencia, las claves de encriptación pueden ser administradas por Google o CMEK.


Conclusiones principales:

Si usas CMEK, tu configuración de referencia requiere lo siguiente:

  • La clave debe ser regional y crearse en la misma región que la instancia de Cloud Data Fusion.
  • Otorga el rol de Encriptador/Desencriptador de CryptoKey de Cloud KMS a las siguientes cuentas de servicio a nivel de la clave (no en la página de IAM de la consola de Google Cloud ) en el proyecto en el que se creó:
    • Cuenta de servicio de la API de Cloud Data Fusion
    • Cuenta de servicio del servicio administrado para Apache Spark, 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, también se debe otorgar a las cuentas de servicio el rol de Encriptador/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/Desencriptador de CryptoKey de Cloud KMS a la siguiente cuenta de servicio a nivel de la clave en el 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, también se debe otorgar a otras cuentas de servicio el rol de Encriptador/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 del caso de uso, tu canalización de datos puede comenzar a ejecutarse en clústeres de otro proyecto.

¿Qué sigue?