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 registros brutos para a UDM do Google SecOps, processando vários tipos de dados e estruturas aninhadas, além de enriquecer os dados com contexto e rótulos adicionais para melhorar a análise.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

  • Instância do Google SecOps.
  • Acesso privilegiado ao Microsoft Defender para Nuvem.

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds
  • Central de conteúdo > Pacotes de conteúdo

Configure feeds em "Configurações do SIEM" > "Feeds".

Para configurar um feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed, por exemplo, Registros de alerta do Microsoft Defender para nuvem.
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione Microsoft Defender para nuvem como o Tipo de registro.
  7. Clique em Próxima.
  8. Opcional: especifique valores para os seguintes parâmetros de entrada:
    • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.
  9. Clique em Próxima.
  10. Revise a configuração do feed na tela Finalizar e clique em Enviar.
  11. Clique em Gerar chave secreta para autenticar o feed.
  12. Copie e armazene a chave secreta. Não é possível ver essa chave secreta novamente. Se necessário, você pode gerar uma nova chave secreta, mas isso torna a anterior obsoleta.
  13. 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.
  14. Clique em Concluído.

Configurar feeds na Central de conteúdo

Especifique valores para os seguintes campos:

  • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.

Opções avançadas

  • Nome do feed: um valor pré-preenchido que identifica o feed.
  • Tipo de origem: método usado para coletar registros no Google SecOps.
  • Namespace do recurso: namespace associado ao feed.
  • Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.

  • Clique em Gerar chave secreta para autenticar o feed.

  • Copie e armazene a chave secreta. Não é possível ver essa chave secreta novamente. Se necessário, você pode gerar uma nova chave secreta, mas isso torna a anterior obsoleta.

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

Criar uma chave de API para o feed de webhook

  1. Acesse console doGoogle 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.

Especifique o URL do endpoint

  1. No aplicativo cliente, especifique o URL do endpoint HTTPS fornecido no feed do 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 no URL. Se o cliente de webhook não aceitar 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 autenticar 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. Configurar o aplicativo lógico:
    • Nome: forneça um nome descritivo para o aplicativo lógico (por exemplo, GoogleSecOpsWebhook).
    • Assinatura: selecione a assinatura adequada.
    • Grupo de recursos: escolha um grupo de recursos ou crie um.
    • 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 aplicativo lógico.
  5. Clique em Revisar + Criar para criar o aplicativo lógico.
  6. Clique em Criar para implantar o aplicativo lógico.

Configurar a conexão de webhook do Azure Logic App

  1. Acesse o aplicativo lógico criado na etapa anterior.
  2. Clique em Ferramentas de desenvolvimento > Designer de aplicativos lógicos.
  3. Clique em Adicionar um acionador.
  4. Pesquise Microsoft Defender para Nuvem > Quando um alerta do Microsoft Defender para Nuvem é criado ou acionado como o acionador.

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

  6. Clique em Inserir uma nova etapa para adicionar uma 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: é aqui que você vai inserir o URL do endpoint de API Google SecOps.
    • Método: POST
    • Adicionar cabeçalho Content-Type: defina Content-Type como chave e application/json como valor. 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 corpo da etapa anterior: clique em Inserir conteúdo da solicitação > clique em Inserir os dados das etapas anteriores (botão com ícone de raio à esquerda do campo de entrada).
  11. Clique em Salvar.

Configurar o webhook de alertas do Microsoft Defender para Nuvem

  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: insira um nome descritivo para a regra de automação (por exemplo, ForwardAlertsToGoogleSecOps).
    • Grupo de recursos: escolha um grupo de recursos existente.
    • Tipo de dados do Defender for Cloud: escolha Alerta de segurança.
    • Gravidade do alerta: escolha Selecionar tudo.
    • Mostrar instâncias do aplicativo lógico das seguintes assinaturas: escolha a assinatura em que o aplicativo lógico foi criado.
    • Selecionar aplicativo lógico: escolha o aplicativo lógico criado nas etapas anteriores.
  4. Clique em Criar para salvar a automação de 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, 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 mudança de nome para accountSessionId.
ExtendedProperties.Alert Id metadata.product_log_id Mapeado diretamente após a mudança de nome para alertId.
ExtendedProperties.Authentication type extensions.auth.auth_details Mapeado diretamente após a mudança de nome para authenticationType.
ExtendedProperties.Client Application principal.application Mapeado diretamente após a mudança de nome para clientApplication.
ExtendedProperties.Client Hostname principal.asset.hostname, principal.hostname Mapeado diretamente após a mudança de nome para clientHostName.
ExtendedProperties.Client IP address principal.asset.ip, principal.ip Mapeado diretamente após a mudança de nome para clientIpAddress.
ExtendedProperties.Client IP location principal.location.country_or_region Mapeado diretamente após a mudança de nome para clientIpLocation.
ExtendedProperties.Client Location principal.location.country_or_region Mapeado diretamente após a mudança de nome para clientLocation.
ExtendedProperties.Client Principal Name principal.user.userid Mapeado diretamente após a mudança de nome para clientPrincipalName.
ExtendedProperties.Compromised Host principal.asset.hostname, principal.hostname Mapeado diretamente após a mudança de nome para compromisedHost.
ExtendedProperties.Suspicious Command Line target.process.command_line Mapeado diretamente após a mudança de nome para suspiciousCommandLine.
ExtendedProperties.Suspicious Process target.process.file.full_path Mapeado diretamente após a mudança de nome para suspiciousProcess.
ExtendedProperties.Suspicious Process Id target.process.pid Mapeado diretamente após a mudança de nome para suspiciousProcessId.
ExtendedProperties.User agent network.http.user_agent Mapeado diretamente após a mudança de nome para userAgent.
ExtendedProperties.User Name principal.user.user_display_name Mapeado diretamente após a mudança de nome 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 para ponto flutuante.
properties.entities[].location.longitude principal.location.region_coordinates.longitude Mapeado diretamente. Convertido para ponto 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 com o í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, 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 for fornecido no registro. Defina como "MICROSOFT_DEFENDER_CLOUD_ALERTS". Definido como "USER_RESOURCE_ACCESS" se a principal ou o destino estiverem presentes. Caso contrário, definido como "GENERIC_EVENT".

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.