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
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)
Função de administrador do CaseBender
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
Read.All. Os escopos
ReadWrite.All são necessários apenas para o fechamento reverso de saída opcional
(syncCaseClose) — fechar um alerta/incidente do Defender a partir do CaseBender. Como
ReadWrite.All também inclui acesso de leitura, conceder apenas os dois escopos
ReadWrite.All cobre ambas as direções.Parte B — Configurar a integração no CaseBender
Abrir o catálogo de integrações
Inserir as credenciais do Azure AD
Habilitar a sondagem automática (recomendado)
Configurar as opções de sincronização
syncCaseClose ativado, mas ambos os interruptores close…OnCaseClose desativados, o
CaseBender ainda grava a classificação e o comentário de auditoria no Defender — apenas não
altera a entidade do Defender para resolved.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 (sondagem automática, recomendado)
Com a sondagem automática ativada (no cartão Sondagem automática da integração), o CaseBender chama periodicamente a API de segurança do Graph e ingere os novos incidentes por conta própria — sem necessidade de Logic App, regra de automação do Sentinel ou encaminhador de webhook no lado da Microsoft. Só é necessário o registro de aplicativo do Azure AD da Parte A.- Extração agendada — a cada
pollingIntervalMinutes, o CaseBender busca os incidentes comlastUpdateDateTime gt <cursor>e$expand=alerts, do mais antigo ao mais recente. Na primeira execução, importa os incidentes atualizados dentro depollingInitialLookbackHours. - Cursor e deduplicação — um cursor por integração avança até o incidente mais recente visto, e os incidentes são deduplicados pelo ID de incidente do Defender, de modo que nada é ingerido duas vezes.
- Normalização — cada incidente e seus alertas filhos se tornam um alerta do CaseBender com observáveis, ativos e TTPs do MITRE. O ID de incidente do Defender é gravado no alerta para que a sincronização de fechamento de saída possa localizá-lo.
SecurityIncident.Read.All (coberto por SecurityIncident.ReadWrite.All). Com
autoCreateCases ativado, cada incidente obtido por sondagem se torna automaticamente um
Caso (deduplicado por ID de incidente); se desativado, os incidentes aparecem na caixa de
Alertas para promoção manual. Em ambos os casos, o vínculo com o Defender é preservado
para que o fechamento do caso possa sincronizar de volta.Entrada (webhook / push)
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 cbr_defender_.
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
Normalização
Referência de mapeamento de dados
Mapeamento de gravidade (Defender → CaseBender 1–4):evidence[]):
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.defenderIncidentIdno casosourceRefquandoextraData.source === "defender"- O(s) alerta(s) do Defender vinculado(s) ao caso — o pipeline de ingestão registra o ID
de incidente/alerta do Defender nos
customFieldsde cada alerta, portanto um caso promovido a partir de um alerta do Defender (sondado ou por webhook) é resolvido automaticamente, independentemente de como foi criado.
Mapeamento de resolução → classificação
classification mapeada e adiciona um comentário como:
status da entidade do Defender como resolved quando o interruptor
correspondente (closeAlertsOnCaseClose para alertas, closeIncidentsOnCaseClose para
incidentes) está habilitado. O resultado é gravado na linha do tempo do caso para que os
analistas possam confirmar a sincronização.
syncCaseClose é o interruptor principal da sincronização de saída (ativado por padrão).
Quando está desativado, nenhuma chamada de saída é feita. As atualizações de alertas usam o
endpoint moderno /security/alerts_v2/{id}; as de incidentes usam /security/incidents/{id}.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 — para implantações somente de entrada, conceda apenas
SecurityAlert.Read.AlleSecurityIncident.Read.All; adicione os escoposReadWrite.Allcorrespondentes somente se você habilitar o fechamento reverso de saída. 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
cbr_defender_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 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.A sondagem está habilitada, mas nenhum incidente aparece
A sondagem está habilitada, mas nenhum incidente aparece
SecurityIncident.Read.All (ou ReadWrite.All) com
consentimento do administrador, se o serviço de sondagem consegue alcançar
graph.microsoft.com (e seu proxy, se houver) e se existem incidentes mais recentes que o
cursor. Na primeira execução, apenas os incidentes dentro de pollingInitialLookbackHours
são importados. Os incidentes sondados aparecem na caixa de entrada de Alertas.Certifique-se de que todos os serviços do CaseBender estejam em execução. Os incidentes são
obtidos pelo processador em segundo plano e transformados em alertas (e, opcionalmente, em
casos) pelo worker em segundo plano. Se o worker não estiver em execução, os incidentes são
obtidos, mas nunca aparecem. Com o Docker, execute docker compose ps e confirme que os
serviços worker e misp-processor estão Up; caso contrário, execute
docker compose up -d. O instalador padrão e o guia de início rápido configuram tudo
automaticamente — você não precisa configurar nenhuma opção de fila ou Redis.O fechamento do caso não atualiza o Defender
O fechamento do caso não atualiza o Defender
syncCaseClose esteja ativado (é o interruptor principal). Para também
marcar a entidade do Defender como resolved, habilite closeAlertsOnCaseClose /
closeIncidentsOnCaseClose. O caso deve estar vinculado a um alerta/incidente do Defender —
fechar um caso promovido a partir de um alerta do Defender (sondado ou por webhook) resolve o
vínculo automaticamente. Verifique a linha do tempo do caso para ver o resultado.A atualização de saída retorna 403 ou 404
A atualização de saída retorna 403 ou 404
403 significa que o aplicativo do Azure AD não tem permissão de gravação — confirme que
SecurityAlert.ReadWrite.All e SecurityIncident.ReadWrite.All foram concedidos com
consentimento do administrador. Um 404 na atualização de um alerta geralmente indica um
endpoint legado; o CaseBender usa /security/alerts_v2/{id} para alertas modernos do Defender XDR.