Quando os logs de segurança estão no BigQuery (de um sink do Cloud Logging, uma exportação do Google Workspace ou seu próprio pipeline), exporte-os com EXPORT DATA. Ele grava JSON delimitado por nova linha em um bucket do Cloud Storage, e você baixa isso. Para resultados pequenos, bq query –format=json imprime as linhas diretamente. De qualquer forma, filtre primeiro pelo tempo ou coluna de partição da tabela, porque o BigQuery cobra pelo dado escaneado.
BigQuery é onde muitas equipes do Google Cloud mantêm o histórico de logs muito tempo depois que a retenção padrão do Cloud Logging expirou. Prime Core possui mais de 24.000 regras de detecção únicas, mapeadas para 676 técnicas MITRE ATT&CK. Abaixo está como obter uma fatia, sanitizá-la e investigá-la gratuitamente no LogTotal.
Antes de começar
Permissões. Você precisa executar jobs (Usuário de Job do BigQuery), ler o conjunto de dados (Visualizador de Dados do BigQuery) e gravar no bucket de exportação.
Conheça as tabelas. Um sink do Cloud Logging para o BigQuery cria tabelas nomeadas após os logs, por exemplo, cloudaudit_googleapis_com_activity, frequentemente particionadas por timestamp. Exportações do Workspace têm seu próprio esquema.
Verifique o custo primeiro. Adicione –dry_run a uma consulta bq para ver quantos bytes seriam escaneados. Se o número te fizer estremecer, adicione um filtro de tempo mais restrito.
Opção 1: EXPORT DATA para o Cloud Storage
EXPORT DATA OPTIONS (
uri = 'gs://meus-export-bq/audit-20261019/*.json',
format = 'JSON',
overwrite = true
) COMO
SELECT *
FROM `meu-projeto.audit_logs.cloudaudit_googleapis_com_activity`
WHERE timestamp >= TIMESTAMP('2026-10-19') AND timestamp < TIMESTAMP('2026-10-20');
O URI precisa de um curinga (*), porque o BigQuery pode gravar vários arquivos. Baixe e combine-os:
gcloud storage cp 'gs://meus-export-bq/audit-20261019/*' ./audit-20261019/
cat ./audit-20261019/*.json > bq_audit_20261019.jsonl
Opção 2: bq query para resultados pequenos
bq query --nouse_legacy_sql --format=json --max_rows=10000
'SELECT * FROM `meu-projeto.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 um array JSON, que jq achata para uma linha por linha.
Upload, sanitize e reveja no LogTotal
- Upload. Abrir logtotal.com e solte o arquivo .jsonl.
- Sanitizar.
- Rever.
Quando dá errado
| Sintoma | Causa provável | Fix |
|---|---|---|
| Consulta escaneia a tabela inteira | Nenhum filtro na coluna de partição ou tempo | Filtre por timestamp (ou _PARTITIONTIME) |
| EXPORT DATA falha no URI | Nenhum curinga no URI | Use …/*.json |
| Permissão negada ao gravar no bucket | Faltam direitos de criação de objeto no Storage | Conceda acesso de gravação no bucket |
| Saída bq cortada em 100 linhas | –max_rows padrão | Defina –max_rows, ou use EXPORT DATA |
| Campos aninhados parecem estranhos | Colunas repetidas e aninhadas mantêm sua estrutura | Esperado; ainda é JSON válido |
FAQ
Isso é o mesmo que exportar do Cloud Logging?
Não. O Cloud Logging tem sua própria exportação. Este guia é para logs que já estão em tabelas do BigQuery.
Posso exportar uma tabela inteira sem uma consulta
Sim: bq extract –destination_format NEWLINE_DELIMITED_JSON copia uma tabela ou uma partição para o Cloud Storage. Para investigações, uma consulta filtrada geralmente é melhor.