Coletar registros de alerta do Microsoft Defender para Nuvem

Compatível com:

Visão geral

Esse analisador extrai dados de alertas de segurança dos registros formatados em JSON do Microsoft Defender para nuvem. Ele transforma e mapeia os campos de registro brutos para o UDM do Google SecOps, processando vários tipos de dados e estruturas aninhadas, além de enriquecer os dados com mais contexto e rótulos para melhorar a análise.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Verifique se você tem acesso privilegiado ao Microsoft Defender para nuvem.

Configurar um feed no Google SecOps para processar os registros de alertas do Microsoft Defender Cloud

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. No campo Nome do feed, insira um nome para o feed (por exemplo, Registros de alerta do Microsoft Defender para nuvem).
  4. Selecione Webhook como o Tipo de origem.
  5. Selecione Microsoft Defender para nuvem como o Tipo de registro.
  6. Clique em Próxima.
  7. Opcional: especifique valores para os seguintes parâmetros de entrada:
    • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.
    • Namespace de recursos: o namespace de recursos.
    • Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
  8. Clique em Próxima.
  9. Revise a configuração do feed na tela Finalizar e clique em Enviar.
  10. Clique em Gerar chave secreta para gerar uma chave secreta para autenticar esse feed.
  11. Copie e armazene a chave secreta. Não é possível acessar essa chave secreta novamente. Se necessário, você pode gerar uma nova chave secreta, mas essa ação torna a chave secreta anterior obsoleta.
  12. Na guia Detalhes, copie o URL do endpoint do feed no campo Informações do endpoint. É necessário especificar esse URL de endpoint no aplicativo cliente.
  13. Clique em Concluído.

Criar uma chave de API para o feed de webhook

  1. Acesse o console do Google Cloud > Credenciais.

    Ir para Credenciais

  2. Clique em Criar credenciais e, em seguida, selecione Chave de API.

  3. Restrinja o acesso da chave de API à API Google Security Operations.

Especificar o URL do endpoint

  1. No aplicativo cliente, especifique o URL do endpoint HTTPS fornecido no feed de webhook.
  2. Ative a autenticação especificando a chave de API e a chave secreta como parte do cabeçalho personalizado no seguinte formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendação: especifique a chave de API como um cabeçalho em vez de especificar no URL. Se o cliente do webhook não tiver suporte a cabeçalhos personalizados, especifique a chave de API e a chave secreta usando parâmetros de consulta no seguinte formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Substitua:

  • ENDPOINT_URL: o URL do endpoint do feed.
  • API_KEY: a chave de API para autenticação no Google Security Operations.
  • SECRET: a chave secreta gerada para autenticar o feed.

Criar um app de lógica do Azure

  1. Faça login no portal do Azure (https://portal.azure.com).
  2. Clique em Criar um recurso e pesquise Logic App.
  3. Clique em Criar para iniciar o processo de implantação.
  4. Configure o app de lógica:
    • Nome: informe um nome descritivo para a app de lógica (por exemplo, GoogleSecOpsWebhook).
    • Assinatura: selecione a assinatura adequada.
    • Grupo de recursos: escolha um grupo de recursos ou crie um novo.
    • Local: escolha o local mais próximo do seu ambiente.
    • Análise de dados de registros: ative essa opção se quiser registrar dados de diagnóstico para o app de lógica.
  5. Clique em Revisar + Criar para criar a app de lógica.
  6. Clique em Criar para implantar a app de lógica.

Configurar a conexão do webhook do app de lógica do Azure

  1. Acesse a app de lógica criada na etapa anterior.
  2. Clique em Ferramentas de desenvolvimento > Designer de app de lógica.
  3. Clique em Adicionar um acionador.
  4. Pesquise Microsoft Defender para Nuvem > Quando um alerta do Microsoft Defender para Nuvem é criado ou acionado como acionador.

  5. Clique em Criar novo e siga as instruções para autenticação.

  6. Clique em Inserir uma nova etapa para adicionar uma nova etapa ao fluxo de trabalho.

  7. Clique em Adicionar uma ação.

  8. Pesquise HTT.

  9. Selecione HTTP como a ação.

  10. Configure a ação HTTP:

    • URI: é onde você vai inserir o URL do endpoint de API Google SecOps.
    • Método: POST
    • Adicionar cabeçalho Content-Type: defina Content-Type como chave de cabeçalho e application/json como valor de cabeçalho. Isso informa ao Google SecOps o formato dos dados enviados.
    • Adicionar chave de API às consultas: defina key como a primeira chave de consulta e <API_KEY> como o valor da consulta. API_KEY é o valor da chave de API gerado durante a configuração do feed do Google SecOps.
    • Adicionar chave secreta às consultas: defina secret como a segunda chave de consulta e <SECRET_KEY> como o valor da consulta. SECRET_KEY é a chave secreta gerada durante a configuração do feed do Google SecOps.
    • Definir o corpo da etapa anterior: clique em Enter request content > clique em Enter the data from previous steps (botão com ícone de raio à esquerda do campo de entrada).
  11. Clique em Salvar.

Configurar o webhook do Microsoft Defender Cloud Alerts

  1. Acesse o Microsoft Defender para Nuvem.
  2. Clique em Gerenciamento > Automação de fluxo de trabalho.
  3. Clique em Adicionar automação de fluxo de trabalho.
    • Nome: informe um nome descritivo para a regra de automação (por exemplo, ForwardAlertsToGoogleSecOps).
    • Grupo de recursos: escolha um grupo de recursos existente.
    • Defender for Cloud data type: escolha Alerta de segurança.
    • Gravidade do alerta: escolha Selecionar tudo.
    • Mostrar instâncias do app de lógica das seguintes assinaturas: escolha a assinatura em que o app de lógica foi criado.
    • Selecionar a app de lógica: escolha a app de lógica criada nas etapas anteriores.
  4. Clique em Criar para salvar a automação do fluxo de trabalho.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
AlertLink principal.resource.attribute.labels.AlertLink.value Mapeado diretamente.
AlertName security_result.rule_name Mapeado diretamente.
AlertSeverity security_result.severity Mapeado diretamente se o valor for ALTO, MÉDIO, BAIXO, CRÍTICO ou UNKNOWN_SEVERITY. Caso contrário, será mapeado para security_result.severity_details. O valor é convertido para maiúsculas antes da comparação.
AlertType security_result.threat_name Mapeado diretamente.
CompromisedEntity principal.resource.attribute.labels.CompromisedEntity.value Mapeado diretamente.
Description security_result.description Mapeado diretamente.
DisplayName security_result.summary Mapeado diretamente.
EndTime about.resource.attribute.labels.EndTime.value Mapeado diretamente.
Entities[].Location.City principal.location.city Mapeado diretamente.
Entities[].Location.CountryName principal.location.country_or_region Mapeado diretamente.
ExtendedLinks[].Category about.resource.attribute.labels.extendedLink_Category.value Mapeado diretamente.
ExtendedLinks[].Href about.resource.attribute.labels.extendedLink_Href.value Mapeado diretamente.
ExtendedLinks[].Label about.resource.attribute.labels.extendedLink_Label.value Mapeado diretamente.
ExtendedLinks[].Type about.resource.attribute.labels.extendedLink_Type.value Mapeado diretamente.
ExtendedProperties.Account Session Id network.session_id Mapeado diretamente após a renomeação para accountSessionId.
ExtendedProperties.Alert Id metadata.product_log_id Mapeado diretamente após a renomeação para alertId.
ExtendedProperties.Authentication type extensions.auth.auth_details Mapeado diretamente após a renomeação para authenticationType.
ExtendedProperties.Client Application principal.application Mapeado diretamente após a renomeação para clientApplication.
ExtendedProperties.Client Hostname principal.asset.hostname, principal.hostname Mapeado diretamente após a renomeação para clientHostName.
ExtendedProperties.Client IP address principal.asset.ip, principal.ip Mapeado diretamente após a renomeação para clientIpAddress.
ExtendedProperties.Client IP location principal.location.country_or_region Mapeado diretamente após a renomeação para clientIpLocation.
ExtendedProperties.Client Location principal.location.country_or_region Mapeado diretamente após a renomeação para clientLocation.
ExtendedProperties.Client Principal Name principal.user.userid Mapeado diretamente após a renomeação para clientPrincipalName.
ExtendedProperties.Compromised Host principal.asset.hostname, principal.hostname Mapeado diretamente após a renomeação para compromisedHost.
ExtendedProperties.Suspicious Command Line target.process.command_line Mapeado diretamente após a renomeação para suspiciousCommandLine.
ExtendedProperties.Suspicious Process target.process.file.full_path Mapeado diretamente após a renomeação para suspiciousProcess.
ExtendedProperties.Suspicious Process Id target.process.pid Mapeado diretamente após a renomeação para suspiciousProcessId.
ExtendedProperties.User agent network.http.user_agent Mapeado diretamente após a renomeação para userAgent.
ExtendedProperties.User Name principal.user.user_display_name Mapeado diretamente após a renomeação para userName.
ExtendedProperties.resourceType principal.resource.name Mapeado diretamente.
IsIncident security_result.detection_fields.IsIncident.value Mapeado diretamente. Convertido em string.
ProcessingEndTime about.resource.attribute.labels.ProcessingEndTime.value Mapeado diretamente.
ProductName metadata.product_name Mapeado diretamente.
ResourceId principal.resource.product_object_id Mapeado diretamente.
SourceSystem security_result.detection_fields.SourceSystem.value Mapeado diretamente.
StartTime about.resource.attribute.labels.StartTime.value Mapeado diretamente.
Status security_result.detection_fields.Status.value Mapeado diretamente.
SystemAlertId metadata.product_log_id Mapeado diretamente.
Tactics security_result.attack_details.tactics.name Mapeado diretamente.
TenantId additional.fields.TenantId.string_value Mapeado diretamente.
TimeGenerated about.resource.attribute.labels.TimeGenerated.value Mapeado diretamente.
VendorName metadata.vendor_name Mapeado diretamente.
WorkspaceResourceGroup target.resource.attribute.labels.WorkspaceResourceGroup.value Mapeado diretamente.
WorkspaceSubscriptionId target.resource.attribute.labels.WorkspaceSubscriptionId.value Mapeado diretamente.
_Internal_WorkspaceResourceId target.resource.product_object_id Mapeado diretamente.
properties.alertDisplayName security_result.rule_name Mapeado diretamente.
properties.alertType security_result.threat_name Mapeado diretamente.
properties.alertUri principal.resource.attribute.labels.AlertUri.value Mapeado diretamente.
properties.correlationKey principal.resource.attribute.labels.correlationKey.value Mapeado diretamente.
properties.description security_result.description Mapeado diretamente.
properties.endTimeUtc additional.fields.EndTime.string_value Mapeado diretamente.
properties.entities[].location.city principal.location.city Mapeado diretamente.
properties.entities[].location.countryName principal.location.country_or_region Mapeado diretamente.
properties.entities[].location.latitude principal.location.region_coordinates.latitude Mapeado diretamente. Convertido em flutuante.
properties.entities[].location.longitude principal.location.region_coordinates.longitude Mapeado diretamente. Convertido em flutuante.
properties.extendedProperties.alert_Id metadata.product_log_id Mapeado diretamente.
properties.extendedProperties.clientApplication principal.application Mapeado diretamente.
properties.extendedProperties.clientIpAddress principal.asset.ip, principal.ip Mapeado diretamente. Analisado como endereço IP.
properties.extendedProperties.clientLocation principal.location.country_or_region Mapeado diretamente.
properties.extendedProperties.clientPrincipalName principal.user.userid Mapeado diretamente.
properties.extendedProperties.compromisedEntity principal.resource.attribute.labels.CompromisedEntity.value Mapeado diretamente.
properties.extendedProperties.resourceType principal.resource.name Mapeado diretamente.
properties.IsIncident security_result.detection_fields.isIncident.value Mapeado diretamente. Convertido em string.
properties.productName metadata.product_name Mapeado diretamente.
properties.resourceIdentifiers[].<key> additional.fields.<key>_<index>.string_value Mapeado diretamente. As chaves $id e type são anexadas ao índice do elemento na matriz.
properties.severity security_result.severity Mapeado diretamente se o valor for ALTO, MÉDIO, BAIXO, CRÍTICO ou UNKNOWN_SEVERITY. Caso contrário, será mapeado para security_result.severity_details. O valor é convertido para maiúsculas antes da comparação.
properties.startTimeUtc additional.fields.StartTime.string_value Mapeado diretamente.
properties.status security_result.detection_fields.Status.value Mapeado diretamente.
properties.timeGeneratedUtc additional.fields.TimeGenerated.string_value Mapeado diretamente. Defina como "MICROSOFT_DEFENDER_CLOUD_ALERTS" se não estiver no registro. Defina como "MICROSOFT_DEFENDER_CLOUD_ALERTS". Defina como "USER_RESOURCE_ACCESS" se o principal ou o destino estiverem presentes. Caso contrário, defina como "GENERIC_EVENT".

Alterações

2024-07-05

  • "isInteractive" foi mapeado para "security_result.detection_fields".

2024-04-02

  • "properties.createdDateTime" foi mapeado para "metadata.event_timestamp".
  • Mapeou "properties.resourceServicePrincipalId" e "resourceServicePrincipalId" para "target.resource.attribute.labels".
  • Mapeamos "properties.authenticationProcessingDetails", "authenticationProcessingDetails" e "properties.networkLocationDetails" para "additional.fields".
  • "properties.userAgent" foi mapeado para "network.http.user_agent" e "network.http.parsed_user_agent".
  • Mapeamos "properties.authenticationRequirement" para "additional.fields".