Coletar registros de login do Microsoft Entra ID

Compatível com:

Este documento explica como coletar registros de login do Microsoft Entra ID (antigo Azure Active Directory) configurando um feed do Google Security Operations. É possível configurar a ingestão usando dois métodos: o Hub de Eventos do Azure (recomendado) ou a API de terceiros.

Antes de começar

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

  • Uma instância do Google SecOps
  • Acesso privilegiado ao portal do Microsoft Azure
  • Função de administrador de segurança ou administrador global no Microsoft Entra ID (necessário para configurações de diagnóstico)
  • Para o método de API de terceiros, uma das seguintes funções para conceder consentimento do administrador:
    • Administrador global: pode conceder consentimento para qualquer permissão e API.
    • Administrador de função privilegiada: pode conceder consentimento para qualquer permissão, em qualquer API.
    • Administrador de aplicativos do Cloud: pode conceder consentimento para qualquer permissão de qualquer API, exceto funções de app do Microsoft Graph (permissões de aplicativo).

Esse método transmite os registros de login do Entra ID pelo Hub de Eventos do Azure com a captura ativada, que grava os dados no Armazenamento de Blobs do Azure. Em seguida, o Google SecOps ingere os registros do armazenamento de Blobs usando o tipo de feed do Armazenamento de Blobs do Azure V2.

Configurar a conta de armazenamento do Azure

Criar conta de armazenamento

  1. No portal do Azure, pesquise Contas de armazenamento.
  2. Clique em Criar.
  3. Informe os seguintes detalhes de configuração:

    Configuração Valor
    Assinatura Selecione sua assinatura do Azure
    Grupo de recursos Selecionar ou criar
    Nome da conta de armazenamento Insira um nome exclusivo (por exemplo, secopsaadsignin).
    Região Selecione a região mais próxima do seu namespace do Hub de Eventos.
    Desempenho Padrão (recomendado)
    Redundância LRS (armazenamento redundante local) ou GRS (armazenamento com redundância geográfica)
  4. Clique em Revisar + criar.

  5. Revise a visão geral e clique em Criar.

  6. Aguarde até que a implantação seja concluída.

Receber credenciais da conta de armazenamento

  1. Acesse a conta de armazenamento que você criou.
  2. Na navegação à esquerda, selecione Chaves de acesso em Segurança e rede.
  3. Clique em Mostrar chaves.
  4. Copie e salve o seguinte:
    • Nome da conta de armazenamento
    • Chave 1 ou Chave 2: a chave de acesso compartilhado.

Criar namespace e Hub de Eventos

Criar namespace dos Hubs de Eventos

  1. No portal do Azure, pesquise Hubs de Eventos.
  2. Clique em Criar.
  3. Informe os seguintes detalhes de configuração:

    Configuração Valor
    Assinatura Selecione sua assinatura do Azure
    Grupo de recursos Selecione o mesmo grupo de recursos da sua conta de armazenamento.
    Nome do namespace Insira um nome exclusivo (por exemplo, secops-entraid-signin).
    Local Selecione a mesma região da sua conta de armazenamento.
    Nível de preços Padrão (obrigatório para a captura do Hub de Eventos)
  4. Clique em Revisar + criar e em Criar.

  5. Aguarde até que a implantação seja concluída.

Criar Hub de Eventos

  1. Acesse o namespace do Hub de Eventos que você criou.
  2. Clique em + Event Hub na parte de cima.
  3. Informe os seguintes detalhes de configuração:
    • Nome: insira um nome (por exemplo, entraid-signin-logs).
    • Contagem de partições: 2 (padrão, aumente para maior capacidade de processamento).
    • Política de limpeza: excluir.
    • Tempo de retenção (horas): 24 (mínimo, aumente se necessário para resiliência).
  4. Clique em Revisar + criar e em Criar.

Ativar a captura do Hub de Eventos

  1. Acesse o Hub de Eventos que você criou (dentro do namespace).
  2. No menu de navegação à esquerda, selecione Capturar.
  3. Defina Captura como Ativada.
  4. Informe os seguintes detalhes de configuração:

    Configuração Valor
    Período (minutos) 5 (ou menos para quase em tempo real)
    Janela de tamanho (MB) 300
    Provedor de captura Armazenamento de blobs do Azure
    Assinatura do Azure Selecione sua assinatura
    Conta de armazenamento Selecione a conta de armazenamento que você criou.
    Contêiner de blob Crie ou selecione um contêiner (por exemplo, entraid-signin-capture).
  5. Clique em Salvar.

Configurar as configurações de diagnóstico do Entra ID

  1. No portal do Azure, pesquise Microsoft Entra ID.
  2. No painel de navegação à esquerda, acesse Monitoramento e integridade > Configurações de diagnóstico.
  3. Clique em Adicionar configuração de diagnóstico.
  4. Informe os seguintes detalhes de configuração:
    • Nome da configuração de diagnóstico: insira um nome descritivo (por exemplo, signin-logs-to-eventhub).
    • Na seção Registros, selecione as categorias de registros de acesso que você quer exportar:
      • SignInLogs: logins interativos de usuários.
      • NonInteractiveUserSignInLogs: logins de usuários não interativos (opcional, recomendado).
      • ServicePrincipalSignInLogs: logins do principal de serviço (opcional).
      • ManagedIdentitySignInLogs: logins de identidade gerenciada (opcional).
    • Na seção Detalhes do destino, selecione Transmitir para um hub de eventos.
    • Assinatura: selecione a assinatura que contém o namespace do Hub de Eventos.
    • Namespace do Hub de Eventos: selecione o namespace que você criou (por exemplo, secops-entraid-signin).
    • Nome do hub de eventos: selecione o hub de eventos que você criou (por exemplo, entraid-signin-logs).
    • Nome da política do hub de eventos: selecione RootManageSharedAccessKey.
  5. Clique em Salvar.

Configurar feeds

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

  • Configurações do SIEM > Feeds > Adicionar novo feed
  • Hub de conteúdo > Pacotes de conteúdo > Comece já

Configurar um feed no Google SecOps para ingerir registros de login do Entra ID

  1. Clique no pacote Plataforma do Azure.
  2. Localize o tipo de registro Azure AD.
  3. Especifique valores para os seguintes campos:

    • Tipo de origem: Armazenamento de blobs V2 do Microsoft Azure
    • URI do Azure: insira o URL do endpoint do serviço de blobs com o caminho do contêiner de captura:

      https://<storage-account>.blob.core.windows.net/entraid-signin-capture/
      

      Substitua <storage-account> pelo nome da sua conta de armazenamento do Azure.

    • Opção de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência:

      • Nunca: nunca exclui arquivos após as transferências.
      • Excluir arquivos transferidos: exclui os arquivos após a transferência ser concluída.
      • Excluir arquivos transferidos e diretórios vazios: exclui arquivos e diretórios vazios após a transferência bem-sucedida.
    • Idade máxima do arquivo: inclui arquivos modificados no último número de dias. O padrão é de 180 dias.

    • Chave compartilhada: insira o valor da chave de acesso compartilhado da conta de armazenamento.

    • Namespace do recurso: o namespace do recurso.

    • Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.

  4. Clique em Criar feed.

Depois de criar o feed, pode levar de 5 a 10 minutos para que os registros comecem a aparecer no Google SecOps.

Para mais informações sobre como configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar feeds por produto.

Para mais informações sobre os feeds do Google Security Operations, consulte a documentação dos feeds do Google Security Operations. Para informações sobre os requisitos de cada tipo de feed, consulte Configuração de feed por tipo.

Configurar o firewall do Azure Storage (se ativado)

Se a sua conta do Azure Storage usar um firewall, adicione os intervalos de IP do Google SecOps.

  1. No portal do Azure, acesse sua conta de armazenamento.
  2. Selecione Rede em Segurança e rede.
  3. Em Firewalls e redes virtuais, selecione Ativado nas redes virtuais e endereços IP selecionados.
  4. Na seção Firewall, em Intervalo de endereços, clique em + Adicionar intervalo de IP.
  5. Adicione cada intervalo de IP do Google SecOps na notação CIDR.
  6. Clique em Salvar.

Método 2: API de terceiros

Esse método usa a API Microsoft Graph para recuperar os registros de login do Entra ID diretamente do seu locatário da Microsoft.

Configurar a lista de permissões de IP

Antes de criar o feed, adicione os intervalos de IP do Google SecOps à lista de permissões nas configurações de rede ou nas políticas de acesso condicional do Microsoft Azure.

Receber intervalos de IP do Google SecOps

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Observe os intervalos de IP mostrados na interface de criação de feeds.
  4. Também é possível recuperar intervalos de IP de maneira programática usando a API Management Feed.

Configurar o acesso condicional para identidades de carga de trabalho (se necessário)

Se a organização usa políticas de Acesso Condicional que restringem o acesso por local:

  1. Na Central de administração do Microsoft Entra, acesse Proteção > Acesso condicional > Locais nomeados.
  2. Clique em + Novo local.
  3. Informe os seguintes detalhes de configuração:
    • Nome: insira Google SecOps IP Ranges.
    • Marcar como local de confiança: opcional, com base na sua política de segurança.
    • Intervalos de IP: adicione cada intervalo de IP do Google SecOps na notação CIDR.
  4. Clique em Criar.
  5. Acesse Acesso condicional > Políticas.
  6. Para políticas que se aplicam a identidades de carga de trabalho, configure uma exclusão para o local nomeado Google SecOps IP Ranges ou para a entidade de serviço específica.

Configurar o acesso à API do Microsoft Azure AD

Criar registro de app

  1. Faça login no centro de administração do Microsoft Entra ou no portal do Azure.
  2. Acesse Identidade > Aplicativos > Registros de aplicativos.
  3. Clique em New registration.
  4. Informe os seguintes detalhes de configuração:

    • Nome: insira um nome descritivo, por exemplo, Google SecOps Sign-In Logs Integration.
    • Tipos de conta compatíveis: selecione Somente contas neste diretório organizacional (tenant único).
  5. Clique em Registrar.

  6. Depois do registro, copie e salve os seguintes valores:

    • ID do aplicativo (cliente)
    • ID do diretório (locatário)

Configurar permissões da API

A integração exige as seguintes permissões de aplicativo do Microsoft Graph:

  1. No registro do app, acesse Permissões da API.
  2. Clique em Adicionar uma permissão.
  3. Selecione Microsoft Graph > Permissões do aplicativo.
  4. Selecione as seguintes permissões:
    • AuditLog.Read.All: obrigatório para ler registros de login.
    • Directory.Read.All: exigido pela API Microsoft Graph para acesso ao registro de login (problema conhecido).
    • SecurityEvents.Read.All: obrigatório para o Google Security Operations.
  5. Clique em Adicionar permissões
  6. Clique em Conceder consentimento de administrador para [Sua organização].
  7. Verifique se a coluna Status mostra Concedida para [Sua organização] em todas as três permissões.
Permissão Tipo Descrição
AuditLog.Read.All Aplicativo Ler todos os dados registro de auditoria e de acesso
Directory.Read.All Aplicativo Ler dados do diretório (necessário para acesso à API)
SecurityEvents.Read.All Aplicativo Ler eventos de segurança

Criar chave secreta do cliente

  1. Acesse Certificados e chaves secretas.
  2. Clique em New client secret.
  3. Informe os seguintes detalhes de configuração:

    • Descrição: insira um nome descritivo, por exemplo, Google SecOps Feed.
    • Expira: selecione um período de validade.
  4. Clique em Adicionar.

  5. Importante: copie imediatamente o Valor da chave secreta do cliente. Esse valor é mostrado apenas uma vez e não pode ser recuperado depois.

Verificar o acesso à API antes de criar o feed

Antes de criar o feed do Google SecOps, verifique se a entidade de serviço pode autenticar e acessar a API Microsoft Graph.

  • Testar a autenticação usando o PowerShell

    # Replace with your actual values
    $tenantId = "your-tenant-id"
    $clientId = "your-client-id"
    $clientSecret = "your-client-secret"
    
    # Token request parameters (must be lowercase)
    $tokenBody = @{
        grant_type    = "client_credentials"
        client_id     = $clientId
        client_secret = $clientSecret
        scope         = "https://graph.microsoft.com/.default"
    }
    
    # Request access token
    $tokenEndpoint = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"
    $tokenResponse = Invoke-RestMethod -Method Post -Uri $tokenEndpoint -Body $tokenBody -ContentType "application/x-www-form-urlencoded"
    
    if ($tokenResponse.access_token) {
        Write-Host "✓ Successfully obtained access token" -ForegroundColor Green
    
        # Test API call to sign-ins endpoint
        $apiUrl = "https://graph.microsoft.com/v1.0/auditLogs/signIns?`$top=1"
        $headers = @{
            Authorization = "Bearer $($tokenResponse.access_token)"
        }
    
        try {
            $signInResponse = Invoke-RestMethod -Method Get -Uri $apiUrl -Headers $headers
            Write-Host "✓ Successfully accessed sign-ins API" -ForegroundColor Green
            Write-Host "Sample sign-in log retrieved successfully" -ForegroundColor Green
        }
        catch {
            Write-Host "✗ Failed to access sign-ins API" -ForegroundColor Red
            Write-Host "Error: $($_.Exception.Message)" -ForegroundColor Red
        }
    }
    else {
        Write-Host "✗ Failed to obtain access token" -ForegroundColor Red
    }
    
  • Saída esperada:

    ✓ Successfully obtained access token
    ✓ Successfully accessed sign-ins API
    Sample sign-in log retrieved successfully
    
  • Testar a autenticação usando curl

    # Replace with your actual values
    TENANT_ID="your-tenant-id"
    CLIENT_ID="your-client-id"
    CLIENT_SECRET="your-client-secret"
    
    # Request access token
    curl -X POST "https://login.microsoftonline.com/$TENANT_ID/oauth2/v2.0/token" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -d "grant_type=client_credentials" \
    -d "client_id=$CLIENT_ID" \
    -d "client_secret=$CLIENT_SECRET" \
    -d "scope=https://graph.microsoft.com/.default"
    
    # Test API access
    curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
    "https://graph.microsoft.com/v1.0/auditLogs/signIns?\$top=1"
    

Configurar feeds

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

  • Configurações do SIEM > Feeds > Adicionar novo feed
  • Hub de conteúdo > Pacotes de conteúdo > Comece já

Configurar um feed no Google SecOps para ingerir registros de login do Microsoft Azure AD

  1. Clique no pacote Plataforma do Azure.
  2. Localize o tipo de registro Azure AD.
  3. Especifique valores para os seguintes campos:

    • Tipo de origem: API de terceiros (recomendado)
    • ID do cliente OAuth: o ID do aplicativo (cliente) do registro do app.
    • Chave secreta do cliente OAuth: o valor da chave secreta do cliente que você copiou anteriormente.
    • ID do locatário: o ID do locatário da Microsoft do registro do app (formato UUID, por exemplo, 0fc279f9-fe30-41be-97d3-abe1d7681418).
    • Caminho completo da API: URL do endpoint de API REST do Microsoft Graph:

      graph.microsoft.com/v1.0/auditLogs/signIns
      
    • Endpoint de autenticação da API: endpoint de autenticação do Microsoft Active Directory:

      login.microsoftonline.com
      

    Opções avançadas:

    • Nome do feed: um valor pré-preenchido que identifica o feed.
    • Namespace do recurso: o namespace do recurso ao qual o feed será associado.
    • Rótulos de ingestão: os rótulos serão adicionados a todos os eventos desse feed.
  4. Clique em Criar feed.

Depois de criar o feed, os dados de contexto serão recuperados periodicamente. Pode levar até 24 horas para que o instantâneo inicial do diretório apareça no Google SecOps.

Para mais informações sobre como configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar feeds por produto.

Para mais informações sobre os feeds do Google Security Operations, consulte a documentação dos feeds do Google Security Operations. Para informações sobre os requisitos de cada tipo de feed, consulte Configuração de feed por tipo. Se você tiver problemas ao criar feeds, entre em contato com o suporte do Google Security Operations.

Endpoints regionais

Para implantações do Microsoft Azure AD em nuvens soberanas, use os endpoints regionais adequados:

Ambiente em nuvem Caminho completo da API Endpoint de autenticação da API
Global graph.microsoft.com/v1.0/auditLogs/signIns login.microsoftonline.com
L4 do governo dos EUA graph.microsoft.us/v1.0/auditLogs/signIns login.microsoftonline.us
L5 do governo dos EUA (DOD) dod-graph.microsoft.us/v1.0/auditLogs/signIns login.microsoftonline.us
China (21Vianet) microsoftgraph.chinacloudapi.cn/v1.0/auditLogs/signIns login.chinacloudapi.cn

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
activityDateTime principal.event_timestamp Analisado do campo activityDateTime. Se o campo não estiver no formato esperado "aaaa-MM-ddTHH:mm:ss.SSSZ" ou "ISO8601", o analisador tentará outros formatos, como "MM/dd/aaaa HH:mm:ss A" ou "MM/d/aaaa HH:mm:ss A".
activityDisplayName security_result.summary Mapeado diretamente de activityDisplayName.
additionalDetails.0.value network.http.user_agent Mapeado diretamente de additionalDetails.0.value.
additionalDetails.1.key target.resource.attribute.labels.key Mapeado diretamente de additionalDetails.1.key.
additionalDetails.1.value target.resource.attribute.labels.value Mapeado diretamente de additionalDetails.1.value.
additionalInfo.[].Key network.http.user_agent, target.url Se Key for userAgent, mapeie Value para network.http.user_agent e network.http.parsed_user_agent. Se Key for alertUrl, mapeie Value para target.url.
additionalInfo.[].Value network.http.user_agent, target.url Se Key for userAgent, mapeie Value para network.http.user_agent e network.http.parsed_user_agent. Se Key for alertUrl, mapeie Value para target.url.
am_category metadata.description Mapeado diretamente de am_category.
am_tenantId metadata.product_deployment_id Mapeado diretamente de am_tenantId.
appId target.resource.attribute.labels.value Mapeado diretamente de appId com a chave do rótulo como "ID do app".
appDisplayName target.application Mapeado diretamente de appDisplayName.
appliedConditionalAccessPolicies.[].displayName security_result.[].rule_name, about.[].user.user_display_name Mapeado diretamente de appliedConditionalAccessPolicies.[].displayName.
appliedConditionalAccessPolicies.[].enforcedGrantControls security_result.[].rule_labels.value Mapeado diretamente de appliedConditionalAccessPolicies.[].enforcedGrantControls com a chave do rótulo como "applied_conditional_access_policies_enforced_grant_controls".
appliedConditionalAccessPolicies.[].enforcedSessionControls security_result.[].rule_labels.value Mapeado diretamente de appliedConditionalAccessPolicies.[].enforcedSessionControls com a chave do rótulo "applied_conditional_access_policies_enforced_session_controls".
appliedConditionalAccessPolicies.[].id security_result.[].rule_id, about.[].user.userid Mapeado diretamente de appliedConditionalAccessPolicies.[].id.
appliedConditionalAccessPolicies.[].result security_result.[].detection_fields.value, about.[].labels.value Mapeado diretamente de appliedConditionalAccessPolicies.[].result com a chave do rótulo como "Resultado".
authenticationDetails.[].authenticationMethod security_result.[].detection_fields.value Mapeado diretamente de authenticationDetails.[].authenticationMethod com a chave do rótulo como "authenticationMethod".
authenticationDetails.[].authenticationMethodDetail security_result.[].detection_fields.value Mapeado diretamente de authenticationDetails.[].authenticationMethodDetail com a chave do rótulo como "authenticationMethodDetail".
authenticationDetails.[].authenticationStepDateTime security_result.[].detection_fields.value Mapeado diretamente de authenticationDetails.[].authenticationStepDateTime com a chave do rótulo como "authenticationStepDateTime".
authenticationDetails.[].authenticationStepRequirement security_result.[].detection_fields.value Mapeado diretamente de authenticationDetails.[].authenticationStepRequirement com a chave do rótulo como "authenticationStepRequirement".
authenticationDetails.[].authenticationStepResultDetail security_result.[].detection_fields.value Mapeado diretamente de authenticationDetails.[].authenticationStepResultDetail com a chave do rótulo "authenticationStepResultDetail".
authenticationDetails.[].succeeded security_result.action Se o valor for "true", será ALLOW. Caso contrário, será BLOCK.
authenticationRequirement additional.fields.value.string_value Mapeado diretamente de authenticationRequirement com a chave do rótulo como "AuthenticationRequirement".
authenticationRequirementPolicies.[].detail security_result.detection_fields.value Mapeado diretamente de authenticationRequirementPolicies.[].detail com a chave do rótulo como "detail".
authenticationRequirementPolicies.[].requirementProvider security_result.detection_fields.value Mapeado diretamente de authenticationRequirementPolicies.[].requirementProvider com a chave do rótulo como "requirementProvider".
callerIpAddress principal.ip, principal.asset.ip Mapeado diretamente de callerIpAddress.
category metadata.description Mapeado diretamente de category.
clientAppUsed principal.application Mapeado diretamente de clientAppUsed.
conditionalAccessStatus additional.fields.value.string_value Mapeado diretamente de conditionalAccessStatus com a chave do rótulo como "conditionalAccessStatus".
correlationId network.session_id, security_result.detection_fields.value Mapeado diretamente de correlationId. Também usado como security_result.detection_fields.value com a chave do rótulo "CorrelationId".
createdDateTime when O campo when é derivado do campo createdDateTime. A data e a hora são extraídas do campo createdDateTime usando grok e combinadas para formar o campo when.
deviceDetail.browser network.http.user_agent Mapeado diretamente de deviceDetail.browser.
deviceDetail.deviceId principal.asset.asset_id, principal.asset_id Mapeado diretamente de deviceDetail.deviceId e com o prefixo "ID do dispositivo:".
deviceDetail.displayName principal.asset.hostname Mapeado diretamente de deviceDetail.displayName.
deviceDetail.isCompliant principal.asset.attribute.labels.value Mapeado diretamente de deviceDetail.isCompliant com a chave do rótulo como "isCompliant".
deviceDetail.isManaged principal.asset.attribute.labels.value Mapeado diretamente de deviceDetail.isManaged com a chave do rótulo como "isManaged".
deviceDetail.operatingSystem principal.platform_version Mapeado diretamente de deviceDetail.operatingSystem.
deviceDetail.trustType principal.asset.attribute.labels.value Mapeado diretamente de deviceDetail.trustType com a chave do rótulo como "trustType".
durationMs additional.fields.value.string_value Mapeado diretamente de durationMs com a chave do rótulo como "durationMs".
event.id - Não mapeado de acordo com as instruções (ponto 3).
id metadata.product_log_id Mapeado diretamente de id.
identity target.user.user_display_name Mapeado diretamente de identity se for diferente de userId e não for um endereço de e-mail.
initiatedBy.user.displayName principal.user.user_display_name Mapeado diretamente de initiatedBy.user.displayName.
initiatedBy.user.id principal.user.userid, principal.user.windows_sid Mapeado diretamente de initiatedBy.user.id.
initiatedBy.user.ipAddress principal.ip, principal.asset.ip Mapeado diretamente de initiatedBy.user.ipAddress.
initiatedBy.user.userPrincipalName principal.user.email_addresses, principal.user.userid Mapeado diretamente de initiatedBy.user.userPrincipalName. Se for um endereço de e-mail, ele será mapeado para email_addresses. Caso contrário, será mapeado para userid.
Level security_result.severity_details, level Mapeado diretamente de Level.
level security_result.severity_details, security_result.severity Mapeado diretamente de level. Também mapeado para security_result.severity após a conversão para maiúsculas. Tratamento especial para os valores "Information", "Informational", "0", "4", "Warning", "1", "3", "Error", "2" e "Critical".
location.city principal.location.city Mapeado diretamente de location.city.
location.countryOrRegion principal.location.country_or_region Mapeado diretamente de location.countryOrRegion.
location.geoCoordinates.altitude additional.fields.value.string_value Mapeado diretamente de location.geoCoordinates.altitude com a chave do rótulo "location_geoCoordinates_altitude".
location.geoCoordinates.latitude principal.location.region_latitude, principal.location.region_coordinates.latitude Mapeado diretamente de location.geoCoordinates.latitude.
location.geoCoordinates.longitude principal.location.region_longitude, principal.location.region_coordinates.longitude Mapeado diretamente de location.geoCoordinates.longitude.
location.state principal.location.state Mapeado diretamente de location.state.
location principal.location.name Mapeado diretamente de location.
log_type metadata.log_type Mapeado diretamente de log_type.
networkLocationDetails.[].networkNames additional.fields.value.string_value Valores concatenados de networkLocationDetails.[].networkNames com a chave do rótulo como "networkName {index}".
networkLocationDetails.[].networkType security_result.detection_fields.value, additional.fields.value.string_value Mapeado diretamente de networkLocationDetails.[].networkType com a chave do rótulo como "networkType". Também usado como additional.fields.value.string_value com a chave do rótulo "networkType {index}".
operationName event_type Se operationName for "Atividade de login", então USER_LOGIN. Se operationName for "Adicionar membro ao grupo", então USER_CHANGE_PERMISSIONS.
operationType security_result.action_details Mapeado diretamente de operationType.
properties.activity security_result.summary Mapeado diretamente de properties.activity.
properties.activityDateTime when Analisado do campo properties.activityDateTime. Se o campo não estiver no formato esperado "aaaa-MM-ddTHH:mm:ss.SSSZ" ou "ISO8601", o analisador tentará outros formatos, como "MM/dd/aaaa HH:mm:ss A" ou "MM/d/aaaa HH:mm:ss A".
properties.activityDisplayName security_result.summary Mapeado diretamente de properties.activityDisplayName.
properties.additionalInfo network.http.user_agent, target.url Analisado como JSON e, se a chave for userAgent, mapeie o valor para network.http.user_agent e network.http.parsed_user_agent. Se a chave for "alertUrl", mapeie o valor para target.url.
properties.appliedConditionalAccessPolicies.[].displayName security_result.[].rule_name Mapeado diretamente de properties.appliedConditionalAccessPolicies.[].displayName.
properties.appliedConditionalAccessPolicies.[].enforcedGrantControls security_result.[].rule_labels.value Mapeado diretamente de properties.appliedConditionalAccessPolicies.[].enforcedGrantControls com a chave do rótulo como "applied_conditional_access_policies_enforced_grant_controls".
properties.appliedConditionalAccessPolicies.[].enforcedSessionControls security_result.[].rule_labels.value Mapeado diretamente de properties.appliedConditionalAccessPolicies.[].enforcedSessionControls com a chave do rótulo como "applied_conditional_access_policies_enforced_session_controls".
properties.appliedConditionalAccessPolicies.[].id security_result.[].rule_id Mapeado diretamente de properties.appliedConditionalAccessPolicies.[].id.
properties.appliedConditionalAccessPolicies.[].result security_result.[].detection_fields.value Mapeado diretamente de properties.appliedConditionalAccessPolicies.[].result com a chave do rótulo como "Resultado".
properties.appId appId Mapeado diretamente de properties.appId.
properties.appDisplayName target.application Mapeado diretamente de properties.appDisplayName.
properties.authenticationDetails.[].authenticationMethod security_result.detection_fields.value Mapeado diretamente de properties.authenticationDetails.[].authenticationMethod com a chave do rótulo como "authenticationMethod".
properties.authenticationDetails.[].authenticationMethodDetail security_result.detection_fields.value Mapeado diretamente de properties.authenticationDetails.[].authenticationMethodDetail com a chave do rótulo como "authenticationMethodDetail".
properties.authenticationDetails.[].authenticationStepDateTime security_result.detection_fields.value Mapeado diretamente de properties.authenticationDetails.[].authenticationStepDateTime com a chave do rótulo como "authenticationStepDateTime".
properties.authenticationDetails.[].authenticationStepRequirement security_result.detection_fields.value Mapeado diretamente de properties.authenticationDetails.[].authenticationStepRequirement com a chave do rótulo como "authenticationStepRequirement".
properties.authenticationDetails.[].authenticationStepResultDetail security_result.detection_fields.value Mapeado diretamente de properties.authenticationDetails.[].authenticationStepResultDetail com a chave do rótulo "authenticationStepResultDetail".
properties.authenticationRequirement additional.fields.value.string_value Mapeado diretamente de properties.authenticationRequirement com a chave do rótulo como "AuthenticationRequirement".
properties.authenticationRequirementPolicies.[].detail security_result.detection_fields.value Mapeado diretamente de properties.authenticationRequirementPolicies.[].detail com a chave do rótulo como "detail".
properties.authenticationRequirementPolicies.[].requirementProvider security_result.detection_fields.value Mapeado diretamente de properties.authenticationRequirementPolicies.[].requirementProvider com a chave do rótulo como "requirementProvider".
properties.clientAppUsed principal.application Mapeado diretamente de properties.clientAppUsed.
properties.conditionalAccessStatus additional.fields.value.string_value Mapeado diretamente de properties.conditionalAccessStatus com a chave do rótulo como "conditionalAccessStatus".
properties.crossTenantAccessType additional.fields.value.string_value Mapeado diretamente de properties.crossTenantAccessType com a chave de rótulo "crossTenantAccessType".
properties.detectedDateTime additional.fields.value.string_value Mapeado diretamente de properties.detectedDateTime com a chave do rótulo como "detectedDateTime".
properties.detectionTimingType additional.fields.value.string_value Mapeado diretamente de properties.detectionTimingType com a chave do rótulo como "detectionTimingType".
properties.homeTenantId additional.fields.value.string_value Mapeado diretamente de properties.homeTenantId com a chave do rótulo como "homeTenantId".
properties.id metadata.product_log_id Mapeado diretamente de properties.id.
properties.initiatedBy.user.displayName principal.user.user_display_name Mapeado diretamente de properties.initiatedBy.user.displayName.
properties.initiatedBy.user.id principal.user.windows_sid Mapeado diretamente de properties.initiatedBy.user.id.
properties.initiatedBy.user.ipAddress principal.ip, principal.asset.ip Mapeado diretamente de properties.initiatedBy.user.ipAddress.
properties.initiatedBy.user.userPrincipalName principal.user.email_addresses, principal.user.userid Mapeado diretamente de properties.initiatedBy.user.userPrincipalName. Se for um endereço de e-mail, ele será mapeado para email_addresses. Caso contrário, será mapeado para userid.
properties.ipAddress principal.ip, principal.asset.ip Mapeado diretamente de properties.ipAddress.
properties.isGuest additional.fields.value.string_value Mapeado diretamente de properties.isGuest com a chave do rótulo como "isGuest".
properties.isDeleted additional.fields.value.string_value Mapeado diretamente de properties.isDeleted com a chave do rótulo como "isDeleted".
properties.isProcessing additional.fields.value.string_value Mapeado diretamente de properties.isProcessing com a chave do rótulo como "isProcessing".
properties.lastUpdatedDateTime additional.fields.value.string_value Mapeado diretamente de properties.lastUpdatedDateTime com a chave do rótulo "lastUpdatedDateTime".
properties.location.city principal.location.city Mapeado diretamente de properties.location.city.
properties.location.countryOrRegion principal.location.country_or_region Mapeado diretamente de properties.location.countryOrRegion.
properties.location.geoCoordinates.latitude principal.location.region_latitude, principal.location.region_coordinates.latitude Mapeado diretamente de properties.location.geoCoordinates.latitude.
properties.location.geoCoordinates.longitude principal.location.region_longitude, principal.location.region_coordinates.longitude Mapeado diretamente de properties.location.geoCoordinates.longitude.
properties.location.state principal.location.state Mapeado diretamente de properties.location.state.
properties.networkLocationDetails.[].networkNames additional.fields.value.string_value Valores concatenados de properties.networkLocationDetails.[].networkNames com a chave do rótulo como "properties networkName {index}".
properties.networkLocationDetails.[].networkType additional.fields.value.string_value Mapeado diretamente de properties.networkLocationDetails.[].networkType com a chave do rótulo como "properties networkType {index}".
properties.riskEventType additional.fields.value.string_value Mapeado diretamente de properties.riskEventType com a chave do rótulo como "riskEventType".
properties.riskLastUpdatedDateTime additional.fields.value.string_value Mapeado diretamente de properties.riskLastUpdatedDateTime com a chave do rótulo "riskLastUpdatedDateTime".
properties.riskLevel additional.fields.value.string_value Mapeado diretamente de properties.riskLevel com a chave do rótulo como "riskLevel".
properties.riskLevelDuringSignIn additional.fields.value.string_value Mapeado diretamente de properties.riskLevelDuringSignIn com a chave do rótulo como "riskLevelDuringSignIn".
properties.riskState additional.fields.value.string_value Mapeado diretamente de properties.riskState com a chave do rótulo como "riskState".
properties.riskDetail additional.fields.value.string_value Mapeado diretamente de properties.riskDetail com a chave do rótulo como "riskDetail".
properties.riskType additional.fields.value.string_value Mapeado diretamente de properties.riskType com a chave do rótulo como "riskType".
properties.source additional.fields.value.string_value Mapeado diretamente de properties.source com a chave do rótulo como "source".
properties.targetResources.0.id target.user.product_object_id Mapeado diretamente de properties.targetResources.0.id.
properties.targetResources.modifiedProperties.0.newValue target.group.product_object_id Mapeado diretamente de properties.targetResources.modifiedProperties.0.newValue.
properties.tokenIssuerType additional.fields.value.string_value Mapeado diretamente de properties.tokenIssuerType com a chave do rótulo como "tokenIssuerType".
properties.userAgent network.http.user_agent, network.http.parsed_user_agent Mapeado diretamente de properties.userAgent.
properties.userDisplayName target.user.user_display_name Mapeado diretamente de properties.userDisplayName.
properties.userId target.user.product_object_id Mapeado diretamente de properties.userId.
properties.userPrincipalName target.user.userid, target.user.email_addresses Mapeado diretamente de properties.userPrincipalName. Se for um endereço de e-mail, ele será mapeado para email_addresses. Caso contrário, será mapeado para userid.
result security_result.action, security_result.action_details Se result for "success", então ALLOW.
resultDescription security_result.description Mapeado diretamente de resultDescription.
resultSignature additional.fields.value.string_value Mapeado diretamente de resultSignature com a chave do rótulo como "resultSignature".
resultType security_result.rule_id, action, security_result.summary Se resultType for "0", então ALLOW e "Login bem-sucedido". Caso contrário, BLOCK e "Ocorreu uma falha no login".
resourceId target.resource.id, target.resource.product_object_id Mapeado diretamente de resourceId.
resourceDisplayName target.resource.name, appDisplayName Mapeado diretamente de resourceDisplayName.
riskDetail additional.fields.value.string_value Mapeado diretamente de riskDetail com a chave do rótulo como "riskDetail".
riskEventTypes.[]. additional.fields.value.string_value, additional.fields.value.list_value.values.string_value Os valores são adicionados a uma lista com a chave "riskEventTypes" em additional.fields. Além disso, cada valor é adicionado como um campo separado com a chave "riskEventType" em additional.fields.
riskEventTypes_v2.[]. additional.fields.value.list_value.values.string_value Os valores são adicionados a uma lista com a chave "riskEventTypes_v2" em additional.fields.
riskLevelAggregated additional.fields.value.string_value Mapeado diretamente de riskLevelAggregated com a chave do rótulo como "riskLevelAggregated".
riskLevelDuringSignIn additional.fields.value.string_value Mapeado diretamente de riskLevelDuringSignIn com a chave do rótulo como "riskLevelDuringSignIn".
riskState additional.fields.value.string_value Mapeado diretamente de riskState com a chave do rótulo como "riskState".
status.additionalDetails security_result.description Mapeado diretamente de status.additionalDetails.
status.errorCode security_result.rule_id, errorCode Mapeado diretamente de status.errorCode.
target.displayName resourceDisplayName Mapeado diretamente de target.displayName.
target.id resourceId Mapeado diretamente de target.id.
target.modifiedProperties.[].displayName target.resource.attribute.labels.key Mapeado diretamente de target.modifiedProperties.[].displayName.
target.modifiedProperties.[].newValue target.resource.attribute.labels.value, target.resource.product_object_id Mapeado diretamente de target.modifiedProperties.[].newValue.
target.modifiedProperties.[].oldValue target.resource.attribute.labels.value Mapeado diretamente de target.modifiedProperties.[].oldValue.
target.type target.resource.type Mapeado diretamente de target.type.
tenantId metadata.product_deployment_id Mapeado diretamente de tenantId.
time when O campo when é derivado do campo time. A data e a hora são extraídas do campo time usando grok e combinadas para formar o campo when.
userAgent network.http.user_agent, network.http.parsed_user_agent Mapeado diretamente de userAgent.
userDisplayName target.user.user_display_name Mapeado diretamente de userDisplayName.
userId target.user.product_object_id Mapeado diretamente de userId.
userPrincipalName target.user.userid, principal.administrative_domain, target.user.email_addresses Mapeado diretamente de userPrincipalName. Se for um endereço de e-mail, ele será mapeado para email_addresses, e a parte do domínio será extraída e mapeada para principal.administrative_domain. Caso contrário, ele será mapeado para userid.
(Lógica do analisador) event.idm.is_alert, event.idm.is_significant Definido como "true" se o nível for "Critical".
(Lógica do analisador) event.idm.read_only_udm.metadata.event_type Definido como "USER_LOGIN" se has_target_user for "true". Definido como "USER_UNCATEGORIZED" se has_principal_user for "true". Definido como "STATUS_UPDATE" se has_principal for "true". Caso contrário, defina como "GENERIC_EVENT".
(Lógica do analisador) event.idm.read_only_udm.metadata.vendor_name Defina como "Microsoft".
(Lógica do analisador) event.idm.read_only_udm.metadata.product_name Defina como "Azure AD".
(Lógica do analisador) event.idm.read_only_udm.extensions.auth.type Defina como "SSO".
(Lógica do analisador) event.idm.read_only_udm.extensions.auth.mechanism Defina como "INTERACTIVE" se isInteractive for "true". Caso contrário, defina como "MECHANISM_OTHER".
(Lógica do analisador) security_result.action Definido como ALLOW se o resultado for "success".
(Lógica do analisador) security_result.action Definido como ALLOW se "resultType" for 0.
(Lógica do analisador) security_result.action Definido como BLOCK se resultType não for 0 nem "".
(Lógica do analisador) security_result.category Definido como "AUTH_VIOLATION" se resultType não for 0 nem "".
(Lógica do analisador) security_result.description Definido como "Associação ao grupo modificada" se operationName for "Adicionar membro ao grupo" e o resultado for "success".
(Lógica do analisador) security_result.priority Defina como "MEDIUM_PRIORITY" se "properties.riskLevelDuringSignIn" for "medium".
(Lógica do analisador) security_result.summary Definido como "Login bem-sucedido" se resultType for 0.
(Lógica do analisador) security_result.summary Definido como "Ocorreu uma falha no login" se resultType não for 0 nem "".
(Lógica do analisador) security_result.summary Definido como "properties.activityDisplayName" se existir.
(Lógica do analisador) security_result.severity Defina como "INFORMATIONAL" se o nível for "Information", "Informational", "0" ou "4". Defina como "MEDIUM" se o nível for "Warning", "1" ou "3". Definido como ERROR se o nível for "Error" ou "2". Definido como CRITICAL se o nível for "Critical".
(Lógica do analisador) security_result.severity Definido como ERROR se resultType não for 0 nem "".

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