Panoramica
L’integrazione Microsoft Defender XDR (INT-021) fornisce sincronizzazione bidirezionale tra CaseBender e la piattaforma di rilevamento e risposta estesi di Microsoft, inclusi Microsoft Defender per endpoint (MDE) e Microsoft Defender XDR.Acquisizione in entrata
Sincronizzazione in uscita
https://graph.microsoft.com/v1.0/security). Si autentica con un’applicazione Azure AD
(Entra ID) tramite il flusso di credenziali client OAuth2.Funzionalità
| Funzionalità | Direzione | Descrizione |
|---|---|---|
| Acquisizione avvisi | In entrata | Gli avvisi Defender vengono normalizzati in avvisi CaseBender |
| Acquisizione incidenti | In entrata | Vengono acquisiti gli incidenti Defender (con avvisi figli) |
| Estrazione osservabili | In entrata | IP, URL, hash di file, nomi file, hostname e account utente vengono estratti dalle prove |
| Estrazione asset | In entrata | Hostname, IP e piattaforma OS del dispositivo vengono acquisiti da devices[] |
| Correlazione MITRE ATT&CK | In entrata | Gli ID tecnica vengono aggiunti come tag e TTP (es. mitre:T1078) |
| Sincronizzazione avvisi | In uscita | status, classification, determination e commenti vengono inviati alla chiusura del caso |
| Sincronizzazione incidenti | In uscita | status, classification, determination e commenti vengono inviati alla chiusura del caso |
| Test di connessione | Bidirezionale | Convalida le credenziali OAuth2 e l’accesso all’API di sicurezza di Graph |
Prerequisiti
Accesso a Microsoft Defender / Entra ID
Uscita di rete
https://login.microsoftonline.com(endpoint token OAuth2)https://graph.microsoft.com(API di sicurezza di Graph)
Parte A — Registrare un’applicazione Azure AD
Creare la registrazione dell'app
CaseBender Defender Integration) e registrala.Annotare gli identificatori
Creare un secret client
Concedere le autorizzazioni dell'API di sicurezza di Graph
| Autorizzazione | Scopo |
|---|---|
SecurityAlert.ReadWrite.All | Leggere e aggiornare gli avvisi Defender |
SecurityIncident.ReadWrite.All | Leggere e aggiornare gli incidenti Defender |
Parte B — Configurare l’integrazione in CaseBender
Aprire il catalogo delle integrazioni
Inserire le credenziali Azure AD
| Campo | Descrizione |
|---|---|
tenantId | ID directory (tenant) |
clientId | ID applicazione (client) |
clientSecret | Valore del secret client |
Configurare le opzioni di sincronizzazione
| Opzione | Effetto |
|---|---|
syncCaseUpdates | Inviare gli aggiornamenti del caso a Defender |
syncCaseClose | Inviare la chiusura del caso a Defender |
autoCreateCases | Creare automaticamente casi dagli incidenti Defender acquisiti |
closeAlertsOnCaseClose | Risolvere l’avviso Defender collegato alla chiusura di un caso |
closeIncidentsOnCaseClose | Risolvere l’incidente Defender collegato alla chiusura di un caso |
Testare la connessione
GET /security/alerts_v2?$top=1.403 durante il test è considerata un successo: conferma che
l’autenticazione ha funzionato anche quando l’app non dispone ancora dell’ambito di
lettura su quello specifico endpoint.In entrata: Acquisizione di avvisi e incidenti Defender
Endpoint
Defender (o un intermediario come Logic Apps, Sentinel o un forwarder di webhook) invia i payload di avvisi/incidenti all’endpoint di acquisizione di CaseBender:x-api-key (è accettato anche l’header authorization: Bearer <chiave>). Le chiavi API dei
webhook Defender hanno il prefisso sk_def_.
Formati del payload
Sono supportati sia il formato batch (arrayvalue[] di Graph) sia un oggetto di avviso
singolo.
202 Accepted:
Pipeline di elaborazione
Proxy di acquisizione
/api/v1/ingest/defender convalida la sorgente e inoltra la richiesta al servizio di
acquisizione (POST /v1/sources/defender).Pubblicazione in coda
Riferimento di mappatura dei dati
Mappatura della gravità (Defender → CaseBender 1–4):| Gravità Defender | Gravità CaseBender |
|---|---|
high | 1 |
medium | 2 |
low | 3 |
informational | 4 |
unknown | 3 |
evidence[]):
| Campo prova | Tipo di osservabile |
|---|---|
ipAddress | ip |
url | url |
sha256 | hash |
fileName | filename |
deviceDnsName | hostname |
userAccount | user (DOMINIO\account) |
defender, xdr, service:<serviceSource>,
category:<category>, incident (per gli incidenti) e un tag mitre:<technique> per ogni
tecnica MITRE. I record acquisiti usano per impostazione predefinita TLP:2 e PAP:2.
In uscita: Sincronizzare le disposizioni dei casi con Defender
Quando un caso viene chiuso in CaseBender, l’eventocase_closed viene inviato al gestore
Defender. Se il caso è collegato a un avviso o incidente Defender, CaseBender invia la
risoluzione tramite l’API di sicurezza di Graph.
Come viene risolta l’entità Defender collegata
Il gestore cerca gli identificatori Defender in questo ordine:extraData.defenderAlertId/extraData.defenderIncidentIdsourceRefquandoextraData.source === "defender"sourceRefquando sembra un riferimento di avviso Defender (prefissoda)
Mappatura risoluzione → classificazione
| Risoluzione CaseBender | Classificazione Defender |
|---|---|
TruePositive | truePositive |
FalsePositive | falsePositive |
Duplicate | informationalExpectedActivity |
NoImpact | informationalExpectedActivity |
| (altra / nessuna) | truePositive (predefinito) |
status dell’avviso/incidente su resolved, applica la
classification mappata e aggiunge un commento come:
closeAlertsOnCaseClose sia
abilitato; quelli degli incidenti richiedono closeIncidentsOnCaseClose. Se nessuno dei due
è abilitato, non avviene alcuna sincronizzazione in uscita.Considerazioni sulla sicurezza
- Gestione dei segreti — il secret client è memorizzato nelle impostazioni dell’integrazione; ruotalo secondo le esigenze della tua organizzazione e aggiorna l’integrazione.
- Privilegio minimo — concedi solo
SecurityAlert.ReadWrite.AlleSecurityIncident.ReadWrite.All. Non aggiungere ambiti Graph più ampi. - Caching dei token — i token di accesso sono memorizzati in cache in memoria per integrazione e aggiornati un minuto prima della scadenza; nessun token viene persistito su disco.
- Chiavi webhook — tratta la chiave API
sk_def_come un segreto. Ruotala se esposta e aggiorna la configurazione del mittente. - Rete — limita l’uscita a
login.microsoftonline.comegraph.microsoft.com.
Risoluzione dei problemi
Il test di connessione fallisce con un errore OAuth2
Il test di connessione fallisce con un errore OAuth2
tenantId, clientId e clientSecret. Conferma che il secret client non sia
scaduto e che sia stato concesso il consenso dell’amministratore per le autorizzazioni dell’applicazione Graph.L'acquisizione restituisce 401 Unauthorized
L'acquisizione restituisce 401 Unauthorized
L'acquisizione restituisce 400 'No alerts in payload'
L'acquisizione restituisce 400 'No alerts in payload'
value[] né un id di primo livello. Invia un oggetto
batch di Graph o un oggetto di avviso singolo.La chiusura del caso non aggiorna Defender
La chiusura del caso non aggiorna Defender
closeAlertsOnCaseClose / closeIncidentsOnCaseClose sia abilitato e che il
caso abbia un ID avviso/incidente Defender (tramite extraData o sourceRef).L'aggiornamento in uscita restituisce 403
L'aggiornamento in uscita restituisce 403
SecurityAlert.ReadWrite.All e SecurityIncident.ReadWrite.All siano concessi con il
consenso dell’amministratore.