Vue d’ensemble
L’intégration Microsoft Defender XDR (INT-021) assure une synchronisation bidirectionnelle entre CaseBender et la plateforme de détection et de réponse étendues de Microsoft, y compris Microsoft Defender pour point de terminaison (MDE) et Microsoft Defender XDR.Ingestion entrante
Synchronisation sortante
https://graph.microsoft.com/v1.0/security). Elle s’authentifie avec une application
Azure AD (Entra ID) via le flux d’identifiants client OAuth2.Fonctionnalités
| Fonctionnalité | Direction | Description |
|---|---|---|
| Ingestion d’alertes | Entrant | Les alertes Defender sont normalisées en alertes CaseBender |
| Ingestion d’incidents | Entrant | Les incidents Defender (avec alertes enfants) sont ingérés |
| Extraction d’observables | Entrant | IP, URL, empreintes de fichiers, noms de fichiers, hostnames et comptes utilisateurs sont extraits des preuves |
| Extraction d’actifs | Entrant | Hostname, IP et plateforme OS de l’appareil sont capturés depuis devices[] |
| Corrélation MITRE ATT&CK | Entrant | Les identifiants de technique sont ajoutés comme étiquettes et TTP (p. ex. mitre:T1078) |
| Synchronisation d’alertes | Sortant | status, classification, determination et commentaires sont envoyés à la clôture du dossier |
| Synchronisation d’incidents | Sortant | status, classification, determination et commentaires sont envoyés à la clôture du dossier |
| Test de connexion | Bidirectionnel | Valide les identifiants OAuth2 et l’accès à l’API de sécurité Graph |
Prérequis
Accès à Microsoft Defender / Entra ID
Sortie réseau
https://login.microsoftonline.com(endpoint de jeton OAuth2)https://graph.microsoft.com(API de sécurité Graph)
Partie A — Enregistrer une application Azure AD
Créer l'enregistrement d'application
CaseBender Defender Integration) et enregistrez-la.Noter les identifiants
Créer un secret client
Accorder les autorisations de l'API de sécurité Graph
| Autorisation | Objectif |
|---|---|
SecurityAlert.ReadWrite.All | Lire et mettre à jour les alertes Defender |
SecurityIncident.ReadWrite.All | Lire et mettre à jour les incidents Defender |
Partie B — Configurer l’intégration dans CaseBender
Ouvrir le catalogue d'intégrations
Saisir les identifiants Azure AD
| Champ | Description |
|---|---|
tenantId | ID de répertoire (locataire) |
clientId | ID d’application (client) |
clientSecret | Valeur du secret client |
Configurer les options de synchronisation
| Option | Effet |
|---|---|
syncCaseUpdates | Envoyer les mises à jour du dossier vers Defender |
syncCaseClose | Envoyer la clôture du dossier vers Defender |
autoCreateCases | Créer automatiquement des dossiers à partir des incidents Defender ingérés |
closeAlertsOnCaseClose | Résoudre l’alerte Defender liée à la clôture d’un dossier |
closeIncidentsOnCaseClose | Résoudre l’incident Defender lié à la clôture d’un dossier |
Tester la connexion
GET /security/alerts_v2?$top=1.403 pendant le test est considérée comme un succès : elle confirme que
l’authentification a fonctionné même lorsque l’application n’a pas encore obtenu la portée
de lecture sur cet endpoint précis.Entrant : Ingestion des alertes et incidents Defender
Endpoint
Defender (ou un intermédiaire tel que Logic Apps, Sentinel ou un relais de webhooks) envoie les charges utiles d’alertes/incidents à l’endpoint d’ingestion CaseBender :x-api-key (l’en-tête authorization: Bearer <clé> est également accepté). Les clés d’API de
webhook Defender ont le préfixe sk_def_.
Formats de charge utile
Le format par lots (tableauvalue[] de Graph) et l’objet d’alerte unique sont tous
deux pris en charge.
202 Accepted :
Pipeline de traitement
Proxy d'ingestion
/api/v1/ingest/defender valide la source et transmet la requête au service d’ingestion
(POST /v1/sources/defender).Publication en file d'attente
Référence de mappage des données
Mappage de la gravité (Defender → CaseBender 1–4) :| Gravité Defender | Gravité CaseBender |
|---|---|
high | 1 |
medium | 2 |
low | 3 |
informational | 4 |
unknown | 3 |
evidence[]) :
| Champ de preuve | Type d’observable |
|---|---|
ipAddress | ip |
url | url |
sha256 | hash |
fileName | filename |
deviceDnsName | hostname |
userAccount | user (DOMAINE\compte) |
defender, xdr, service:<serviceSource>,
category:<category>, incident (pour les incidents) et une étiquette mitre:<technique> par
technique MITRE. Les enregistrements ingérés utilisent par défaut TLP:2 et PAP:2.
Sortant : Synchroniser les dispositions de dossiers vers Defender
Lorsqu’un dossier est clôturé dans CaseBender, l’événementcase_closed est envoyé au
gestionnaire Defender. Si le dossier est lié à une alerte ou un incident Defender, CaseBender
renvoie la résolution via l’API de sécurité Graph.
Comment l’entité Defender liée est résolue
Le gestionnaire recherche les identifiants Defender dans cet ordre :extraData.defenderAlertId/extraData.defenderIncidentIdsourceReflorsqueextraData.source === "defender"sourceReflorsqu’il ressemble à une référence d’alerte Defender (préfixeda)
Mappage résolution → classification
| Résolution CaseBender | Classification Defender |
|---|---|
TruePositive | truePositive |
FalsePositive | falsePositive |
Duplicate | informationalExpectedActivity |
NoImpact | informationalExpectedActivity |
| (autre / aucune) | truePositive (par défaut) |
status de l’alerte/incident sur resolved, applique la
classification mappée et ajoute un commentaire tel que :
closeAlertsOnCaseClose ;
celles d’incidents nécessitent closeIncidentsOnCaseClose. Si aucune n’est activée, aucune
synchronisation sortante n’a lieu.Considérations de sécurité
- Gestion des secrets — le secret client est stocké dans les paramètres de l’intégration ; faites-le pivoter selon les exigences de votre organisation et mettez à jour l’intégration.
- Moindre privilège — accordez uniquement
SecurityAlert.ReadWrite.AlletSecurityIncident.ReadWrite.All. N’ajoutez pas d’autres portées Graph. - Mise en cache des jetons — les jetons d’accès sont mis en cache en mémoire par intégration et actualisés une minute avant expiration ; aucun jeton n’est persisté sur disque.
- Clés de webhook — traitez la clé d’API
sk_def_comme un secret. Faites-la pivoter en cas d’exposition et mettez à jour la configuration de l’expéditeur. - Réseau — limitez la sortie à
login.microsoftonline.cometgraph.microsoft.com.
Dépannage
Le test de connexion échoue avec une erreur OAuth2
Le test de connexion échoue avec une erreur OAuth2
tenantId, clientId et clientSecret. Confirmez que le secret client n’a pas
expiré et que le consentement administrateur a été accordé pour les autorisations d’application Graph.L'ingestion renvoie 401 Unauthorized
L'ingestion renvoie 401 Unauthorized
L'ingestion renvoie 400 'No alerts in payload'
L'ingestion renvoie 400 'No alerts in payload'
value[] ni id de premier niveau. Envoyez un
objet par lots Graph ou un objet d’alerte unique.La clôture du dossier ne met pas à jour Defender
La clôture du dossier ne met pas à jour Defender
closeAlertsOnCaseClose / closeIncidentsOnCaseClose est activé et que le
dossier porte un ID d’alerte/incident Defender (via extraData ou sourceRef).La mise à jour sortante renvoie 403
La mise à jour sortante renvoie 403
SecurityAlert.ReadWrite.All et SecurityIncident.ReadWrite.All sont accordés avec le
consentement administrateur.