Piste d'audit : Investigation de sécurité
Répondez aux questions courantes d'investigation de sécurité en utilisant pup audit-logs.
Prérequis
pup auth login # OAuth2 (recommandé)
# ou définir DD_API_KEY + DD_APP_KEY avec le scope audit_logs_read
Ordre d'exécution des commandes
- Clarifiez le périmètre de l'investigation : qui, quel type de ressource, quelle fenêtre temporelle.
- Exécutez la requête la plus spécifique en premier ; élargissez uniquement si les résultats sont vides.
- Si les résultats sont volumineux, envoyez-les vers
jqpour regrouper ou résumer. - Mettez en évidence les anomalies : opérations en masse, géographie inhabituelle, activité en dehors des heures, actions d'utilisateurs support.
Requêtes d'investigation courantes
Qui a supprimé des ressources dans une fenêtre temporelle ?
pup audit-logs search --query "@action:deleted" --from 24h -o json \
| jq '[.data[] | {
timestamp: .attributes.timestamp,
user: .attributes.attributes.usr.email,
actor_type: .attributes.attributes.evt.actor.type,
resource_type: .attributes.attributes.asset.type,
resource_id: .attributes.attributes.asset.id,
country: .attributes.attributes.network.client.geoip.country.name
}]'
Qui a modifié une ressource spécifique (par ID) ?
pup audit-logs search --query "@asset.id:RESOURCE_ID" --from 7d -o json \
| jq '[.data[] | {
timestamp: .attributes.timestamp,
user: .attributes.attributes.usr.email,
action: .attributes.attributes.action,
event: .attributes.attributes.evt.name
}]'
Que a fait un utilisateur spécifique ?
pup audit-logs search --query "@usr.email:user@example.com" --from 7d --limit 200 -o json \
| jq '[.data[] | {
timestamp: .attributes.timestamp,
action: .attributes.attributes.action,
event: .attributes.attributes.evt.name,
resource_type: .attributes.attributes.asset.type,
resource_id: .attributes.attributes.asset.id,
ip: .attributes.attributes.network.client.ip,
country: .attributes.attributes.network.client.geoip.country.name
}]'
Activité de connexion — toutes les connexions avec géolocalisation
pup audit-logs search --query "@evt.name:Authentication @action:login" --from 7d --limit 200 -o json \
| jq '[.data[] | {
timestamp: .attributes.timestamp,
user: .attributes.attributes.usr.email,
status: .attributes.attributes.status,
ip: .attributes.attributes.network.client.ip,
city: .attributes.attributes.network.client.geoip.city.name,
country: .attributes.attributes.network.client.geoip.country.name,
asn: .attributes.attributes.network.client.geoip.as.name
}]'
Connexions échouées uniquement
pup audit-logs search --query "@evt.name:Authentication @action:login @status:error" --from 7d --limit 200 -o json \
| jq '[.data[] | {
timestamp: .attributes.timestamp,
user: .attributes.attributes.usr.email,
ip: .attributes.attributes.network.client.ip,
country: .attributes.attributes.network.client.geoip.country.name
}]'
Qui a changé les rôles ou les permissions ?
pup audit-logs search --query "@evt.name:\"Access Management\"" --from 30d --limit 200 -o json \
| jq '[.data[] | {
timestamp: .attributes.timestamp,
user: .attributes.attributes.usr.email,
action: .attributes.attributes.action,
resource_type: .attributes.attributes.asset.type,
resource_id: .attributes.attributes.asset.id
}]'
Quelles actions proviennent d'une adresse IP spécifique ?
pup audit-logs search --query "@network.client.ip:1.2.3.4" --from 30d --limit 200 -o json \
| jq '[.data[] | {
timestamp: .attributes.timestamp,
user: .attributes.attributes.usr.email,
actor_type: .attributes.attributes.evt.actor.type,
action: .attributes.attributes.action,
event: .attributes.attributes.evt.name,
resource_type: .attributes.attributes.asset.type
}]'
Qui a créé ou supprimé des clés API ?
pup audit-logs search --query "@evt.name:Authentication @asset.type:api_key" --from 90d --limit 200 -o json \
| jq '[.data[] | {
timestamp: .attributes.timestamp,
user: .attributes.attributes.usr.email,
action: .attributes.attributes.action,
key_id: .attributes.attributes.asset.id,
ip: .attributes.attributes.network.client.ip,
country: .attributes.attributes.network.client.geoip.country.name
}]'
Référence des catégories d'événements
Catégorie (@evt.name) |
Ce qu'elle couvre |
|---|---|
Authentication |
Connexions, création/suppression/modification de clés API |
Access Management |
Rôles, ajout/suppression d'utilisateurs, politiques de restriction |
Dashboard |
Créer, modifier, supprimer, partager |
Monitor |
Créer, modifier, supprimer, résoudre |
Log Management |
Pipelines, index, archives, filtres d'exclusion |
Integration |
Ajouter/modifier/supprimer des intégrations |
Metrics |
Créer/modifier/supprimer des métriques personnalisées |
Organization Management |
Création d'org enfant, paramètres d'org |
Notebook |
Créer, modifier, supprimer |
APM |
Filtres de rétention, configuration d'échantillonnage |
Cloud Security Platform |
Règles CWS, changements d'état de signaux de sécurité |
Bits AI SRE |
Appels d'outils MCP, investigations IA |
Indicateurs d'anomalie à signaler
Lors de la présentation des résultats d'investigation, relevez :
- Type d'acteur
SUPPORT_USER— Le support Datadog a accédé à l'organisation - Suppressions en masse — même utilisateur, même action, nombreuses ressources dans une courte fenêtre
- Géographie inattendue — pays non vu dans les connexions antérieures de cet utilisateur
- Activité en dehors des heures — actions à des heures inhabituelles pour le fuseau horaire typique de l'utilisateur
- Premier ASN — action provenant d'un fournisseur de cloud ou d'un VPN non vu auparavant (
@network.client.geoip.as.name)