Optimizar una tabla grande de BigQuery para el costo y el rendimiento de las consultas.
→Particionar la tabla por una columna de unidad de tiempo frecuentemente filtrada (por ejemplo, fecha de transacción). Agrupar la tabla por otras columnas de alta cardinalidad y frecuentemente filtradas (por ejemplo, `customer_id`).
Por qué: El particionamiento es la forma más efectiva de reducir el costo y la latencia al podar la cantidad de datos escaneados. El agrupamiento mejora aún más el rendimiento al ordenar los datos dentro de las particiones.
Referencia↗
Prevenir que los datos de un conjunto de datos sensible de BigQuery sean copiados a un destino no autorizado (por ejemplo, un bucket público de GCS), incluso por un usuario con credenciales válidas.
→Usar Controles de Servicio de VPC (VPC Service Controls) para crear un perímetro de servicio alrededor del proyecto que contiene el conjunto de datos de BigQuery.
Por qué: Los Controles de Servicio de VPC actúan como un "cortafuegos virtual" para los servicios de GCP, evitando que los datos salgan del perímetro. Este es un control crítico de defensa en profundidad contra la exfiltración de datos.
Referencia↗
Restringir el acceso a columnas sensibles (por ejemplo, PII) en una tabla de BigQuery a grupos autorizados, mientras se permite a otros consultar las columnas restantes.
→Usar Data Catalog para crear una taxonomía y etiquetas de política. Aplicar etiquetas de política a columnas sensibles y otorgar el rol de "Lector de Granularidad Fina" (Fine-Grained Reader) a grupos autorizados.
Por qué: Este es el método nativo y escalable para la seguridad a nivel de columna en BigQuery. Proporciona gobernanza centralizada sin necesidad de crear y gestionar vistas separadas.
Filtrar una tabla para que los usuarios solo puedan ver las filas que les corresponden (por ejemplo, los gerentes de ventas solo ven los datos de su propia región).
→Crear una política de seguridad a nivel de fila (Row-Level Security Policy) en la tabla que filtra las filas basándose en `SESSION_USER()`.
Por qué: Proporciona filtrado dinámico basado en predicados en tiempo de consulta. Esto es más seguro y manejable que crear una vista autorizada para cada usuario o rol.
Eliminar automáticamente datos de una tabla de BigQuery después de un período de retención especificado para cumplir con las regulaciones (por ejemplo, eliminar datos de más de 7 años).
→Para datos de series temporales, establecer una caducidad de partición en la tabla particionada por tiempo. Para otras tablas, establecer la caducidad predeterminada de la tabla.
Por qué: Esta es una característica incorporada, de "configurar y olvidar", que garantiza el cumplimiento sin scripts de limpieza manuales u orquestación externa.
Una tabla de BigQuery fue modificada o eliminada accidentalmente.
→Usar BigQuery Time Travel para consultar la tabla tal como existía en un punto en el tiempo antes del incidente, utilizando `FOR SYSTEM_TIME AS OF`.
Por qué: BigQuery mantiene automáticamente un historial de 7 días de los datos de la tabla. Esto permite una recuperación instantánea dentro de la ventana de Time Travel sin necesidad de restaurar desde copias de seguridad.
Referencia↗
Descubrir, gestionar, proteger y monitorear activos de datos (BigQuery, GCS) en toda una organización.
→Usar Dataplex.
Por qué: Dataplex actúa como un tejido de datos inteligente, proporcionando un panel unificado para la gobernanza, calidad, linaje, descubrimiento y gestión del ciclo de vida de los datos a través de silos de datos dispares.
Comprender y visualizar cómo fluyen los datos desde los sistemas de origen, a través de trabajos de transformación, hasta las tablas de informes finales.
→Usar Dataplex Data Lineage.
Por qué: Captura automáticamente la información de linaje de BigQuery, Data Fusion y los registros de Composer para proporcionar una vista interactiva basada en gráficos de las dependencias de datos para análisis de impacto y auditorías.
Asegurar un rendimiento y costo de consulta predecibles para cargas de trabajo críticas, evitando la "contención de slots" de otros usuarios.
→Comprar ediciones de BigQuery (precios basados en capacidad). Crear reservas para dedicar un conjunto de slots a proyectos o carpetas específicos.
Por qué: Cambia de un grupo compartido bajo demanda a una capacidad de cómputo dedicada, garantizando recursos para trabajos críticos y proporcionando una facturación predecible.
Escanear todos los activos de datos en BigQuery y Cloud Storage para identificar y clasificar automáticamente PII y otros datos sensibles.
→Configurar un trabajo de escaneo de descubrimiento de Cloud Data Loss Prevention (DLP).
Por qué: Cloud DLP utiliza cientos de detectores predefinidos para encontrar datos sensibles a escala. Puede integrarse con Data Catalog para aplicar automáticamente etiquetas de política para la gobernanza.
Una aplicación en contenedores (en GKE o Cloud Run) necesita autenticarse de forma segura en BigQuery sin gestionar claves de cuenta de servicio.
→Usar Workload Identity.
Por qué: La mejor práctica recomendada para la autenticación de servicio a servicio. Asigna una cuenta de servicio de Kubernetes a una cuenta de servicio de GCP IAM, utilizando tokens de corta duración y rotados automáticamente.
Para cumplir con normativas, generar un informe de todos los usuarios que han consultado una tabla sensible de BigQuery en los últimos 90 días.
→Habilitar y consultar los registros de auditoría de acceso a datos de BigQuery, que pueden ser enrutados a un conjunto de datos de BigQuery para su análisis.
Por qué: Los registros de acceso a datos proporcionan un registro inmutable de quién accedió a qué datos y cuándo. Son esenciales para las auditorías de seguridad y cumplimiento, pero deben habilitarse explícitamente.
Identificar qué usuarios o consultas son responsables de los altos costos de BigQuery.
→Consultar la vista `INFORMATION_SCHEMA.JOBS`.
Por qué: Esta vista de metadatos contiene información detallada para cada consulta ejecutada, incluyendo el usuario, los bytes facturados y los slots consumidos, lo que permite una atribución y análisis preciso de los costos.