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 |
|---|---|
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 cbr_defender_.
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
cbr_defender_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 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.