Recolha registos de alertas do Microsoft Defender for Cloud

Compatível com:

Vista geral

Este analisador extrai dados de alertas de segurança dos registos formatados em JSON do Microsoft Defender for Cloud. Transforma e mapeia os campos de registo não processados no UDM do Google SecOps, processando vários tipos de dados e estruturas aninhadas, ao mesmo tempo que enriquece os dados com contexto e etiquetas adicionais para uma análise melhorada.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Instância do Google SecOps.
  • Acesso privilegiado ao Microsoft Defender for Cloud.

Configure feeds

Para configurar um feed, siga estes passos:

  1. Aceda a Definições do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na página seguinte, clique em Configurar um único feed.
  4. No campo Nome do feed, introduza um nome para o feed; por exemplo, Registos de alertas do Microsoft Defender for Cloud.
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione Microsoft Defender for Cloud como o Tipo de registo.
  7. Clicar em Seguinte.
  8. Opcional: especifique valores para os seguintes parâmetros de entrada:
    • Delimitador de divisão: o delimitador usado para separar linhas de registo, como \n.
  9. Clicar em Seguinte.
  10. Reveja a configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
  11. Clique em Gerar chave secreta para gerar uma chave secreta para autenticar este feed.
  12. Copie e armazene a chave secreta. Não pode ver esta chave secreta novamente. Se necessário, pode regenerar uma nova chave secreta, mas esta ação torna a chave secreta anterior obsoleta.
  13. No separador Detalhes, copie o URL do ponto final do feed do campo Informações do ponto final. Tem de especificar este URL do ponto final na sua aplicação cliente.
  14. Clique em Concluído.

Crie uma chave da API para o feed de webhook

  1. Aceda à Google Cloud consola > Credenciais.

    Aceder a Credenciais

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

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

Especifique o URL do ponto final

  1. Na aplicação cliente, especifique o URL do ponto final HTTPS fornecido no feed do webhook.
  2. Ative a autenticação especificando a chave da 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 da API como um cabeçalho em vez de a especificar no URL. Se o seu cliente de webhook não suportar cabeçalhos personalizados, pode especificar a chave da API e a chave secreta através de parâmetros de consulta no seguinte formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Substitua o seguinte:

  • ENDPOINT_URL: o URL do ponto final do feed.
  • API_KEY: a chave da API para autenticar no Google Security Operations.
  • SECRET: a chave secreta que gerou para autenticar o feed.

Crie uma aplicação Azure Logic

  1. Inicie sessão 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 implementação.
  4. Configure a app Logic:
    • Nome: indique um nome descritivo para a app Logic (por exemplo, GoogleSecOpsWebhook).
    • Subscrição: selecione a subscrição adequada.
    • Grupo de recursos: escolha um grupo de recursos existente ou crie um novo.
    • Localização: escolha a localização mais próxima do seu ambiente.
    • Registar Analytics: ative esta opção se quiser registar dados de diagnóstico para a app Logic.
  5. Clique em Rever + criar para criar a app Logic.
  6. Clique em Criar para implementar a app Logic.

Configure a ligação do webhook da Azure Logic App

  1. Aceda à app Logic criada no passo anterior.
  2. Clique em Ferramentas de desenvolvimento > Logic App Designer.
  3. Clique em Adicionar um acionador.
  4. Pesquise Microsoft Defender for Cloud > Quando um alerta do Microsoft Defender for Cloud é criado ou acionado como acionador.

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

  6. Clique em Inserir um novo passo para adicionar um novo passo ao fluxo de trabalho.

  7. Clique em Adicionar uma ação.

  8. Pesquise HTT.

  9. Selecione HTTP como ação.

  10. Configure a ação HTTP:

    • URI: é aqui que introduz o URL do ponto final da API Google SecOps.
    • Método: POST
    • Adicione o cabeçalho Content-Type: defina Content-Type como a chave do cabeçalho e application/json como o valor do cabeçalho. Isto indica ao Google SecOps o formato dos dados que estão a ser enviados.
    • Adicionar chave da API a consultas: defina key como a primeira chave de consulta e <API_KEY> como o valor de consulta. API_KEY é o valor da chave da API gerado durante a configuração do feed do Google SecOps.
    • Adicione a chave secreta às consultas: defina secret como a segunda chave de consulta e <SECRET_KEY> como o valor de consulta. SECRET_KEY é a chave secreta gerada durante a configuração do feed do Google SecOps.
    • Definir corpo a partir do passo anterior: clique em Introduzir conteúdo do pedido > clique em Introduzir os dados dos passos anteriores (botão com o ícone de relâmpago à esquerda do campo de entrada).
  11. Clique em Guardar.

Configure o webhook de alertas do Microsoft Defender na nuvem

  1. Aceda ao Microsoft Defender for Cloud.
  2. Clique em Gestão > Automatização de fluxo de trabalho.
  3. Clique em Adicionar automatização de fluxo de trabalho.
    • Nome: indique um nome descritivo para a regra de automatizaçã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 da app Logic das seguintes subscrições: escolha a subscrição onde a app Logic foi criada.
    • Selecionar app lógica: escolha a app lógica criada nos passos anteriores.
  4. Clique em Criar para guardar a automatização do fluxo de trabalho.

Tabela de mapeamento da UDM

Campo de registo Mapeamento de 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 um de HIGH, MEDIUM, LOW, CRITICAL, UNKNOWN_SEVERITY. Caso contrário, mapeado para security_result.severity_details. O valor é convertido em 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 do nome para accountSessionId.
ExtendedProperties.Alert Id metadata.product_log_id Mapeado diretamente após a mudança do nome para alertId.
ExtendedProperties.Authentication type extensions.auth.auth_details Mapeado diretamente após a mudança do nome para authenticationType.
ExtendedProperties.Client Application principal.application Mapeado diretamente após a mudança do nome para clientApplication.
ExtendedProperties.Client Hostname principal.asset.hostname, principal.hostname Mapeado diretamente após a mudança do nome para clientHostName.
ExtendedProperties.Client IP address principal.asset.ip, principal.ip Mapeado diretamente após a mudança do nome para clientIpAddress.
ExtendedProperties.Client IP location principal.location.country_or_region Mapeado diretamente após a mudança do nome para clientIpLocation.
ExtendedProperties.Client Location principal.location.country_or_region Mapeado diretamente após a mudança do nome para clientLocation.
ExtendedProperties.Client Principal Name principal.user.userid Mapeado diretamente após a mudança do nome para clientPrincipalName.
ExtendedProperties.Compromised Host principal.asset.hostname, principal.hostname Mapeado diretamente após a mudança do nome para compromisedHost.
ExtendedProperties.Suspicious Command Line target.process.command_line Mapeado diretamente após a mudança do nome para suspiciousCommandLine.
ExtendedProperties.Suspicious Process target.process.file.full_path Mapeado diretamente após a mudança do nome para suspiciousProcess.
ExtendedProperties.Suspicious Process Id target.process.pid Mapeado diretamente após a mudança do nome para suspiciousProcessId.
ExtendedProperties.User agent network.http.user_agent Mapeado diretamente após a mudança do nome para userAgent.
ExtendedProperties.User Name principal.user.user_display_name Mapeado diretamente após a mudança do 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 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 com o índice do elemento na matriz.
properties.severity security_result.severity Mapeado diretamente se o valor for um de HIGH, MEDIUM, LOW, CRITICAL, UNKNOWN_SEVERITY. Caso contrário, mapeado para security_result.severity_details. O valor é convertido em 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. Definido como "MICROSOFT_DEFENDER_CLOUD_ALERTS" se não for fornecido no registo. Definido como "MICROSOFT_DEFENDER_CLOUD_ALERTS". Definido como "USER_RESOURCE_ACCESS" se o 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 da Google SecOps.