Como Exportar Logs do BigQuery

Como Exportar Logs do BigQuery

SOC Prime Team
SOC Prime Team linkedin icon Seguir

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.

Comece Gratuitamente

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

  1. Upload. Abrir logtotal.com e solte o arquivo .jsonl.
  2. Sanitizar. 
  3. Rever. 

Quando dá errado

SintomaCausa provávelFix
Consulta escaneia a tabela inteiraNenhum filtro na coluna de partição ou tempoFiltre por timestamp (ou _PARTITIONTIME)
EXPORT DATA falha no URINenhum curinga no URIUse …/*.json
Permissão negada ao gravar no bucketFaltam direitos de criação de objeto no StorageConceda acesso de gravação no bucket
Saída bq cortada em 100 linhas–max_rows padrãoDefina –max_rows, ou use EXPORT DATA
Campos aninhados parecem estranhosColunas repetidas e aninhadas mantêm sua estruturaEsperado; 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.

Junte-se à plataforma Detection as Code da SOC Prime para melhorar a visibilidade das ameaças mais relevantes para o seu negócio. Para ajudá-lo a começar e gerar valor imediato, agende uma reunião agora com os especialistas da SOC Prime.