Importa datos de una red externa a un almacén de datos seguro de BigQuery

Last reviewed 2023-08-15 UTC

Muchas organizaciones implementan almacenes de datos que almacenan información confidencial para que puedan analizarlos con una variedad de fines comerciales. Este documento está dirigido a ingenieros de datos y administradores de seguridad que implementan y protegen almacenes de datos mediante BigQuery. Es parte de un plano de seguridad que incluye lo siguiente:

  • Un repositorio de GitHub que contiene un conjunto de opciones de configuración y secuencias de comandos de Terraform. La configuración de Terraform establece un entorno en Google Cloud que admite un almacén de datos que almacena datos confidenciales.
  • Una guía sobre los controles de seguridad, arquitectura y diseño que usas para implementar este plano (este documento).

En este documento, se analizan los siguientes temas:

  • La arquitectura y los servicios de Google Cloud que puedes usar para proteger un almacén de datos en un entorno de producción
  • Recomendaciones para importar datos a BigQuery desde una red externa, como un entorno local.
  • Prácticas recomendadas para la administración de datos cuando se crea, implementa y opera un almacén de datos en Google Cloud, incluida la encriptación de nivel de columna, el control diferencial de datos confidenciales, y controles de acceso a nivel de la columna.

En este documento, se supone que ya configuraste un conjunto básico de controles de seguridad, como se describe en el plano de bases empresariales de Google Cloud. Te ayuda a disponer por capas controles adicionales a tus controles de seguridad existentes para proteger los datos confidenciales de un almacén de datos.

Casos de uso de almacenes de datos

Este plano admite los siguientes casos de uso:

Descripción general

Los almacenes de datos como BigQuery permiten que las empresas analicen sus datos empresariales para obtener estadísticas. Los analistas acceden a los datos de la empresa que se almacenan en los almacenes de datos para crear estadísticas. Si tu almacén de datos incluye datos que consideras confidenciales, debes tomar medidas para preservar la seguridad, la confidencialidad, la integridad y la disponibilidad de los datos de la empresa mientras se importan y almacenan, mientras están en tránsito o mientras se analizan. En este plano, harás lo siguiente:

  • Encriptar los datos de origen que se encuentran fuera de Google Cloud (por ejemplo, en un entorno local) y, luego, impórtalos a BigQuery.
  • Configurar controles que ayuden a proteger el acceso a los datos confidenciales.
  • Configurar controles que ayuden a proteger la canalización de datos.
  • Configurar una separación adecuada de obligaciones para diferentes arquetipos.
  • Configurar controles y registros de seguridad adecuados para proteger los datos confidenciales.
  • Usar la clasificación de datos, las etiquetas de política, el enmascaramiento de datos dinámico y la encriptación a nivel de columna para restringir el acceso a columnas específicas en el almacén de datos.

Arquitectura

Para crear un almacén de datos confidencial, debes importar datos de forma segura y, luego, almacenarlos en un perímetro de Controles del servicio de VPC. En la siguiente imagen, se muestra cómo se transfieren y almacenan los datos.

Arquitectura de almacén de datos segura para redes externas.

La arquitectura usa una combinación de los siguientes servicios y funciones de Google Cloud:

  • La interconexión dedicada te permite mover datos entre tu red y Google Cloud. Puedes usar otra opción de conectividad, como se describe en Elige un producto de Conectividad de red.

  • Identity and Access Management (IAM) y Resource Manager restringen el acceso y segmentan los recursos. Los controles de acceso y la jerarquía de recursos siguen el principio de privilegio mínimo.

  • Los Controles del servicio de VPC crean perímetros de seguridad que aíslan los servicios y los recursos mediante la configuración de la autorización, los controles de acceso y el intercambio de datos seguro. Los perímetros son los siguientes:

    • Un perímetro de transferencia de datos que acepta datos entrantes (en lotes o transmisión). Un perímetro independiente ayuda a proteger el resto de tus cargas de trabajo de los datos entrantes.
    • Un perímetro de datos que aísla los datos de encriptación de otras cargas de trabajo.
    • Un perímetro de administración que almacena las claves de encriptación y define lo que se considera datos confidenciales.

    Estos perímetros están diseñados para proteger el contenido entrante, aislar datos confidenciales mediante la configuración de controles y supervisión de acceso adicionales, y separar tu administración de los datos reales en el almacén. La administración incluye la administración de claves, la administración del catálogo de datos y el registro.

  • Cloud Storage y Pub/Sub reciben los datos siguientes:

  • Cloud Functions se activa mediante Cloud Storage y escribe los datos que Cloud Storage sube al bucket de transferencia en BigQuery.

  • Una canalización de Dataflow escribe datos de transmisión en BigQuery. Para proteger los datos, Dataflow usa una cuenta de servicio única y controles de acceso. Para ayudar a proteger la ejecución de la canalización mediante su traslado al servicio de backend, Dataflow usa Streaming Engine. Para obtener más información, consulta Seguridad y permisos de Dataflow.

  • Cloud Data Loss Prevention (Cloud DLP) analiza los datos almacenados en BigQuery para encontrar datos sensibles que no estén protegidos. Si deseas obtener más información, consulta Usa Cloud DLP para analizar datos de BigQuery.

  • Cloud HSM aloja la clave de encriptación de claves (KEK). Cloud HSM es un servicio de Módulo de seguridad de hardware (HSM) basado en la nube. Usa Cloud HSM para generar la clave de encriptación que usas para encriptar los datos en tu red antes de enviarlos a Google Cloud.

  • Data Catalog clasifica de forma automática los datos confidenciales con metadatos, también conocidos como etiquetas de política, cuando se descubren en BigQuery. Data Catalog también usa metadatos para administrar el acceso a datos confidenciales. Para obtener más información, consulta Descripción general de Data Catalog. Para controlar el acceso a los datos dentro del almacén de datos, aplica etiquetas de política a las columnas que incluyen datos confidenciales.

  • BigQuery almacena los datos encriptados y la clave de encriptación unida en tablas separadas.

    BigQuery usa varios controles de seguridad para proteger el contenido, incluidos los controles de acceso, la encriptación a nivel de columna y las seguridad a nivel de column y la encriptación de datos.

  • Security Command Center supervisa y revisa los resultados de seguridad de todo tu entorno de Google Cloud en una ubicación central.

  • Cloud Logging recopila todos los registros de los servicios de Google Cloud para el almacenamiento y la recuperación mediante tus herramientas de investigación y análisis.

  • Cloud Monitoring recopila y almacena información y métricas de rendimiento sobre los servicios de Google Cloud.

  • Data Profiler para BigQuery analiza de forma automática los datos sensibles en todas las tablas y columnas de BigQuery de toda la organización, incluidas todas las carpetas y proyectos.

Estructura de la organización

Agrupa los recursos de tu organización para poder administrarlos y separar los entornos de prueba del entorno de producción. Resource Manager te permite agrupar recursos de manera lógica por proyecto, carpeta y organización.

En el siguiente diagrama, se muestra una jerarquía de recursos con carpetas que representan diferentes entornos, como arranque, común, producción, no producción (o etapa de pruebas) y desarrollo. Esta jerarquía se alinea con la estructura de la organización que usa el plano de bases empresariales. Implementa la mayoría de los proyectos del plano en la carpeta de producción, y el proyecto de administración de datos en la carpeta común que se usa para la administración.

Jerarquía de recursos de un almacén de datos seguro para redes externas.

Para obtener jerarquías de recursos alternativos, consulta Elige una jerarquía de recursos para la zona de destino de Google Cloud.

Carpetas

Usa carpetas para aislar tu entorno de producción y los servicios de administración de tus entornos de prueba y no producción. En la siguiente tabla, se describen las carpetas del plano de las bases empresariales que usa este plano.

Carpeta Descripción
Arranque Contiene los recursos necesarios para implementar el plano de las bases empresariales.
Common Contiene servicios centralizados para la organización, como el proyecto de administración de datos.
Producción Contiene proyectos que tienen recursos en la nube y que se probaron y están listos para usar. En este plano, la carpeta Producción contiene el proyecto de transferencia de datos y el proyecto de datos.
No producción Contiene proyectos que tienen recursos en la nube que están en proceso de prueba y de preparación para el lanzamiento. En este plano, la carpeta No producción contiene el proyecto de transferencia de datos y el proyecto de datos.
Desarrollo Contiene proyectos que tienen recursos en la nube que están en proceso de desarrollando. En este plano, la carpeta Desarrollo contiene el proyecto de transferencia de datos y el proyecto de datos.

Puedes cambiar los nombres de estas carpetas para que se alineen con la estructura de carpetas de tu organización, pero te recomendamos que mantengas una estructura similar. Para obtener más información, consulta el plano de bases empresariales de Google Cloud.

Proyectos

Puedes aislar partes de tu entorno mediante proyectos. En la siguiente tabla, se describen los proyectos que se necesitan dentro de la organización. Crea estos proyectos cuando ejecutes el código de Terraform. Puedes cambiar los nombres de estos proyectos, pero te recomendamos que mantengas una estructura de proyecto similar.

Proyecto Descripción
Transferencia de datos Contiene los servicios que son necesarios para recibir datos y escribirlos en BigQuery.
Administración de datos Contiene servicios que proporcionan funciones de administración de claves, registro y catalogación de datos.
Datos Contiene los servicios que se requieren para almacenar datos.

Además de estos proyectos, tu entorno también debe incluir un proyecto que aloje un trabajo de plantilla de Flex de Dataflow. El trabajo de plantilla de Flex es necesario para la canalización de transmisión de datos.

Asigna roles y grupos a proyectos

Debes otorgar a diferentes grupos de usuarios en tu organización acceso a los proyectos que conforman el almacén de datos confidencial. En las siguientes secciones, se describen las recomendaciones del plano para los grupos de usuarios y las asignaciones de roles en los proyectos que creas. Puedes personalizar los grupos para que se adapten a la estructura existente de tu organización, pero te recomendamos que mantengas una división de tareas y una asignación de roles similares.

Grupo de analistas de datos

Los analistas de datos ven y analizan los datos en el almacén. Este grupo puede ver los datos después de que se hayan cargado en el almacén de datos y realizar las mismas operaciones que el grupo de visualizador de datos encriptados. Este grupo necesita roles en diferentes proyectos, como se describe en la siguiente tabla.

Alcance de la asignación Roles
Proyecto de transferencia de datos
Proyecto de datos
Nivel de la política de datos Lector enmascarado (roles/bigquerydatapolicy.maskedReader)

Grupo de visualizadores de datos encriptados

El grupo de visualizadores de datos encriptados puede ver los datos encriptados de las tablas de informes de BigQuery a través de Cloud Looker Studio y otras herramientas de informes, como SAP Business Object. El grupo de visualizadores de datos encriptados no puede ver los datos de texto simple de las columnas encriptadas.

Este grupo requiere el rol de usuario de BigQuery (roles/bigquery.jobUser) en el proyecto de datos. Este grupo también requiere el lector enmascarado (roles/bigquerydatapolicy.maskedReader) a nivel de la política de datos.

Grupo de lectores de texto sin formato

El grupo de lectores de texto sin formato tiene el permiso necesario para llamar a la función definida por el usuario (UDF) de desencriptación para ver los datos de texto sin formato y el permiso adicional para leer los datos sin enmascarar. Este grupo requiere roles en el proyecto de datos, como se describe en la siguiente tabla.

Este grupo requiere los siguientes roles en el proyecto de datos:

Además, este grupo requiere el rol de Lector detallado (roles/datacatalog.categoryFineGrainedReader) a nivel de Data Catalog.

Grupo de ingenieros de datos

Los ingenieros de datos configuran y mantienen el almacén y la canalización de datos. Este grupo necesita roles en diferentes proyectos, como se describe en la siguiente tabla.

Alcance de la asignación Roles
Proyecto de transferencia de datos
Proyecto de datos
  • Editor de datos de BigQuery (roles/bigquery.dataeditor)
  • Usuario de trabajo de BigQuery (roles/bigquery.jobUser)
  • Editor de Cloud Build (roles/cloudbuild.builds.editor)
  • Visualizador de Cloud KMS (roles/cloudkms.viewer)
  • Usuario de la red de Compute (roles/compute.networkuser)
  • Administrador de Dataflow (roles/dataflow.admin)
  • Administrador de DLP (roles/dlp.admin)
  • Visor de registros (roles/logging.viewer)

Grupo de administradores de redes

Los administradores de redes configuran la red. Por lo general, son miembros del equipo de redes.

Los administradores de red requieren los siguientes roles a nivel de la organización:

  • Administrador de Compute (roles/compute.networkAdmin)
  • Visor de registros (roles/logging.viewer)

Grupo de administradores de seguridad

Los administradores de seguridad administran los controles de seguridad como el acceso, las claves, las reglas de firewall, Controles del servicio de VPC y Security Command Center.

Los administradores de seguridad requieren los siguientes roles a nivel de la organización:

Grupo de analistas de seguridad

Los analistas de seguridad supervisan y responden a los incidentes de seguridad y los resultados de Cloud DLP.

Los analistas de seguridad requieren los siguientes roles a nivel de la organización:

Ejemplo de flujos de acceso a grupos

En las siguientes secciones, se describen los flujos de acceso para dos grupos dentro de la solución de almacén de datos seguro.

Flujo de acceso para el grupo de visualizadores de datos encriptados

En el siguiente diagrama, se muestra lo que sucede cuando un usuario del grupo de visualizador de datos encriptados intenta acceder a los datos encriptados en BigQuery.

El flujo para el grupo de visualizadores de datos encriptados.

Los pasos para acceder a los datos en BigQuery son los siguientes:

  1. El visualizador de datos encriptados ejecuta la siguiente consulta en BigQuery para acceder a datos confidenciales:

    SELECT ssn, pan FROM cc_card_table
    
  2. BigQuery verifica el acceso de la siguiente manera:

    • El usuario se autentica con las credenciales válidas y no vencidas de Google Cloud.
    • La identidad del usuario y la dirección IP desde la que se originó la solicitud son parte de la lista de anunciantes permitidos en la regla de nivel de acceso/entrada en el perímetro de los Controles del servicio de VPC.
    • IAM verifica que el usuario tenga los roles adecuados y que esté autorizado para acceder a las columnas encriptadas seleccionadas en la tabla de BigQuery.

BigQuery muestra los datos confidenciales en formato encriptado.

Flujo de acceso para el grupo de lectores de texto sin formato

En el siguiente diagrama, se muestra lo que sucede cuando un usuario del grupo de lectores de texto sin formato intenta acceder a los datos encriptados en BigQuery.

El flujo para el grupo de lectores de texto sin formato.

Los pasos para acceder a los datos en BigQuery son los siguientes:

  1. El lector de texto simple ejecuta la siguiente consulta en BigQuery para acceder a los datos confidenciales en formato desencriptado:

    SELECT decrypt_ssn(ssn) FROM cc_card_table
    
  2. BigQuery llama a la función definida por el usuario (UDF) de desencriptación dentro de la consulta para acceder a las columnas protegidas.

  3. El acceso se verifica de la siguiente manera:

    • IAM verifica que el usuario tenga los roles adecuados y que esté autorizado para acceder a la UDF de desencriptación en BigQuery.
    • La UDF recupera la clave de encriptación de datos unida (DEK) que se usó para proteger las columnas de datos sensibles.

    La UDF de desencriptación llama a la clave de encriptación de claves (KEK) en Cloud HSM para separar la DEK. La UDF de desencriptación usa la función de desencriptación AEAD de BigQuery para desencriptar las columnas de datos sensibles.

  4. Se le otorga al usuario acceso a los datos de texto sin formato en las columnas de datos sensibles.

Información sobre los controles de seguridad que necesitas

En esta sección, se analizan los controles de seguridad dentro de Google Cloud que usas para proteger tu almacén de datos. Los principios clave de seguridad que debes considerar son los siguientes:

  • Protege el acceso mediante la adopción de principios de privilegios mínimos.
  • Protege las conexiones de red a través del diseño y las políticas de segmentación.
  • Protege la configuración de cada uno de los servicios
  • Clasifica y protege datos según su nivel de riesgo.
  • Comprende los requisitos de seguridad para el entorno que aloja el almacén de datos
  • Configura la supervisión y el registro suficientes para la detección, investigación y respuesta.

Controles de seguridad para la transferencia de datos

Para crear tu almacén de datos, debes transferir datos desde otra fuente en tu entorno local, otra nube o alguna otra fuente de Google Cloud. Este documento se centra en la transferencia de datos desde tu entorno local o desde otra nube; Si transfieres datos desde otra fuente de Google Cloud, consulta Importa datos de Google Cloud a un almacén de datos seguro de BigQuery.

Puedes usar una de las siguientes opciones para transferir tus datos al almacén de datos en BigQuery:

  • Un trabajo por lotes que carga datos en un bucket de Cloud Storage.
  • Un trabajo de transmisión que use Pub/Sub.

Para proteger los datos durante la transferencia, puedes usar la encriptación del cliente, las reglas de firewall y las políticas de nivel de acceso. En ocasiones, el proceso de transferencia se conoce como proceso de extracción, transformación y carga (ETL).

Conexión encriptada a Google Cloud

Puedes usar Cloud VPN o Cloud Interconnect para proteger todos los datos que fluyen entre Google Cloud y tu entorno. En este plano, se recomienda la interconexión dedicada, porque proporciona una conexión directa y una capacidad de procesamiento alta, lo que es importante si transmites muchos datos.

Para permitir el acceso a Google Cloud desde tu entorno, debes definir las direcciones IP incluidas en la lista de entidades permitidas en las reglas de la política de niveles de acceso.

Reglas de firewall y red

Las reglas de firewall de la nube privada virtual (VPC) controlan el flujo de datos en los perímetros. Puedes crear reglas de firewall que rechacen todas las salidas, excepto conexiones TCP específicas del puerto 443 de los nombres de dominio especiales de restricted.googleapis.com. Usar el dominio restricted.googleapis.com tiene los siguientes beneficios:

  • Ayuda a reducir la superficie de ataque de la red usando el Acceso privado a Google cuando las cargas de trabajo se comunican con los servicios y las APIs de Google.
  • Garantiza que solo uses servicios que admitan los Controles del servicio de VPC.

Para obtener más información, consulta Configura el Acceso privado a Google.

La canalización de datos requiere que abras puertos TCP en el firewall, como se define en:firewall_dataflow.tf el archivo en elmódulo de aprovechamiento-proyectos Repository. Para obtener más información, consulta Configura el acceso a Internet y las reglas de firewall.

Para denegar a los recursos la capacidad de usar direcciones IP externas, la política de la organización Define IP externas permitidas para instancias de VM (compute.vmExternalIpAccess) está configurada para rechazar todas.

Controles perimetrales

Como se muestra en el diagrama de arquitectura, debes colocar los recursos del almacén de datos en perímetros separados. Para permitir que los servicios en diferentes perímetros compartan datos, crea puentes perimetrales.

Los puentes perimetrales permiten que los servicios protegidos realicen solicitudes de recursos fuera de su perímetro. Estos puentes realizan las siguientes conexiones:

  • Conectan el proyecto de transferencia de datos al proyecto de datos para que los datos se puedan transferir a BigQuery.
  • Conectan el proyecto de datos al proyecto de administración de datos para que Cloud DLP pueda analizar BigQuery en busca de datos confidenciales sin protección.
  • Conectan el proyecto de transferencia de datos al proyecto de administración de datos para acceder a las claves de registro, supervisión y encriptación.

Además de los puentes perimetrales, debes usar reglas de salida para permitir que los recursos protegidos por los perímetros accedan a los recursos que están fuera del perímetro. En esta solución, configurarás reglas de salida para obtener los trabajos externos de la plantilla de Flex de Dataflow que se encuentran en Cloud Storage en un proyecto externo. Para obtener más información, consulta Accede a un recurso de Google Cloud fuera del perímetro.

Política de acceso

Para ayudar a garantizar que solo las identidades específicas (usuario o servicio) puedan acceder a los recursos y los datos, habilita los grupos y los roles de IAM.

Para garantizar que solo fuentes específicas puedan acceder a tus proyectos, habilita una política de acceso para tu organización de Google. Te recomendamos que crees una política de acceso que especifique el rango de direcciones IP permitido para las solicitudes que se originan en tu entorno local y solo permite solicitudes de cuentas de servicio o usuarios específicos. Para obtener más información, consulta Atributos de nivel de acceso.

Encriptación del cliente

Antes de mover tus datos sensibles a Google Cloud, encripta los datos de forma local para protegerlos en reposo y en tránsito. Puedes usar la biblioteca de encriptación Tink o puedes usar otras bibliotecas de encriptación. La biblioteca de encriptación Tink es compatible con la encriptación AEAD de BigQuery, que el plano usa para desencriptar los datos encriptados a nivel de columna después de que se importan los datos.

La biblioteca de encriptación Tink usa las DEK que puedes generar de forma local o desde Cloud HSM. Para unir o proteger la DEK, puedes usar una KEK que se genera en Cloud HSM. La KEK es un conjunto de claves de encriptación simétricas que se almacena de forma segura en Cloud HSM y se administra mediante roles y permisos de IAM.

Durante la transferencia, la DEK unida y los datos se almacenan en BigQuery. BigQuery incluye dos tablas: una para los datos y la otra para la DEK unida. Cuando los analistas necesitan ver datos confidenciales, BigQuery puede usar la desencriptación AEAD para separar la DEK con la KEK y desencriptar la columna protegida.

Además, la encriptación del cliente que usa Tink protege aún más tus datos mediante la encriptación de columnas de datos sensibles en BigQuery. El plano usa las siguientes claves de encriptación de Cloud HSM:

  • Una clave CMEK para el proceso de transferencia que también usa Pub/Sub, la canalización de Dataflow para la transmisión, la carga por lotes de Cloud Storage y los artefactos de Cloud Functions para las cargas por lotes posteriores.
  • La clave criptográfica unida por Cloud HSM para los datos encriptados en tu red mediante Tink.
  • Clave CMEK para el almacén de BigQuery en el proyecto de datos.

Debes especificar la ubicación de CMEK, que determina la ubicación geográfica en la que se almacena la clave y está disponible para acceder. Debes asegurarte de que tus CMEK estén en la misma ubicación que tus recursos. De forma predeterminada, las CMEK se rotan cada 30 días.

Si las obligaciones de cumplimiento de tu organización requieren que administres tus propias claves de forma externa desde Google Cloud, puedes habilitar Cloud External Key Manager. Si usas claves externas, eres responsable de las actividades de administración de claves, incluida la rotación de claves.

Cuentas de servicio y controles de acceso

Las cuentas de servicio son identidades que Google Cloud puede usar para ejecutar solicitudes a la API en tu nombre. Las cuentas de servicio garantizan que las identidades de usuario no tengan acceso directo a los servicios. Para permitir la separación de obligaciones, crea cuentas de servicio con diferentes roles para propósitos específicos. Estas cuentas de servicio se definen en el módulo de datos-transferencia-sa y en el módulo de data-governance-sa.

Las cuentas de servicio son las siguientes:

  • La cuenta de servicio de Cloud Storage ejecuta el proceso automatizado de carga de datos por lotes en el bucket de almacenamiento de transferencia.
  • La cuenta de servicio de Pub/Sub permite la transmisión de datos al servicio de Pub/Sub.
  • La canalización de Dataflow usa la cuenta de servicio del controlador de Dataflow para transformar y escribir datos de Pub/Sub a BigQuery.
  • La cuenta de servicio de Cloud Functions escribe datos por lotes posteriores subidos desde Cloud Storage a BigQuery.
  • La cuenta de servicio de carga de almacenamiento permite que la canalización de ETL cree objetos.
  • La cuenta de servicio de escritura de Pub/Sub permite que la canalización de ETL escriba datos en Pub/Sub.

En la siguiente tabla, se enumeran los roles que se asignan a cada cuenta de servicio:

Nombre Roles Alcance de la asignación
Cuenta de servicio del controlador de Dataflow Proyecto de transferencia de datos
Proyecto de datos
Administración de datos
Cuenta de servicio de Cloud Functions Proyecto de transferencia de datos
  • Editor de datos de BigQuery (roles/bigquery.dataEditor)
  • Visualizador de metadatos de BigQuery (roles/bigquery.metadataViewer)
Proyecto de datos
Cuenta de servicio de carga de almacenamiento Proyecto de transferencia de datos
Cuenta de servicio de escritura de Pub/Sub Proyecto de transferencia de datos

Controles de seguridad para el almacenamiento de datos

Configura los siguientes controles de seguridad para ayudar a proteger los datos en el almacén de BigQuery:

  • Controles de acceso a nivel de columna
  • Cuentas de servicio con roles limitados
  • Enmascaramiento dinámico de datos de campos sensibles
  • Políticas de la organización
  • Generador automático de perfiles de datos y análisis automático de Cloud DLP
  • Perímetros de los Controles del servicio de VPC entre el proyecto de transferencia de datos y el proyecto de datos, con puentes perimetrales adecuados
  • Encriptación y administración de claves de la siguiente manera:
    • Encriptación en reposo con claves CMEK que se almacenan en Cloud HSM
    • Encriptación a nivel de columna mediante la encriptación AEAD de Tink y BigQuery

Enmascaramiento dinámico de datos

Para ayudar a compartir y aplicar políticas de acceso a los datos a gran escala, puedes configurar el enmascaramiento dinámico de datos. El enmascaramiento de datos dinámico permite que las consultas existentes enmascaren automáticamente los datos de columnas mediante los siguientes criterios:

  • Las reglas de enmascaramiento que se aplican a la columna en el entorno de ejecución de la consulta.
  • Los roles que se asignan al usuario que ejecuta la consulta. Para acceder a los datos de columnas sin enmascarar, el analista de datos debe tener el rol Lector detallado.

Para definir el acceso a las columnas en BigQuery, crea etiquetas de política. Por ejemplo, la taxonomía creada en el ejemplo independiente crea la etiqueta de política 1_Sensitive para las columnas que incluyen datos que no se pueden hacer públicos, como el límite de crédito. La regla de enmascaramiento de datos predeterminada se aplica a estas columnas para ocultar el valor de la columna.

Todo lo que no esté etiquetado está disponible para todos los usuarios que tienen acceso al almacén de datos. Estos controles de acceso garantizan que, incluso después de que los datos se escriban en BigQuery, los datos en campos sensibles no se puedan leer hasta que se otorgue al usuario acceso de forma explícita.

Encriptación y desencriptación a nivel de columna

La encriptación a nivel de columna te permite encriptar datos en BigQuery a un nivel más detallado. En lugar de encriptar una tabla completa, debes seleccionar las columnas que contienen datos sensibles dentro de BigQuery, y solo esas columnas se encriptan. BigQuery usa funciones de encriptación y desencriptación AEAD que crean los conjuntos de claves que contienen las claves para la encriptación y desencriptación. Estas claves se usan para encriptar y desencriptar valores individuales en una tabla y rotar las claves dentro de un conjunto de claves. La encriptación a nivel de columna proporciona un control de acceso doble en los datos encriptados en BigQuery, ya que el usuario debe tener permisos para la tabla y la clave de encriptación para leer datos en texto simple.

Generador de perfiles de datos para BigQuery con Cloud DLP

El generador de perfiles de datos te permite identificar las ubicaciones de datos sensibles y de alto riesgo en tablas de BigQuery. El generador de perfiles de datos analiza y analiza de forma automática todas las tablas y columnas de BigQuery en toda la organización, incluidas las carpetas y los proyectos. Luego, el generador de perfiles de datos genera métricas como los Infotipos previstos, los niveles de sensibilidad y riesgo de datos evaluados y los metadatos de las tablas. Con estas estadísticas, puedes tomar decisiones fundamentadas sobre cómo proteger, compartir y usar tus datos.

Cuentas de servicio con roles limitados

Debes limitar el acceso al proyecto de datos para que solo los usuarios autorizados puedan ver los campos de datos sensibles. Para hacerlo, crea una cuenta de servicio con el rol roles/iam.serviceAccountUser en cuyo nombre deben actuar los usuarios autorizados. Actuar en nombre de cuentas de servicio permite a los usuarios usar cuentas de servicio sin descargar las claves de las cuentas de servicio, lo que mejora la seguridad general de tu proyecto. Cuando se actúa en nombre de cuentas de servicio, se crea un token a corto plazo que pueden descargar los usuarios autorizados que tengan asignado el rol roles/iam.serviceAccountTokenCreator.

Políticas de la organización

Este plano incluye las restricciones de la política de la organización que usa el plano de bases empresariales y agrega restricciones adicionales. Para obtener más información sobre las restricciones que usa el plano de bases empresarial, consulta las restricciones de las políticas de la organización.

En la siguiente tabla, se describen las restricciones adicionales de las políticas de la organización que se definen en el módulo organization-policies.

Política Nombre de la restricción Valor recomendado
Restringe las implementaciones de recursos a ubicaciones físicas específicas. gcp.resourceLocations Uno de los siguientes:
in:us-locations
in:eu-locations
in:asia-locations
Exige la protección con CMEK gcp.restrictNonCmekServices bigquery.googleapis.com
Inhabilita la creación de cuentas de servicio iam.disableServiceAccountCreation verdadero
Inhabilitar la creación de claves de cuentas de servicio disableServiceAccountKeyCreation verdadero
Habilita el Acceso al SO para las VMs creadas en el proyecto compute.requireOsLogin verdadero
Inhabilita las asignaciones automáticas de roles a las cuentas de servicio predeterminadas automaticIamGrantsForDefaultServiceAccounts verdadero
Configuración de entrada permitida (Cloud Functions) cloudfunctions.allowedIngressSettings ALLOW_INTERNAL_AND_GCLB
Restringe las reglas de reenvío nuevas para que sean solo internas, según la dirección IP. compute.restrictProtocolForwardingCreationForTypes INTERNAL
Inhabilita el registro de salida del puerto en serie en Cloud Logging compute.disableSerialPortLogging true
Define el conjunto de subredes de VPC compartidas que los recursos de Compute Engine pueden usar. compute.restrictSharedVpcSubnetworks projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK-NAME

Reemplaza SUBNETWORK-NAME por el ID de recurso de la subred privada que deseas que use el plano.

Controles operativos

Puedes habilitar el registro y las funciones de nivel Premium de Security Command Center, como las estadísticas del estado de seguridad y la detección de amenazas. Estos controles te ayudan a hacer lo siguiente:

  • Supervisar quién accede a tus datos.
  • Asegurarse de que la auditoría sea la correcta.
  • Generar resultados para recursos de nube mal configurados
  • Admitir la capacidad de los equipos de operaciones y administración de incidentes para responder a problemas que puedan ocurrir.

Transparencia de acceso

La Transparencia de acceso te proporciona notificaciones en tiempo real en caso de que el personal de Atención al cliente de Google requiera acceso a tus datos. Los registros de Transparencia de acceso se generan cada vez que un humano accede al contenido y solo el personal de Google que tiene justificaciones comerciales válidas (por ejemplo, un caso de asistencia) puede obtener acceso. Te recomendamos habilitar la Transparencia de acceso.

Logging

Para ayudarte a cumplir con los requisitos de auditoría y obtener estadísticas sobre tus proyectos, configura Google Cloud Observability con registros de datos para los servicios de los que deseas realizar un seguimiento. El módulo de registro de aprovechamiento configura las siguientes prácticas recomendadas:

Para todos los servicios de los proyectos, los registros deben incluir información sobre operaciones de lectura y escritura de datos, e información sobre lo que leen los administradores. Para obtener prácticas recomendadas de registro adicionales, consulta Controles de detección en el plano de bases empresariales.

Alertas y supervisión

Después de implementar el plano, puedes configurar alertas para notificar a tu centro de operaciones de seguridad (SOC) que puede estar ocurriendo un incidente de seguridad. Por ejemplo, puedes usar alertas para informar a tu analista de seguridad cuando cambie un permiso de IAM. Para obtener más información sobre cómo configurar alertas de Security Command Center, consulta Configura las notificaciones de hallazgos. Para las alertas adicionales que Security Command Center no publica, puedes configurar alertas con Cloud Monitoring.

Consideraciones de seguridad adicionales

Además de los controles de seguridad que se describen en esta solución, debes revisar y administrar la seguridad y el riesgo en áreas clave que se superponen e interactúan con el uso de esta solución. Estas consideraciones de seguridad incluyen lo siguiente:

  • La seguridad del código que usas para configurar, implementar y ejecutar trabajos de Dataflow y Cloud Functions.
  • La taxonomía de clasificación de datos que usas con esta solución.
  • Generación y administración de claves de encriptación.
  • El contenido, la calidad y la seguridad de los conjuntos de datos que almacenas y analizas en el almacén de datos.
  • El entorno general en el que implementas la solución, que incluye lo siguiente:
    • El diseño, la segmentación y la seguridad de las redes que conectas a esta solución.
    • La seguridad y la administración de los controles de IAM de tu organización.
    • La configuración de autenticación y autorización de los actores a los que otorgas acceso a la infraestructura que forma parte de esta solución y que tienen acceso a los datos que se almacenan y administran en esa infraestructura.

Revisión general

Para implementar la arquitectura que se describe en este documento, haz lo siguiente:

  1. Determina si implementarás el plano con el plano de bases empresariales o por su cuenta. Si eliges no implementar el modelo del plano de bases empresarial, asegúrate de que tu entorno tenga un modelo de referencia de seguridad similar implementado.
  2. Configura una interconexión dedicada con tu red.
  3. Revisa el archivo readme del plano y asegúrate de cumplir con todos los requisitos.
  4. Verifica que tu identidad de usuario tenga los roles iam.serviceAccountUser y iam.serviceAccountTokenCreator para la carpeta de desarrollo de tu organización, como se describe en Estructura de la organización. Si no tienes una carpeta para las pruebas, crea una carpeta y configura el acceso.
  5. Registra el ID de la cuenta de facturación, el nombre visible de la organización, el ID de carpeta de la carpeta de prueba o demostración, y las direcciones de correo electrónico para los siguientes grupos de usuarios:
    • Analistas de datos
    • Visualizador de datos encriptados
    • Lector de texto sin formato
    • Ingenieros de datos
    • Administradores de red
    • Administradores de seguridad
    • Analistas de seguridad
  6. Crea los proyectos de datos, administración de datos, transferencia de datos y plantilla de Flex. Para obtener una lista de las APIs que debes habilitar, consulta el archivo README.
  7. Crea la cuenta de servicio para Terraform y asigna los roles adecuados para todos los proyectos.
  8. Configura la política de control de acceso.
  9. En tu entorno de pruebas, implementa la solución:

    1. Clona y ejecuta las secuencias de comandos de Terraform para configurar un entorno en Google Cloud.
    2. Instala la biblioteca de encriptación Tink en tu red.
    3. Configura las credenciales predeterminadas de la aplicación para que puedas ejecutar la biblioteca Tink en tu red.
    4. Crea claves de encriptación con Cloud KMS.
    5. Genera conjuntos de claves encriptados con Tink.
    6. Encripta datos con Tink mediante uno de los siguientes métodos:

    7. Sube datos encriptados a BigQuery mediante cargas de transmisión o por lotes.

  10. Verifica que los usuarios autorizados puedan leer datos sin encriptar de BigQuery con la función de desencriptación AEAD de BigQuery. Por ejemplo, ejecuta la siguiente función de creación de desencriptación:

    CREATE OR REPLACE FUNCTION `{project_id}.{bigquery_dataset}.decrypt`(encodedText STRING) RETURNS STRING AS
    (
    AEAD.DECRYPT_STRING(
    KEYS.KEYSET_CHAIN('gcp-kms://projects/myProject/locations/us/keyRings/myKeyRing/cryptoKeys/myKeyName', b'\012\044\000\321\054\306\036\026…..'),
    FROM_BASE64(encodedText), "")
    );
    

    Ejecuta la consulta para crear una vista:

    CREATE OR REPLACE VIEW `{project_id}.{bigquery_dataset}.decryption_view` AS
    
    SELECT
     Card_Type_Code,
     Issuing_Bank,
     Card_Number,
     `bigquery_dataset.decrypt`(Card_Number) AS Card_Number_Decrypted
    FROM `project_id.dataset.table_name`
    

    Ejecuta la consulta de selección desde la vista:

    SELECT
      Card_Type_Code,
      Issuing_Bank,
      Card_Number,
      Card_Number_Decrypted
    FROM
    `{project_id}.{bigquery_dataset}.decrypted_view`
    

    Para obtener más información sobre consultas y casos de uso, consulta Encriptación a nivel de columna con Cloud KMS.

  11. Usa Security Command Center para analizar los proyectos recién creados según tus requisitos de cumplimiento.

  12. Implementa el plano en tu entorno de producción.

Próximos pasos