33 Audit-log export to SIEM/BigQuery
Workspace keeps its audit logs for a bounded period and offers only a console search over them. BigQuery Export streams the activity and usage events — login, admin, Drive, token — into a GCP project you control, where they outlive Google's retention window and can be queried properly. It is the substrate the WORM archive (№60) and the detection rules (№68) are built on, and the dataset region should match your data-region policy.
Documentation: About reporting logs and BigQuery
Caveats
- Enabling the export backfills history — roughly 180 days of activity data and 450 days of usage data land in BigQuery on first setup; anything older than those windows is gone for good.
- Activity events land in BigQuery within about 10 minutes; usage reports start after a 48-hour initial delay and can then lag 1–3 days — this is an archive and investigation substrate; alerting still comes from Alert center rules (№2, №3).
- BigQuery Export requires Enterprise Standard+, Education Standard+, Frontline Standard+ or Enterprise Essentials Plus — on other editions the Data integrations screen exists but the export card is gated.
- The exported dataset is only as immutable as the GCP project it lands in — a super admin who can delete the project can delete the evidence, which is what the Bucket-Locked sink in №60 is for.
Setup steps
- open ↗
https://admin.google.com/ac/reporting/bigqueryexport · captured 2026-07-15
BigQuery Export = On; Project = <dedicated logging project>; grant gapps-reports@system.gserviceaccount.com the project Editor role (or an equivalent IAM editor role) on that project
-
- Dataset region
matching your data-region policy (№26)- export
the date-partitioned activity + usage tables
- open ↗
https://admin.google.com/ac/sc/investigation · captured 2026-07-15
Reporting › Audit and investigationVerify the day's partition exists in the activity table (query _PARTITIONTIME)
-
Dataset default table expiration = never (or > your retention policy); onward sink to Bucket-Locked GCS
Ongoing maintenance
- automatable: script Daily: alert if the newest exported event is older than 24h (fold into №54 heartbeat).
How to verify
-
Query the newest partition and check freshness — an export that silently stopped is the failure mode that matters.
bq query --use_legacy_sql=false 'SELECT MAX(time_usec) FROM `<project>.<dataset>.activity`'
v0.1.3 Detect edition Ent/Edu/Frontline Std+, Ent Ess Plus policy #18 · #33 ↗