Utilisez gcloud logging read avec un filtre sur cloudaudit.googleapis.com, ou exécutez la même requête dans le Logs Explorer et téléchargez les résultats au format JSON :
gcloud logging read 'logName:"cloudaudit.googleapis.com" AND timestamp>="2026-10-19T00:00:00Z" AND timestamp<"2026-10-20T00:00:00Z"'
--project=my-project --format=json > gcp_audit_1019.json
Les journaux d’audit des Activités Administratives sont toujours activés et conservés pendant 400 jours. Les journaux d’Accès aux Données sont désactivés par défaut, sauf pour BigQuery, et conservés pendant 30 jours une fois activés.
Les Logs d’Audit Cloud enregistrent qui a modifié quoi dans vos projets Google Cloud : octrois IAM, nouvelles clés de compte de service, modifications de pare-feu, VMs activées dans des régions inhabituelles. Prime Core a 140 règles de détection pour les journaux d’audit Google Cloud, mappées à 74 techniques MITRE ATT&CK. Parmi elles : abus des comptes cloud (T1078.004), crédences supplémentaires telles que nouvelles clés de compte de service (T1098.001) et altération des journaux eux-mêmes (T1562.008).
Avant de commencer
Sachez quel journal d’audit vous avez besoin.
| Type | Activé par défaut ? | Rétention | Ce qu’il contient |
|---|---|---|---|
| Activité Administrative | Toujours, ne peut pas être désactivé | 400 jours | Modifications de configuration et IAM |
| Événement Système | Toujours | 400 jours | Actions prises par les systèmes Google sur vos ressources |
| Accès aux Données | Non (sauf BigQuery) | 30 jours | Lectures de données et métadonnées |
| Politique Refusée | Yes | 30 jours | Requêtes bloquées par les politiques de sécurité |
Si la question est « qui a lu ce bucket ? » et que les journaux d’Accès aux Données n’ont jamais été activés, la réponse n’est pas dans Cloud Logging.
Permissions. Logs Viewer (roles/logging.viewer) couvre l’Activité Administrative, l’Événement Système et la Politique Refusée. Les journaux d’Accès aux Données nécessitent Private Logs Viewer (roles/logging.privateLogViewer).
Portée. Les journaux d’audit sont actifs par projet. Les activités au niveau de l’organisation et des dossiers ont leurs propres journaux. Interrogez-les avec –organization=<ORG_ID> ou –folder=<FOLDER_ID> au lieu de –project.
Option 1 : Logs Explorer
Dans la console, ouvrez Logging → Logs Explorer, entrez logName: »cloudaudit.googleapis.com », définissez la plage temporelle, exécutez la requête, puis téléchargez les résultats au format JSON. Le téléchargement est limité. Pour des plages plus grandes, utilisez gcloud.
Option 2 : gcloud logging read
La commande en haut est la forme de base. Trois détails font gagner du temps.
Mettez toujours la fenêtre temporelle dans le filtre. Sans condition de timestamp, gcloud logging read se limite silencieusement au dernier jour (–freshness par défaut à 1d). Cela surprend presque tout le monde une fois.
Augmentez la limite si nécessaire. Ajoutez –limit=100000 (ou ce qui convient) pour de grandes fenêtres.
Aplanissez pour le téléchargement. La sortie est un tableau JSON. Transformez-le en une entrée par ligne :
jq -c '.[]' gcp_audit_1019.json > gcp_audit_1019.jsonl
Filtres plus étroits utiles :
# Activité Administrative seulement
logName="projects/my-project/logs/cloudaudit.googleapis.com/activity"
# nouvelles clés de compte de service
protoPayload.methodName="google.iam.admin.v1.CreateServiceAccountKey"
# tout ce qu'une identité a fait
protoPayload.authenticationInfo.principalEmail="suspicious-sa@my-project.iam.gserviceaccount.com"
Option 3 : Historique en vrac depuis les sinks
Si votre organisation achemine les journaux d’audit via un sink vers Cloud Storage ou BigQuery, cette copie peut remonter plus loin que les buckets ci-dessus. Récupérez les fichiers avec gcloud storage cp, ou interrogez BigQuery et exportez le résultat au format JSON.
À rechercher
| Méthode ou champ | Pourquoi cela importe |
|---|---|
| CreateServiceAccountKey | Identifiants à longue durée de vie qu’un attaquant peut emporter |
| SetIamPolicy | Octrois de rôle ; surveillez roles/owner, roles/editor et allUsers |
| UpdateSink, DeleteSink, nouvelles exclusions | Quelqu’un redirigeant ou mettant en sourdine les journaux |
| v1.compute.instances.insert dans des régions inhabituelles | L’empreinte classique du cryptominage |
| Rafales avec status.code: 7 (PERMISSION_DENIED) | Identifiants volés cherchant ce qu’ils peuvent faire |
Téléchargez, assainissez et révisez dans LogTotal
- Télécharger. Ouvrir logtotal.com et déposez le fichier .jsonl.
- Assainir. [what gets masked: principal emails, project IDs, IPs, resource names]. Look it over before you continue.
- Réviser.
Quand ça ne va pas
| Symptôme | Cause probable | Fix |
|---|---|---|
| Seules les dernières 24 heures reviennent | Pas de timestamp dans le filtre, donc –freshness=1d s’applique | Mettez la fenêtre dans le filtre |
| Pas d’entrée d’Accès aux Données | Les journaux d’Accès aux Données n’ont jamais été activés | Attendu ; activez-les pour l’avenir |
| PERMISSION_DENIED lors de la lecture des journaux | Private Logs Viewer manquant pour l’Accès aux Données | Demandez roles/logging.privateLogViewer |
| Les résultats s’arrêtent court | Limite par défaut ou explicite atteinte | Augmentez –limit, ou divisez la fenêtre |
| Modifications au niveau de l’organisation manquantes | Vous avez interrogé un projet | Utilisez –organization |
FAQ
Les journaux Google Workspace sont-ils ici ?
Seulement si votre organisation partage les données Workspace avec Google Cloud, et alors au niveau de l’organisation.
Qu’en est-il de GKE ?
GKE écrit également ses journaux d’audit Kubernetes dans Cloud Audit Logs