Descripción general
La integración de Microsoft Defender XDR (INT-021) proporciona sincronización bidireccional entre CaseBender y la plataforma de detección y respuesta extendida de Microsoft, incluidos Microsoft Defender para Endpoint (MDE) y Microsoft Defender XDR.Ingesta entrante
Sincronización saliente
https://graph.microsoft.com/v1.0/security). Se autentica con una aplicación de Azure AD
(Entra ID) mediante el flujo de credenciales de cliente OAuth2.Capacidades
| Capacidad | Dirección | Descripción |
|---|---|---|
| Ingesta de alertas | Entrante | Las alertas de Defender se normalizan en alertas de CaseBender |
| Ingesta de incidentes | Entrante | Se ingieren incidentes de Defender (con alertas secundarias) |
| Extracción de observables | Entrante | Se extraen IP, URL, hashes de archivos, nombres de archivo, hostnames y cuentas de usuario de la evidencia |
| Extracción de activos | Entrante | Se capturan hostname, IP y plataforma del SO del dispositivo desde devices[] |
| Correlación MITRE ATT&CK | Entrante | Los ID de técnica se agregan como etiquetas y TTP (p. ej. mitre:T1078) |
| Sincronización de alertas | Saliente | Se envían status, classification, determination y comentarios al cerrar el caso |
| Sincronización de incidentes | Saliente | Se envían status, classification, determination y comentarios al cerrar el caso |
| Prueba de conexión | Bidireccional | Valida las credenciales OAuth2 y el acceso a la API de seguridad de Graph |
Requisitos previos
Acceso a Microsoft Defender / Entra ID
Salida de red
https://login.microsoftonline.com(endpoint de token OAuth2)https://graph.microsoft.com(API de seguridad de Graph)
Parte A — Registrar una aplicación de Azure AD
Crear el registro de la aplicación
CaseBender Defender Integration) y regístrela.Registrar los identificadores
Crear un secreto de cliente
Conceder permisos de la API de seguridad de Graph
| Permiso | Propósito |
|---|---|
SecurityAlert.ReadWrite.All | Leer y actualizar alertas de Defender |
SecurityIncident.ReadWrite.All | Leer y actualizar incidentes de Defender |
Parte B — Configurar la integración en CaseBender
Abrir el catálogo de integraciones
Introducir las credenciales de Azure AD
| Campo | Descripción |
|---|---|
tenantId | ID de directorio (inquilino) |
clientId | ID de aplicación (cliente) |
clientSecret | Valor del secreto de cliente |
Configurar las opciones de sincronización
| Opción | Efecto |
|---|---|
syncCaseUpdates | Enviar actualizaciones del caso a Defender |
syncCaseClose | Enviar el cierre del caso a Defender |
autoCreateCases | Crear casos automáticamente a partir de incidentes de Defender ingeridos |
closeAlertsOnCaseClose | Resolver la alerta vinculada de Defender al cerrar un caso |
closeIncidentsOnCaseClose | Resolver el incidente vinculado de Defender al cerrar un caso |
Probar la conexión
GET /security/alerts_v2?$top=1.403 durante la prueba se considera correcta: confirma que la
autenticación funcionó incluso cuando la aplicación aún no tiene permiso de lectura en ese endpoint específico.Entrante: Ingesta de alertas e incidentes de Defender
Endpoint
Defender (o un intermediario como Logic Apps, Sentinel o un reenviador de webhooks) envía las cargas de alertas/incidentes al endpoint de ingesta de CaseBender:x-api-key (también se acepta el encabezado authorization: Bearer <clave>). Las claves de
API de webhook de Defender llevan el prefijo sk_def_.
Formatos de carga
Se admiten tanto el formato por lotes (arrayvalue[] de Graph) como un objeto de
alerta única.
202 Accepted:
Flujo de procesamiento
Proxy de ingesta
/api/v1/ingest/defender valida el origen y reenvía la solicitud al servicio de ingesta
(POST /v1/sources/defender).Publicación en cola
Referencia de mapeo de datos
Mapeo de severidad (Defender → CaseBender 1–4):| Severidad de Defender | Severidad de CaseBender |
|---|---|
high | 1 |
medium | 2 |
low | 3 |
informational | 4 |
unknown | 3 |
evidence[]):
| Campo de evidencia | Tipo de observable |
|---|---|
ipAddress | ip |
url | url |
sha256 | hash |
fileName | filename |
deviceDnsName | hostname |
userAccount | user (DOMINIO\cuenta) |
defender, xdr, service:<serviceSource>,
category:<category>, incident (para incidentes) y una etiqueta mitre:<technique> por cada
técnica de MITRE. Los registros ingeridos usan por defecto TLP:2 y PAP:2.
Saliente: Sincronizar disposiciones de casos con Defender
Cuando se cierra un caso en CaseBender, el eventocase_closed se despacha al controlador de
Defender. Si el caso está vinculado a una alerta o incidente de Defender, CaseBender envía la
resolución a través de la API de seguridad de Graph.
Cómo se resuelve la entidad vinculada de Defender
El controlador busca los identificadores de Defender en este orden:extraData.defenderAlertId/extraData.defenderIncidentIdsourceRefcuandoextraData.source === "defender"sourceRefcuando parece una referencia de alerta de Defender (prefijoda)
Mapeo de resolución → clasificación
| Resolución de CaseBender | Clasificación de Defender |
|---|---|
TruePositive | truePositive |
FalsePositive | falsePositive |
Duplicate | informationalExpectedActivity |
NoImpact | informationalExpectedActivity |
| (otra / ninguna) | truePositive (predeterminado) |
status de la alerta/incidente en resolved, aplica la
classification mapeada y agrega un comentario como:
closeAlertsOnCaseClose; las
de incidentes requieren closeIncidentsOnCaseClose. Si ninguna está habilitada, no se
produce sincronización saliente.Consideraciones de seguridad
- Manejo de secretos — el secreto de cliente se almacena en la configuración de la integración; rótelo según lo requiera su organización y actualice la integración al hacerlo.
- Privilegio mínimo — conceda solo
SecurityAlert.ReadWrite.AllySecurityIncident.ReadWrite.All. No agregue otros permisos de Graph. - Almacenamiento en caché de tokens — los tokens de acceso se almacenan en memoria por integración y se actualizan un minuto antes de expirar; no se guardan en disco.
- Claves de webhook — trate la clave de API
sk_def_como un secreto. Rótela si se expone y actualice la configuración del remitente. - Red — restrinja la salida a
login.microsoftonline.comygraph.microsoft.com.
Solución de problemas
La prueba de conexión falla con un error de OAuth2
La prueba de conexión falla con un error de OAuth2
tenantId, clientId y clientSecret. Confirme que el secreto de cliente no ha
expirado y que se concedió el consentimiento del administrador para los permisos de la aplicación de Graph.La ingesta devuelve 401 Unauthorized
La ingesta devuelve 401 Unauthorized
La ingesta devuelve 400 'No alerts in payload'
La ingesta devuelve 400 'No alerts in payload'
value[] ni un id de nivel superior. Envíe un objeto por
lotes de Graph o un objeto de alerta única.El cierre del caso no actualiza Defender
El cierre del caso no actualiza Defender
closeAlertsOnCaseClose / closeIncidentsOnCaseClose esté habilitado y de
que el caso lleve un ID de alerta/incidente de Defender (mediante extraData o sourceRef).La actualización saliente devuelve 403
La actualización saliente devuelve 403
SecurityAlert.ReadWrite.All y SecurityIncident.ReadWrite.All estén concedidos con
consentimiento del administrador.