Lorsque les journaux de sécurité sont dans BigQuery (à partir d’un export Cloud Logging, d’un export Google Workspace ou de votre propre pipeline), exportez-les avec EXPORT DATA. Cela écrit du JSON délimité par des sauts de ligne dans un bucket Cloud Storage, et vous téléchargez cela. Pour de petits résultats, bq query –format=json imprime directement les lignes. Dans les deux cas, filtrez d’abord sur la colonne de temps ou de partition du tableau, car BigQuery facture selon les données scannées.
BigQuery est l’endroit où de nombreuses équipes de Google Cloud conservent l’historique des journaux longtemps après que la rétention par défaut de Cloud Logging a expiré. Prime Core dispose de plus de 24 000 règles de détection uniques, mappées à 676 techniques MITRE ATT&CK. Voici comment extraire un échantillon, le nettoyer et l’examiner gratuitement dans LogTotal.
Avant de commencer
Autorisations. Vous devez lancer des tâches (utilisateur de tâches BigQuery), lire le dataset (lecteur de données BigQuery) et écrire dans le bucket d’exportation.
Connaître les tables. Un sink Cloud Logging vers BigQuery crée des tables nommées d’après les journaux, par exemple cloudaudit_googleapis_com_activity, souvent partitionnées par timestamp. Les exports Workspace ont leur propre schéma.
Vérifiez d’abord le coût. Ajoutez –dry_run à une requête bq pour voir combien d’octets cela scannerait. Si le nombre vous fait grimacer, ajoutez un filtre temporel plus strict.
Option 1 : EXPORT DATA vers Cloud Storage
OPTIONS D'EXPORTATION DE DONNÉES (
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');
L’URI nécessite un caractère générique (*), car BigQuery peut écrire plusieurs fichiers. Téléchargez-les et combinez-les :
gcloud storage cp 'gs://my-bq-exports/audit-20261019/*' ./audit-20261019/
cat ./audit-20261019/*.json > bq_audit_20261019.jsonl
Option 2 : requête bq pour de petits résultats
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 imprime un tableau JSON, que jq aplatie en une ligne par entrée.
Télécharger, nettoyer et examiner dans LogTotal
- Télécharger. Ouvrir logtotal.com et déposez le fichier .jsonl.
- Nettoyer.
- Examiner.
Lorsque cela tourne mal
| Symptôme | Cause probable | Fix |
|---|---|---|
| La requête scanne toute la table | Pas de filtre sur la colonne de partition ou de temps | Filtrer sur timestamp (ou _PARTITIONTIME) |
| EXPORT DATA échoue sur l’URI | Pas de caractère générique dans l’URI | Utiliser …/*.json |
| Permission refusée pour écrire dans le bucket | Droits de création d’objet de stockage manquants | Accorder l’accès en écriture sur le bucket |
| Sortie bq coupée à 100 lignes | Valeur par défaut –max_rows | Définir –max_rows, ou utiliser EXPORT DATA |
| Les champs imbriqués semblent étranges | Les colonnes répétées et imbriquées conservent leur structure | Attendu; c’est toujours un JSON valide |
FAQ
Est-ce la même chose qu’exporter depuis Cloud Logging ?
Non. Cloud Logging a son propre export. Ce guide est pour les journaux qui résident déjà dans des tables BigQuery.
Puis-je exporter une table entière sans requête
Oui : bq extract –destination_format NEWLINE_DELIMITED_JSON copie une table ou une partition vers Cloud Storage. Pour les enquêtes, une requête filtrée est généralement meilleure.