Passer au contenu principal

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

Les alertes et incidents Defender sont ingérés dans CaseBender, normalisés, enrichis d’observables et de techniques MITRE ATT&CK, puis transformés en alertes/dossiers.

Synchronisation sortante

Lorsqu’un dossier CaseBender est clôturé, l’alerte/incident Defender lié est mis à jour avec le statut, la classification et un commentaire d’audit via Microsoft Graph.
Cette intégration utilise l’API de sécurité Microsoft Graph (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éDirectionDescription
Ingestion d’alertesEntrantLes alertes Defender sont normalisées en alertes CaseBender
Ingestion d’incidentsEntrantLes incidents Defender (avec alertes enfants) sont ingérés
Extraction d’observablesEntrantIP, URL, empreintes de fichiers, noms de fichiers, hostnames et comptes utilisateurs sont extraits des preuves
Extraction d’actifsEntrantHostname, IP et plateforme OS de l’appareil sont capturés depuis devices[]
Corrélation MITRE ATT&CKEntrantLes identifiants de technique sont ajoutés comme étiquettes et TTP (p. ex. mitre:T1078)
Synchronisation d’alertesSortantstatus, classification, determination et commentaires sont envoyés à la clôture du dossier
Synchronisation d’incidentsSortantstatus, classification, determination et commentaires sont envoyés à la clôture du dossier
Test de connexionBidirectionnelValide les identifiants OAuth2 et l’accès à l’API de sécurité Graph

Prérequis

1

Accès à Microsoft Defender / Entra ID

Un locataire Microsoft Entra ID (Azure AD) avec Microsoft Defender XDR ou Microsoft Defender pour point de terminaison sous licence et activé. Vous devez pouvoir enregistrer des applications et accorder le consentement administrateur.
2

Sortie réseau

Le déploiement CaseBender doit pouvoir atteindre :
  • https://login.microsoftonline.com (endpoint de jeton OAuth2)
  • https://graph.microsoft.com (API de sécurité Graph)
3

Rôle administrateur CaseBender

Vous devez pouvoir créer et gérer des intégrations dans Paramètres → Intégrations.

Partie A — Enregistrer une application Azure AD

1

Créer l'enregistrement d'application

Dans le centre d’administration Microsoft Entra, allez à Identité → Applications → Inscriptions d’applications → Nouvelle inscription. Donnez-lui un nom (p. ex. CaseBender Defender Integration) et enregistrez-la.
2

Noter les identifiants

Depuis la Vue d’ensemble de l’application, copiez l’ID d’application (client) et l’ID de répertoire (locataire). Vous les saisirez dans CaseBender.
3

Créer un secret client

Sous Certificats et secrets → Nouveau secret client, créez un secret et copiez sa Valeur immédiatement (elle n’est affichée qu’une fois).
4

Accorder les autorisations de l'API de sécurité Graph

Sous Autorisations d’API → Ajouter une autorisation → Microsoft Graph → Autorisations d’application, ajoutez les éléments suivants puis cliquez sur Accorder le consentement administrateur :
AutorisationObjectif
SecurityAlert.ReadWrite.AllLire et mettre à jour les alertes Defender
SecurityIncident.ReadWrite.AllLire et mettre à jour les incidents Defender
Utilisez des autorisations d’Application (et non déléguées). L’intégration s’exécute sans interface avec le flux d’identifiants client et nécessite le consentement de l’administrateur du locataire.

Partie B — Configurer l’intégration dans CaseBender

1

Ouvrir le catalogue d'intégrations

Allez à Paramètres → Intégrations → Créer, puis choisissez Microsoft Defender XDR dans la catégorie EDR/XDR.
2

Saisir les identifiants Azure AD

Fournissez les valeurs obtenues dans la Partie A :
ChampDescription
tenantIdID de répertoire (locataire)
clientIdID d’application (client)
clientSecretValeur du secret client
3

Configurer les options de synchronisation

Activez les comportements nécessaires :
OptionEffet
syncCaseUpdatesEnvoyer les mises à jour du dossier vers Defender
syncCaseCloseEnvoyer la clôture du dossier vers Defender
autoCreateCasesCréer automatiquement des dossiers à partir des incidents Defender ingérés
closeAlertsOnCaseCloseRésoudre l’alerte Defender liée à la clôture d’un dossier
closeIncidentsOnCaseCloseRésoudre l’incident Defender lié à la clôture d’un dossier
4

Tester la connexion

Utilisez Tester la connexion pour valider. CaseBender demande un jeton OAuth2 et appelle GET /security/alerts_v2?$top=1.
Une réponse 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 :
POST https://<votre-domaine-casebender>/api/v1/ingest/defender
Les requêtes sont authentifiées avec une clé d’API d’intégration dans l’en-tête 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 (tableau value[] de Graph) et l’objet d’alerte unique sont tous deux pris en charge.
curl -X POST "https://<votre-domaine-casebender>/api/v1/ingest/defender" \
  -H "x-api-key: sk_def_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "value": [
      {
        "id": "da637...",
        "incidentId": "12345",
        "title": "Exécution PowerShell suspecte",
        "severity": "high",
        "status": "new",
        "classification": "unknown",
        "createdDateTime": "2026-07-03T18:20:00Z",
        "mitreTechniques": ["T1059.001"],
        "evidence": [
          { "@odata.type": "#microsoft.graph.security.fileEvidence",
            "sha256": "9f2b...", "fileName": "payload.ps1" }
        ]
      }
    ]
  }'
Une requête réussie renvoie HTTP 202 Accepted :
{ "success": true, "processed": 1, "failed": 0 }

Pipeline de traitement

1

Proxy d'ingestion

/api/v1/ingest/defender valide la source et transmet la requête au service d’ingestion (POST /v1/sources/defender).
2

Publication en file d'attente

Le service d’ingestion authentifie la clé d’API, valide la charge utile et publie chaque alerte dans la file de traitement.
3

Normalisation

Le processeur Defender normalise chaque enregistrement en une alerte CaseBender : mappage de la gravité, construction du titre/description, extraction des observables et actifs d’appareil, et génération des TTP MITRE.

Référence de mappage des données

Mappage de la gravité (Defender → CaseBender 1–4) :
Gravité DefenderGravité CaseBender
high1
medium2
low3
informational4
unknown3
Extraction des observables (depuis evidence[]) :
Champ de preuveType d’observable
ipAddressip
urlurl
sha256hash
fileNamefilename
deviceDnsNamehostname
userAccountuser (DOMAINE\compte)
Les étiquettes appliquées à l’ingestion incluent 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énement case_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 :
  1. extraData.defenderAlertId / extraData.defenderIncidentId
  2. sourceRef lorsque extraData.source === "defender"
  3. sourceRef lorsqu’il ressemble à une référence d’alerte Defender (préfixe da)
Si aucun ID d’alerte ou d’incident n’est trouvé, la clôture du dossier est ignorée pour cette intégration.

Mappage résolution → classification

Résolution CaseBenderClassification Defender
TruePositivetruePositive
FalsePositivefalsePositive
DuplicateinformationalExpectedActivity
NoImpactinformationalExpectedActivity
(autre / aucune)truePositive (par défaut)
À la clôture, CaseBender définit le status de l’alerte/incident sur resolved, applique la classification mappée et ajoute un commentaire tel que :
Case <id-dossier> closed in CaseBender with resolution: <résolution>
Les mises à jour sortantes d’alertes nécessitent l’activation de 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.All et SecurityIncident.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.com et graph.microsoft.com.

Dépannage

Vérifiez 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’en-tête x-api-key est manquant ou invalide. Confirmez que vous envoyez la clé sk_def_ qui correspond à la clé d’API de webhook configurée de l’intégration.
La charge utile ne contenait ni tableau value[] ni id de premier niveau. Envoyez un objet par lots Graph ou un objet d’alerte unique.
Assurez-vous que closeAlertsOnCaseClose / closeIncidentsOnCaseClose est activé et que le dossier porte un ID d’alerte/incident Defender (via extraData ou sourceRef).
L’application Azure AD n’a pas d’autorisation d’écriture. Confirmez que SecurityAlert.ReadWrite.All et SecurityIncident.ReadWrite.All sont accordés avec le consentement administrateur.

Documentation associée