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.
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
- Subir. Abrir logtotal.com y coloque el archivo .jsonl.
- Sanitizar.
- Revisar.
Cuando algo sale mal
| Síntoma | Causa probable | Fix |
|---|---|---|
| La consulta escanea toda la tabla | Sin filtro en la columna de partición o de tiempo | Filtrar por marca de tiempo (o _PARTITIONTIME) |
| EXPORT DATA falla en la URI | Sin comodín en la URI | Usar …/*.json |
| Permiso denegado para escribir en el bucket | Faltan derechos para crear objetos de almacenamiento | Conceder acceso de escritura en el bucket |
| Salida de bq cortada a 100 filas | Valor predeterminado –max_rows | Establecer –max_rows, o usar EXPORT DATA |
| Los campos anidados se ven extraños | Las columnas repetidas y anidadas mantienen su estructura | Esperado; 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.