Piste d'audit Datadog
Enquêtez sur l'activité des utilisateurs, les modifications de configuration, les patterns d'accès et les preuves de conformité en utilisant pup audit-logs.
Sous-compétences
| Sous-compétence |
À utiliser quand |
| security-investigation |
« Qui a modifié X ? », « Que fait cet utilisateur ? », « Montrez-moi les suppressions des dernières 24h » |
| key-compromise |
« Cette clé API a-t-elle été compromise ? », « Que fait la clé XYZ ? », « Enquêter sur une activité suspecte de clé » |
| cost-spike-investigation |
« Pourquoi ma facture a-t-elle augmenté ? », « Qu'a causé ce pic d'utilisation ? », « Enquêter sur l'augmentation des coûts LLM » |
| compliance-report |
« Générer une preuve SOC 2 », « Journal d'audit PCI », « Rapport de provisionnement utilisateur pour l'auditeur » |
| ai-activity-audit |
« Que fait l'assistant IA ? », « Auditer les appels d'outils MCP », « Rapport de gouvernance IA » |
Prérequis
pup auth login # OAuth2 (recommandé)
# ou définir DD_API_KEY + DD_APP_KEY avec scope audit_logs_read
Commandes
# Lister les événements récents
pup audit-logs list --from 1h --limit 100
# Rechercher avec une requête
pup audit-logs search --query "@action:deleted" --from 24h
# Sortie JSON pour pipage vers jq
pup audit-logs search --query "@usr.email:alice@example.com" --from 7d -o json | jq '.data[].attributes'
Référence rapide du schéma d'événement
| Champ |
Description |
Valeurs d'exemple |
@usr.email |
E-mail de l'acteur |
alice@example.com |
@evt.actor.type |
Mode d'exécution de l'action |
USER, API_KEY, SUPPORT_USER |
@action |
Verbe |
created, modified, deleted, accessed, login |
@evt.name |
Catégorie d'événement |
Dashboard, Monitor, Authentication, Access Management |
@asset.type |
Type de ressource |
dashboard, monitor, api_key, role, user |
@asset.id |
Identifiant de ressource |
abc-123 |
@metadata.api_key.id |
Clé API utilisée (si applicable) |
key_abc123 |
@metadata.app_key.id |
Clé d'application utilisée (si applicable) |
app_abc123 |
@network.client.ip |
Adresse IP du client |
1.2.3.4 |
@network.client.geoip.country.name |
Pays |
United States |
@network.client.geoip.as.name |
Nom ASN |
Amazon.com |
@http.url_details.path |
Chemin du endpoint API |
/api/v1/dashboard/xyz |
Syntaxe de recherche
Même syntaxe de style Lucene que dans Log Explorer :
| Requête |
Signification |
@evt.name:Dashboard |
Correspondance de champ exact |
@action:deleted |
Filtre d'action |
@usr.email:alice@example.com |
Utilisateur spécifique |
@evt.name:Monitor AND @action:modified |
Requête composée |
-@action:deleted |
Négation |
@usr.email:* |
Le champ existe |
@network.client.ip:1.2.3.4 |
Filtre IP |
Rétention
La rétention par défaut est de 90 jours. Pour les requêtes au-delà de 90 jours, l'archivage vers S3/GCS/Azure Blob doit être configuré. Toujours vérifier si la fenêtre de temps demandée se situe dans la période de rétention avant d'exécuter une requête.
Dépannage
| Problème |
Cause |
Solution |
| 403 Forbidden |
Scope audit_logs_read manquant |
Ajouter le scope à la clé d'application dans l'interface Datadog |
| Résultats vides |
Fenêtre de temps hors rétention |
Vérifier la configuration d'archivage ; maximum par défaut : 90 jours |
| Timeout |
Requête trop large |
Réduire la fenêtre de temps ou ajouter plus de filtres |
| Aucune donnée IP |
Action interne ou événement antérieur à l'enrichissement |
Tous les événements n'ont pas de données géographiques |
Références