Jak eksportować logi BigQuery

Jak eksportować logi BigQuery

SOC Prime Team
SOC Prime Team linkedin icon Śledź

Gdy logi bezpieczeństwa znajdują się w BigQuery (z przesyłania do Cloud Logging, eksportu Google Workspace lub własnej linii danych), eksportuj je za pomocą EXPORT DATA. Zapisuje on dane w formacie JSON z końcami linii w koszu Cloud Storage, skąd można je pobrać. Dla małych wyników bq query –format=json bezpośrednio wypisuje wiersze. W każdym przypadku najpierw filtruj na kolumnie czasu lub partycji tabeli, ponieważ BigQuery rozlicza się na podstawie przeskanowanych danych.

BigQuery to miejsce, gdzie wiele zespołów Google Cloud przechowuje historię logów długo po upływie domyślnego okresu przechowywania w Cloud Logging. Prime Core ma ponad 24 000 unikalnych reguł wykrywania, powiązanych z 676 technikami MITRE ATT&CK. Poniżej opisano, jak uzyskać wycinek, zanonimizować go i bezpłatnie zbadać w LogTotal.

Rozpocznij bezpłatnie

Zanim zaczniesz

Uprawnienia. Musisz uruchamiać zadania (BigQuery Job User), odczytywać zestaw danych (BigQuery Data Viewer) i zapisywać do kosza eksportowego.

Poznaj tabele. Użycie Cloud Logging sink do BigQuery tworzy tabele nazwane po logach, na przykład cloudaudit_googleapis_com_activity, często partycjonowane wg znaczników czasowych. Eksporty z Workspace mają własny schemat.

Najpierw sprawdź koszt. Dodaj –dry_run do zapytania bq, aby sprawdzić, ile bajtów zostanie zeskanowanych. Jeśli liczba przyprawia Cię o grymas, dodaj ściślejszy filtr czasowy.

Opcja 1: EXPORT DATA do 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');

URI potrzebuje symbolu wieloznacznego (*), ponieważ BigQuery może zapisać kilka plików. Pobierz i połącz je:

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

Opcja 2: zapytanie bq dla małych wyników

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 wypisuje tablicę JSON, którą jq flattenuje na jeden wiersz na linię.

Prześlij, zanonimizuj i przejrzyj w LogTotal

  1. Prześlij. Otwórz logtotal.com i upuść plik .jsonl.
  2. Anonimizuj. 
  3. Przejrzyj. 

Gdy coś pójdzie nie tak

ObjawPrawdopodobna przyczynaFix
Zapytanie skanuje całą tabelęBrak filtra na kolumnie partycji lub czasuFiltruj po znaczniku czasu (lub _PARTITIONTIME)
EXPORT DATA nie działa na URIBrak znaku wieloznacznego w URIUżyj …/*.json
Odmowa dostępu przy zapisie do koszaBrak uprawnień do tworzenia obiektów StoragePrzyznaj dostęp do zapisu w koszu
Wynik bq obcięty przy 100 wierszachDomyślne –max_rowsUstaw –max_rows lub użyj EXPORT DATA
Pola zagnieżdżone wyglądają dziwniePowtarzane i zagnieżdżone kolumny zachowują swoją strukturęOczekiwane; nadal jest to poprawny JSON

FAQ

Czy to to samo co eksport z Cloud Logging?

Nie. Cloud Logging ma własny eksport. Ten przewodnik dotyczy logów, które już istnieją w tabelach BigQuery.

Czy mogę wyeksportować całą tabelę bez zapytania

Tak: bq extract –destination_format NEWLINE_DELIMITED_JSON kopiuje tabelę lub partycję do Cloud Storage. Do celów śledczych zwykle lepsze jest filtrowane zapytanie.

Dołącz do platformy Detection as Code firmy SOC Prime aby zwiększyć widoczność zagrożeń najbardziej istotnych dla Twojego biznesu. Aby pomóc Ci rozpocząć i natychmiast uzyskać wartość, umów się teraz na spotkanie z ekspertami SOC Prime.