Як експортувати логи BigQuery

Як експортувати логи BigQuery

SOC Prime Team
SOC Prime Team linkedin icon Стежити

Коли журнали безпеки знаходяться в BigQuery (через приймач Cloud Logging, експорт Google Workspace або ваш власний конвеєр), експортуйте їх за допомогою EXPORT DATA. Він записує JSON, розділений новими рядками, у кошик Cloud Storage, і ви завантажуєте це. Для невеликих результатів bq query –format=json виводить рядки безпосередньо. У будь-якому випадку, спочатку фільтруйте за часом або стовпцем розділення таблиці, тому що BigQuery нараховує плату за дані, які скануються.

BigQuery – це місце, де багато команд Google Cloud зберігають історію логів довго після закінчення стандартного зберігання Cloud Logging. Prime Core має понад 24,000 унікальних правил виявлення, які відповідають 676 технікам MITRE ATT&CK. Нижче показано, як отримати частину, санітизувати її та безкоштовно дослідити у LogTotal.

Почати безкоштовно

Перед початком

Дозволи. Вам потрібно запускати завдання (BigQuery Job User), читати набір даних (BigQuery Data Viewer) та записувати в експортний кошик.

Знайте таблиці. Приймач Cloud Logging у BigQuery створює таблиці, названі за логи, наприклад cloudaudit_googleapis_com_activity, часто розділені за часовими мітками. Workspace експорти мають свою власну схему.

Перевірте вартість спочатку. Додайте –dry_run до bq query, щоб побачити, скільки байтів було б відскановано. Якщо число вас налякало, додайте більш жорсткий часовий фільтр.

Опція 1: EXPORT DATA у 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 потребує підстановочного знака (*), тому що BigQuery може записувати кілька файлів. Завантажте та поєднайте їх:

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

Опція 2: bq query для малих результатів

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 виводить масив JSON, який jq пласкає в один рядок на рядок.

Завантажте, санітизуйте і перегляньте у LogTotal

  1. Завантажити. Відкрити logtotal.com і завантажте .jsonl файл.
  2. Санітизувати. 
  3. Переглянути. 

Коли щось йде не так

СимптомЙмовірна причинаFix
Запит сканує всю таблицюНемає фільтру за колонкою розділення або часуФільтр за часовою міткою (або _PARTITIONTIME)
EXPORT DATA не вдалося на URIНемає підстановочного знака у URIВикористовуйте …/*.json
Відмовлено в доступі до запису на кошикВідсутні права створення об’єкта зберіганняНадайте право на запис у кошик
вихід bq обрізаний на 100 рядківЗа замовчуванням –max_rowsВстановіть –max_rows або використовуйте EXPORT DATA
Вкладені поля виглядають дивноПовторювані та вкладені стовпці зберігають свою структуруОчікувано; це все ще допустимий JSON

FAQ

Це те ж саме, що й експорт з Cloud Logging?

Ні. Cloud Logging має свій власний експорт. Це керівництво для журналів, які вже знаходяться в таблицях BigQuery.

Чи можу я експортувати всю таблицю без запиту

Так: bq extract –destination_format NEWLINE_DELIMITED_JSON копіює таблицю або розділ у Cloud Storage. Для досліджень зазвичай кращий відфільтрований запит.

Приєднуйтесь до платформи Detection as Code від SOC Prime щоб покращити видимість загроз, найбільш актуальних для вашого бізнесу. Щоб допомогти вам розпочати та отримати негайну цінність, забронюйте зустріч зараз з експертами SOC Prime.