Coletar registros de login do ID do Microsoft Entra (antigo Azure Active Directory)

Versão do analisador:26.0

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 aos seguintes pré-requisitos:

  • 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ária 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, em qualquer API.
    • Administrador de papéis privilegiado: 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 Microsoft Entra ID pelo Hub de Eventos do Azure usando configurações de diagnóstico. O Google SecOps ingere os registros diretamente do Hub de Eventos usando o tipo de feed do Hub de Eventos do Azure.

Criar namespace do Hub de Eventos

Um namespace dos Hubs de Eventos é um contêiner de gerenciamento para um ou mais 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 Selecionar ou criar
    Nome do namespace Insira um nome exclusivo (por exemplo, secops-entraid-signin).
    Local Selecione a região mais próxima do seu locatário do Microsoft Entra
    Nível de preços Padrão (recomendado para produção)
    Unidades de capacidade de processamento Comece com 1 e ative o recurso de expansão automática (recomendado)
  4. Clique em Revisar + criar.

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

  6. Aguarde a conclusão da implantação (1 a 2 minutos).

Criar Hub de Eventos

  1. Depois que o namespace for implantado, acesse o namespace do Hub de Eventos.
  2. Na navegação à esquerda, selecione Hubs de eventos em Entidades.
  3. Clique em + Hub de eventos.
  4. Informe os seguintes detalhes de configuração:

    Configuração Valor
    Nome Insira um nome exclusivo (por exemplo, entraid-signin-logs).
    Contagem de partições 40 (recomendado para escalonamento ideal do Google SecOps)
    Retenção de mensagens 7 dias (mínimo recomendado)
    Capturar Desativado (não é necessário para o Google SecOps)
  5. Clique em Criar.

Receber a string de conexão do Hub de Eventos

O Google SecOps exige uma string de conexão para autenticar o Hub de eventos.

  1. Acesse o namespace do Hub de Eventos.
  2. Na navegação à esquerda, selecione Políticas de acesso compartilhado em Configurações.
  3. Clique na política padrão RootManageSharedAccessKey.
  4. Copie a String de conexão – chave primária.
  5. Salve essa string de conexão com segurança.
  • Exemplo:

    Original: Endpoint=sb://secops-entraid-signin.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==;EntityPath=entraid-signin-logs
    
    Remove EntityPath: Endpoint=sb://secops-entraid-signin.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==
    

Opção B: string de conexão no nível do Hub de Eventos

  1. Acesse o Hub de Eventos (não o namespace).
  2. Na navegação à esquerda, selecione Políticas de acesso compartilhado em Configurações.
  3. Clique em + Adicionar para criar uma política.
  4. Informe os seguintes detalhes de configuração:
    • Nome da política: insira um nome descritivo (por exemplo, chronicle-read).
    • Permissões: selecione Ouvir somente (acesso somente leitura).
  5. Clique em Criar.
  6. Clique na política recém-criada.
  7. Copie a String de conexão – chave primária.
  8. Salve essa string de conexão com segurança.

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

  1. Faça login no centro de administração do Microsoft Entra como pelo menos um administrador de segurança.
  2. Navegue até Entra ID > 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 (recomendado).
      • ServicePrincipalSignInLogs: logins do principal de serviço (opcional).
      • ManagedIdentitySignInLogs: logins de identidade gerenciada (opcional).
      • ADFSSignInLogs: registros de login do AD FS (opcional, se o AD FS estiver em uso).
      • RiskyUsers: usuários sinalizados como de risco pelo Microsoft Entra ID Protection (opcional).
      • UserRiskEvents: detalhes de eventos de login arriscados (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.

(Opcional) Configurar o Azure Blob Storage para criação de pontos de verificação

O Google SecOps pode usar o Armazenamento de Blobs do Azure para armazenar pontos de verificação do Hub de Eventos, que rastreiam quais eventos foram processados. Isso evita a ingestão duplicada se o feed for interrompido temporariamente.

Criar uma conta de armazenamento para checkpointing

  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 Use o mesmo grupo de recursos que o Hub de Eventos
    Nome da conta de armazenamento Insira um nome exclusivo (por exemplo, secopsaadsignin).
    Região A mesma região do Hub de Eventos
    Desempenho Padrão
    Redundância LRS (armazenamento com redundância local)
  4. Clique em Revisar + criar.

  5. Clique em Criar.

Criar contêiner de blob

  1. Acesse a conta de armazenamento que você criou.
  2. Na navegação à esquerda, selecione Contêineres em Armazenamento de dados.
  3. Clique em + Contêiner.
  4. Informe os seguintes detalhes de configuração:
    • Nome: insira checkpoints.
    • Nível de acesso público: particular (sem acesso anônimo)
  5. Clique em Criar.

Receber credenciais da conta de armazenamento

  1. Na conta de armazenamento, selecione Chaves de acesso em Segurança + rede.
  2. Clique em Mostrar chaves.
  3. Copie e salve:
    • Nome da conta de armazenamento: o nome da sua conta de armazenamento.
    • Chave 1: o valor da chave de acesso.

(Opcional) Criar um grupo de consumidores dedicado

Por padrão, o Hub de Eventos fornece um grupo de consumidores chamado $Default. Para ambientes de produção, recomendamos criar um grupo de consumidores dedicado para o Google SecOps.

  1. Acesse o Hub de Eventos (não o namespace).
  2. Na navegação à esquerda, selecione Grupos de consumidores em Entidades.
  3. Clique em + Grupo de consumidores.
  4. Informe os seguintes detalhes de configuração:
    • Nome: insira um nome descritivo, por exemplo, chronicle.
  5. Clique em Criar.

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

  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, Microsoft Entra ID Sign-In Logs - Event Hub).
  5. Selecione Hub de eventos do Microsoft Azure como o Tipo de origem.
  6. Selecione Microsoft Azure AD como o Tipo de registro.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • String de conexão do hub de eventos: insira a string de conexão do hub de eventos que você capturou anteriormente.

    Se você estiver usando uma string de conexão no nível do namespace:

    • Confira se você removeu o parâmetro EntityPath.
    • Você também precisa informar o Nome do hub de eventos no próximo campo.

    Se estiver usando uma string de conexão no nível do hub de eventos:

    • Use a string de conexão como está (inclui EntityPath).
    • O campo Nome do hub de eventos pode ser deixado em branco.

      • Nome do hub de eventos: insira o nome do hub de eventos (por exemplo, entraid-signin-logs).

      Obrigatório se você estiver usando uma string de conexão no nível do namespace. Opcional se você estiver usando uma string de conexão no nível do hub de eventos.

    • Grupo de consumidores (opcional): insira o nome do grupo.

    • Deixe em branco para usar o grupo de consumidores padrão $Default.

    • Se você criou um grupo de consumidores dedicado, insira o nome dele (por exemplo, chronicle).

    • Nome do contêiner do Armazenamento de Blobs (opcional): para fazer checkpointing, insira o nome do contêiner (por exemplo, checkpoints).

    Se você estiver fornecendo armazenamento de blobs para checkpointing:

    • Nome da conta de armazenamento do Azure: insira o nome da conta de armazenamento da configuração de checkpoint.
    • Chave da conta de armazenamento do Azure: insira a chave de acesso da configuração de checkpoint.

    • Namespace do recurso: o namespace do recurso.

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

  9. Clique em Próxima.

  10. Revise a nova configuração do feed na tela Finalizar e clique em Enviar.

Método 2: API de terceiros

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

Configurar 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 do Microsoft Azure ou nas políticas de acesso condicional.

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 Entra ID

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: necessá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: exigido pelo 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 se 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 um feed no Google SecOps para ingerir registros de login do Microsoft Entra ID

Configurar o feed

  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, Microsoft Entra ID Sign-In Logs).
  5. Selecione API de terceiros como o Tipo de fonte.
  6. Selecione Microsoft Azure AD como o Tipo de registro.
  7. Clique em Próxima.

Configurar parâmetros de feed

Especifique valores para os seguintes parâmetros de entrada:

  • 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.
    • Tipo de origem: API de terceiros (mecanismo para coletar os registros no Google SecOps).
    • 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.
  1. Clique em Próxima.
  2. Revise a nova configuração do feed na tela Finalizar e clique em Enviar.

Endpoints regionais

Para implantações do Microsoft Entra ID 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 de 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 como "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", ALLOW, caso contrário, 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 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 de rótulo "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 "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 "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 "".

Registro de alterações

Ver o registro de alterações deste analisador

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