Visão geral
A integração do Microsoft Defender XDR (INT-021) fornece sincronização bidirecional entre o CaseBender e a plataforma de detecção e resposta estendidas da Microsoft, incluindo o Microsoft Defender para Endpoint (MDE) e o Microsoft Defender XDR.Ingestão de entrada
Sincronização de saída
https://graph.microsoft.com/v1.0/security). Ela se autentica com um aplicativo do
Azure AD (Entra ID) usando o fluxo de credenciais de cliente OAuth2.Recursos
| Recurso | Direção | Descrição |
|---|---|---|
| Ingestão de alertas | Entrada | Alertas do Defender são normalizados em alertas do CaseBender |
| Ingestão de incidentes | Entrada | Incidentes do Defender (com alertas filhos) são ingeridos |
| Extração de observáveis | Entrada | IPs, URLs, hashes de arquivos, nomes de arquivos, hostnames e contas de usuário são extraídos das evidências |
| Extração de ativos | Entrada | Hostname, IP e plataforma de SO do dispositivo são capturados de devices[] |
| Correlação MITRE ATT&CK | Entrada | IDs de técnica são adicionados como tags e TTPs (ex.: mitre:T1078) |
| Sincronização de alertas | Saída | status, classification, determination e comentários são enviados ao fechar o caso |
| Sincronização de incidentes | Saída | status, classification, determination e comentários são enviados ao fechar o caso |
| Teste de conexão | Bidirecional | Valida as credenciais OAuth2 e o acesso à API de Segurança do Graph |
Pré-requisitos
Acesso ao Microsoft Defender / Entra ID
Saída de rede
https://login.microsoftonline.com(endpoint de token OAuth2)https://graph.microsoft.com(API de Segurança do Graph)
Parte A — Registrar um aplicativo do Azure AD
Criar o registro do aplicativo
CaseBender Defender Integration) e registre-o.Registrar os identificadores
Criar um segredo do cliente
Conceder permissões da API de Segurança do Graph
| Permissão | Finalidade |
|---|---|
SecurityAlert.ReadWrite.All | Ler e atualizar alertas do Defender |
SecurityIncident.ReadWrite.All | Ler e atualizar incidentes do Defender |
Parte B — Configurar a integração no CaseBender
Abrir o catálogo de integrações
Inserir as credenciais do Azure AD
| Campo | Descrição |
|---|---|
tenantId | ID do diretório (locatário) |
clientId | ID do aplicativo (cliente) |
clientSecret | Valor do segredo do cliente |
Configurar as opções de sincronização
| Opção | Efeito |
|---|---|
syncCaseUpdates | Enviar atualizações do caso para o Defender |
syncCaseClose | Enviar o fechamento do caso para o Defender |
autoCreateCases | Criar casos automaticamente a partir de incidentes do Defender ingeridos |
closeAlertsOnCaseClose | Resolver o alerta vinculado do Defender ao fechar um caso |
closeIncidentsOnCaseClose | Resolver o incidente vinculado do Defender ao fechar um caso |
Testar a conexão
GET /security/alerts_v2?$top=1.403 durante o teste é tratada como sucesso — ela confirma que a
autenticação funcionou mesmo quando o aplicativo ainda não recebeu o escopo de leitura
naquele endpoint específico.Entrada: Ingestão de alertas e incidentes do Defender
Endpoint
O Defender (ou um intermediário como Logic Apps, Sentinel ou um encaminhador de webhook) envia as cargas de alertas/incidentes para o endpoint de ingestão do CaseBender:x-api-key (o cabeçalho authorization: Bearer <chave> também é aceito). As chaves de API de
webhook do Defender têm o prefixo sk_def_.
Formatos de carga
Tanto o formato em lote (arrayvalue[] do Graph) quanto um objeto de alerta único são
suportados.
202 Accepted:
Pipeline de processamento
Proxy de ingestão
/api/v1/ingest/defender valida a origem e encaminha a solicitação ao serviço de ingestão
(POST /v1/sources/defender).Publicação na fila
Referência de mapeamento de dados
Mapeamento de gravidade (Defender → CaseBender 1–4):| Gravidade do Defender | Gravidade do CaseBender |
|---|---|
high | 1 |
medium | 2 |
low | 3 |
informational | 4 |
unknown | 3 |
evidence[]):
| Campo de evidência | Tipo de observável |
|---|---|
ipAddress | ip |
url | url |
sha256 | hash |
fileName | filename |
deviceDnsName | hostname |
userAccount | user (DOMÍNIO\conta) |
defender, xdr, service:<serviceSource>,
category:<category>, incident (para incidentes) e uma tag mitre:<technique> por técnica do
MITRE. Os registros ingeridos usam por padrão TLP:2 e PAP:2.
Saída: Sincronizar disposições de casos com o Defender
Quando um caso é fechado no CaseBender, o eventocase_closed é despachado para o manipulador do
Defender. Se o caso estiver vinculado a um alerta ou incidente do Defender, o CaseBender envia a
resolução por meio da API de Segurança do Graph.
Como a entidade vinculada do Defender é resolvida
O manipulador procura os identificadores do Defender nesta ordem:extraData.defenderAlertId/extraData.defenderIncidentIdsourceRefquandoextraData.source === "defender"sourceRefquando parece uma referência de alerta do Defender (prefixoda)
Mapeamento de resolução → classificação
| Resolução do CaseBender | Classificação do Defender |
|---|---|
TruePositive | truePositive |
FalsePositive | falsePositive |
Duplicate | informationalExpectedActivity |
NoImpact | informationalExpectedActivity |
| (outra / nenhuma) | truePositive (padrão) |
status do alerta/incidente como resolved, aplica a
classification mapeada e adiciona um comentário como:
closeAlertsOnCaseClose esteja habilitado; as
de incidentes exigem closeIncidentsOnCaseClose. Se nenhuma estiver habilitada, não ocorre
sincronização de saída.Considerações de segurança
- Tratamento de segredos — o segredo do cliente é armazenado nas configurações da integração; alterne-o conforme o cronograma exigido pela sua organização e atualize a integração.
- Privilégio mínimo — conceda apenas
SecurityAlert.ReadWrite.AlleSecurityIncident.ReadWrite.All. Não adicione escopos mais amplos do Graph. - Cache de tokens — os tokens de acesso são armazenados em cache na memória por integração e atualizados um minuto antes da expiração; nenhum token é persistido em disco.
- Chaves de webhook — trate a chave de API
sk_def_como um segredo. Alterne-a se exposta e atualize a configuração do remetente. - Rede — restrinja a saída a
login.microsoftonline.comegraph.microsoft.com.
Solução de problemas
O teste de conexão falha com um erro OAuth2
O teste de conexão falha com um erro OAuth2
tenantId, clientId e clientSecret. Confirme que o segredo do cliente não
expirou e que o consentimento do administrador foi concedido para as permissões do aplicativo do Graph.A ingestão retorna 401 Unauthorized
A ingestão retorna 401 Unauthorized
A ingestão retorna 400 'No alerts in payload'
A ingestão retorna 400 'No alerts in payload'
value[] nem um id de nível superior. Envie um objeto em
lote do Graph ou um objeto de alerta único.O fechamento do caso não atualiza o Defender
O fechamento do caso não atualiza o Defender
closeAlertsOnCaseClose / closeIncidentsOnCaseClose esteja habilitado
e que o caso tenha um ID de alerta/incidente do Defender (via extraData ou sourceRef).A atualização de saída retorna 403
A atualização de saída retorna 403
SecurityAlert.ReadWrite.All e SecurityIncident.ReadWrite.All foram concedidos com
consentimento do administrador.