Cómo Exportar Registros de BigQuery

Cómo Exportar Registros de BigQuery

SOC Prime Team
SOC Prime Team linkedin icon Seguir

Cuando los registros de seguridad están en BigQuery (desde un sumidero de Cloud Logging, una exportación de Google Workspace o su propio pipeline), expórtelos con EXPORT DATA. Esto escribe JSON delimitado por saltos de línea en un bucket de Cloud Storage, y usted lo descarga. Para resultados pequeños, bq query –format=json imprime las filas directamente. De cualquier manera, filtre primero en la tabla por tiempo o columna de partición, porque BigQuery cobra por datos escaneados.

BigQuery es donde muchos equipos de Google Cloud mantienen el historial de registros mucho después de que la retención predeterminada de Cloud Logging ha pasado. Prime Core tiene más de 24,000 reglas de detección únicas, mapeadas a 676 técnicas del MITRE ATT&CK. A continuación se muestra cómo obtener una porción, sanitizarla e investigarla gratis en LogTotal.

Empezar gratis

Antes de comenzar

Permisos. Necesita ejecutar trabajos (Usuario de Trabajo de BigQuery), leer el conjunto de datos (Visualizador de Datos de BigQuery) y escribir en el bucket de exportación.

Conozca las tablas. Un sumidero de Cloud Logging a BigQuery crea tablas nombradas según los registros, por ejemplo, cloudaudit_googleapis_com_activity, a menudo particionadas por marca de tiempo. Las exportaciones de Workspace tienen su propio esquema.

Verifique el costo primero. Añada –dry_run a una consulta bq para ver cuántos bytes escanearía. Si el número lo hace estremecerse, agregue un filtro de tiempo más estrecho.

Opción 1: EXPORT DATA a Cloud Storage

EXPORT DATA OPTIONS (
  uri = 'gs://my-bq-exports/audit-20261019/*.json',
  format = 'JSON',
  overwrite = true
) AS
SELECT *
FROM `my-project.audit_logs.cloudaudit_googleapis_com_activity`
WHERE timestamp >= TIMESTAMP('2026-10-19') AND timestamp < TIMESTAMP('2026-10-20');

La URI necesita un comodín (*), porque BigQuery puede escribir varios archivos. Descargue y combínelos:

gcloud storage cp 'gs://my-bq-exports/audit-20261019/*' ./audit-20261019/
cat ./audit-20261019/*.json > bq_audit_20261019.jsonl

Opción 2: bq query para resultados pequeños

bq query --nouse_legacy_sql --format=json --max_rows=10000 
  'SELECT * FROM `my-project.audit_logs.cloudaudit_googleapis_com_activity`
  WHERE timestamp >= TIMESTAMP("2026-10-19") AND timestamp < TIMESTAMP("2026-10-20")'
  > bq_audit_small.json

jq -c '.[]' bq_audit_small.json > bq_audit_small.jsonl

–format=json imprime un array JSON, que jq aplana a una fila por línea.

Subir, sanitizar y revisar en LogTotal

  1. Subir. Abrir logtotal.com y coloque el archivo .jsonl.
  2. Sanitizar. 
  3. Revisar. 

Cuando algo sale mal

SíntomaCausa probableFix
La consulta escanea toda la tablaSin filtro en la columna de partición o de tiempoFiltrar por marca de tiempo (o _PARTITIONTIME)
EXPORT DATA falla en la URISin comodín en la URIUsar …/*.json
Permiso denegado para escribir en el bucketFaltan derechos para crear objetos de almacenamientoConceder acceso de escritura en el bucket
Salida de bq cortada a 100 filasValor predeterminado –max_rowsEstablecer –max_rows, o usar EXPORT DATA
Los campos anidados se ven extrañosLas columnas repetidas y anidadas mantienen su estructuraEsperado; todavía es JSON válido

FAQ

¿Es esto lo mismo que exportar desde Cloud Logging?

No. Cloud Logging tiene su propia exportación. Esta guía es para registros que ya viven en tablas de BigQuery.

¿Puedo exportar una tabla completa sin una consulta?

Sí: bq extract –destination_format NEWLINE_DELIMITED_JSON copia una tabla o una partición a Cloud Storage. Para investigaciones, una consulta filtrada suele ser mejor.

Únete a la plataforma Detection as Code de SOC Prime para mejorar la visibilidad de las amenazas más relevantes para tu negocio. Para ayudarte a comenzar y obtener valor inmediato, programa una reunión ahora con los expertos de SOC Prime.