Recopila registros de acceso de Microsoft Entra ID (anteriormente Azure Active Directory)

Versión del analizador: 26.0

Compatible con:

En este documento, se explica cómo recopilar registros de acceso de Microsoft Entra ID (antes conocido como Azure Active Directory) configurando un feed de Google Security Operations. Puedes configurar la transferencia con dos métodos: Azure Event Hub (recomendado) o la API de terceros.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Es la instancia de Google SecOps.
  • Acceso con privilegios al portal de Microsoft Azure
  • Rol de administrador de seguridad o administrador global en Microsoft Entra ID (obligatorio para la configuración de diagnóstico)
  • Para el método de la API de terceros, uno de los siguientes roles para otorgar consentimiento del administrador:
    • Administrador global: Puede otorgar consentimiento para cualquier permiso y para cualquier API.
    • Administrador de roles con privilegios: Puede otorgar consentimiento para cualquier permiso y para cualquier API.
    • Administrador de aplicaciones en la nube: Puede otorgar consentimiento para cualquier permiso de cualquier API, excepto los roles de la app de Microsoft Graph (permisos de la aplicación).

Este método transmite los registros de acceso de Microsoft Entra ID a través de Azure Event Hub con la configuración de diagnóstico. Google SecOps ingiere los registros directamente desde el Centro de eventos con el tipo de feed de Centro de eventos de Azure.

Crea un espacio de nombres de Event Hub

Un espacio de nombres de Event Hubs es un contenedor de administración para uno o más Event Hubs.

  1. En el portal de Azure, busca Event Hubs.
  2. Haz clic en + Crear.
  3. Proporciona los siguientes detalles de configuración:

    Parámetro de configuración Valor
    Suscripción Selecciona tu suscripción a Azure
    Grupo de recursos Selecciona una existente o crea una nueva
    Nombre del espacio de nombres Ingresa un nombre único (por ejemplo, secops-entraid-signin).
    Ubicación Selecciona la región más cercana a tu inquilino de Microsoft Entra
    Nivel de precios Estándar (recomendado para producción)
    Unidades de capacidad de procesamiento Comienza con 1, habilita la opción Inflado automático (recomendado)
  4. Haz clic en Revisar + crear.

  5. Revisa el resumen y haz clic en Crear.

  6. Espera a que se complete la implementación (de 1 a 2 minutos).

Crea un centro de eventos

  1. Después de implementar el espacio de nombres, ve al espacio de nombres de Event Hub.
  2. En el panel de navegación izquierdo, selecciona Event Hubs en Entidades.
  3. Haz clic en + Event Hub.
  4. Proporciona los siguientes detalles de configuración:

    Parámetro de configuración Valor
    Nombre Ingresa un nombre único (por ejemplo, entraid-signin-logs).
    Recuento de particiones 40 (recomendado para un escalamiento óptimo de Google SecOps)
    Retención de mensajes 7 días (mínimo recomendado)
    Capturar Inhabilitado (no es necesario para Google SecOps)
  5. Haz clic en Crear.

Obtén la cadena de conexión de Event Hub

Google SecOps requiere una cadena de conexión para autenticarse en Event Hub.

  1. Ve al espacio de nombres de Event Hub.
  2. En el panel de navegación izquierdo, selecciona Políticas de acceso compartido en Configuración.
  3. Haz clic en la política predeterminada RootManageSharedAccessKey.
  4. Copia la cadena de conexión (clave principal).
  5. Guarda esta cadena de conexión de forma segura.
  • Ejemplo:

    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==
    

Opción B: Cadena de conexión a nivel del centro de eventos

  1. Ve a Event Hub (no al espacio de nombres).
  2. En el panel de navegación izquierdo, selecciona Políticas de acceso compartido en Configuración.
  3. Haz clic en + Agregar para crear una política nueva.
  4. Proporciona los siguientes detalles de configuración:
    • Nombre de la política: Ingresa un nombre descriptivo (por ejemplo, chronicle-read).
    • Permisos: Selecciona Solo Escuchar (acceso de solo lectura).
  5. Haz clic en Crear.
  6. Haz clic en la política recién creada.
  7. Copia la cadena de conexión (clave principal).
  8. Guarda esta cadena de conexión de forma segura.

Configura los parámetros de configuración de diagnóstico de Microsoft Entra ID

  1. Accede al centro de administración de Microsoft Entra como, al menos, administrador de seguridad.
  2. Ve a Entra ID > Supervisión y estado > Configuración de diagnóstico.
  3. Haz clic en + Agregar parámetro de configuración de diagnóstico.
  4. Proporciona los siguientes detalles de configuración:
    • Nombre del parámetro de configuración de diagnóstico: Ingresa un nombre descriptivo (por ejemplo, signin-logs-to-eventhub).
    • En la sección Registros, selecciona las categorías de registros de acceso que deseas exportar:
      • SignInLogs: Son los accesos interactivos de los usuarios.
      • NonInteractiveUserSignInLogs: Registros de acceso de usuarios no interactivos (recomendado).
      • ServicePrincipalSignInLogs: Registros de acceso de la entidad de servicio (opcional).
      • ManagedIdentitySignInLogs: Registros de acceso de identidades administradas (opcional)
      • ADFSSignInLogs: Registros de inicio de sesión de AD FS (opcional, si se usa AD FS).
      • RiskyUsers: Usuarios marcados como riesgosos por Microsoft Entra ID Protection (opcional).
      • UserRiskEvents: Detalles del evento de acceso riesgoso (opcional).
    • En la sección Detalles del destino, selecciona Transmitir a un centro de eventos.
    • Suscripción: Selecciona la suscripción que contiene tu espacio de nombres de Event Hub.
    • Espacio de nombres de Event Hub: Selecciona el espacio de nombres que creaste (por ejemplo, secops-entraid-signin).
    • Nombre del centro de eventos: Selecciona el centro de eventos que creaste (por ejemplo, entraid-signin-logs).
    • Nombre de la política del centro de eventos: Selecciona RootManageSharedAccessKey.
  5. Haz clic en Guardar.

(Opcional) Configura Azure Blob Storage para la creación de puntos de control

Google SecOps puede usar Azure Blob Storage para almacenar puntos de control de Event Hub, que registran qué eventos se procesaron. Esto evita la duplicación de la transferencia si el feed se interrumpe temporalmente.

Crea una cuenta de almacenamiento para los puntos de control

  1. En el portal de Azure, busca Cuentas de almacenamiento.
  2. Haz clic en + Crear.
  3. Proporciona los siguientes detalles de configuración:

    Parámetro de configuración Valor
    Suscripción Selecciona tu suscripción a Azure
    Grupo de recursos Usa el mismo grupo de recursos que Event Hub
    Nombre de la cuenta de almacenamiento Ingresa un nombre único (por ejemplo, secopsaadsignin).
    Región La misma región que Event Hub
    Rendimiento Estándar
    Redundancia LRS (almacenamiento con redundancia local)
  4. Haz clic en Revisar + crear.

  5. Haz clic en Crear.

Crea un contenedor de BLOB

  1. Ve a la cuenta de almacenamiento que creaste.
  2. En el panel de navegación de la izquierda, selecciona Contenedores en Almacenamiento de datos.
  3. Haz clic en + Contenedor.
  4. Proporciona los siguientes detalles de configuración:
    • Nombre: Ingresa checkpoints.
    • Nivel de acceso público: Privado (sin acceso anónimo)
  5. Haz clic en Crear.

Obtén credenciales de la cuenta de almacenamiento

  1. En la cuenta de almacenamiento, selecciona Claves de acceso en Seguridad y redes.
  2. Haz clic en Mostrar claves.
  3. Copia y guarda lo siguiente:
    • Nombre de la cuenta de almacenamiento: Es el nombre de tu cuenta de almacenamiento.
    • Clave 1: Es el valor de la clave de acceso.

(Opcional) Crea un grupo de consumidores exclusivo

De forma predeterminada, Event Hub proporciona un grupo de consumidores llamado $Default. Para los entornos de producción, se recomienda crear un grupo de consumidores exclusivo para Google SecOps.

  1. Ve a Event Hub (no al espacio de nombres).
  2. En la navegación de la izquierda, selecciona Grupos de consumidores en Entidades.
  3. Haz clic en + Grupo de consumidores.
  4. Proporciona los siguientes detalles de configuración:
    • Nombre: Ingresa un nombre descriptivo (por ejemplo, chronicle).
  5. Haz clic en Crear.

Configura un feed en Google SecOps para transferir registros de acceso de Microsoft Entra ID

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. En la siguiente página, haz clic en Configurar un solo feed.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Microsoft Entra ID Sign-In Logs - Event Hub).
  5. Selecciona Microsoft Azure Event Hub como el Tipo de fuente.
  6. Selecciona Microsoft Azure AD como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. Especifica valores para los siguientes parámetros de entrada:

    • Cadena de conexión del centro de eventos: Ingresa la cadena de conexión del centro de eventos que capturaste anteriormente.

    Si usas una cadena de conexión a nivel del espacio de nombres, haz lo siguiente:

    • Asegúrate de haber quitado el parámetro EntityPath.
    • También debes proporcionar el Nombre del centro de eventos en el siguiente campo.

    Si usas la cadena de conexión a nivel del centro de eventos, haz lo siguiente:

    • Usa la cadena de conexión tal como está (incluye EntityPath).
    • El campo Nombre del centro de eventos se puede dejar en blanco.

      • Nombre del centro de eventos: Ingresa el nombre del centro de eventos (por ejemplo, entraid-signin-logs).

      Obligatorio si se usa una cadena de conexión a nivel del espacio de nombres. Opcional si se usa una cadena de conexión a nivel del centro de eventos.

    • Grupo de consumidores (opcional): Ingresa el nombre del grupo de consumidores.

    • Déjalo en blanco para usar el grupo de consumidores $Default predeterminado.

    • Si creaste un grupo de consumidores exclusivo, ingresa su nombre (por ejemplo, chronicle).

    • Nombre del contenedor de Blob Storage (opcional): Para crear puntos de control, ingresa el nombre del contenedor (por ejemplo, checkpoints).

    Si proporcionas almacenamiento de blobs para la creación de puntos de control, haz lo siguiente:

    • Nombre de la cuenta de almacenamiento de Azure: Ingresa el nombre de la cuenta de almacenamiento de la configuración de puntos de control.
    • Clave de la cuenta de almacenamiento de Azure: Ingresa la clave de acceso de la configuración de puntos de control.

    • Espacio de nombres del recurso: Es el espacio de nombres del recurso.

    • Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.

  9. Haz clic en Siguiente.

  10. Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Método 2: API de terceros

Este método usa la API de Microsoft Graph para recuperar los registros de inicio de sesión de Microsoft Entra ID directamente desde tu inquilino de Microsoft.

Configura la lista de IPs permitidas

Antes de crear el feed, debes incluir en la lista de entidades permitidas los rangos de IP de Google SecOps en la configuración de red de Microsoft Azure o en las políticas de acceso condicional.

Obtén los rangos de IP de Google SecOps

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. Toma nota de los rangos de IP que se muestran en la interfaz de creación de feeds.
  4. Como alternativa, puedes recuperar rangos de IP de manera programática con la API de Feed Management.

Configura el acceso condicional para las identidades de cargas de trabajo (si es necesario)

Si tu organización usa políticas de Acceso condicional que restringen el acceso por ubicación, haz lo siguiente:

  1. En el centro de administración de Microsoft Entra, ve a Protección > Acceso condicional > Ubicaciones con nombre.
  2. Haz clic en + Nueva ubicación.
  3. Proporciona los siguientes detalles de configuración:
    • Nombre: Ingresa Google SecOps IP Ranges.
    • Marcar como ubicación de confianza: Es opcional y depende de tu política de seguridad.
    • Rangos de IP: Agrega cada rango de IP de Google SecOps en notación CIDR.
  4. Haz clic en Crear.
  5. Ve a Acceso condicional > Políticas.
  6. Para cualquier política que se aplique a las identidades de carga de trabajo, configura una exclusión para la ubicación con nombre Google SecOps IP Ranges o la entidad de servicio específica.

Configura el acceso a la API de Microsoft Entra ID

Crea el registro de la app

  1. Accede al centro de administración de Microsoft Entra o al portal de Azure.
  2. Ve a Identidad > Aplicaciones > Registros de apps.
  3. Haz clic en New registration.
  4. Proporciona los siguientes detalles de configuración:

    • Nombre: Ingresa un nombre descriptivo (por ejemplo, Google SecOps Sign-In Logs Integration).
    • Tipos de cuentas compatibles: Selecciona Cuentas solo en este directorio de la organización (inquilino único).
    • URI de redireccionamiento: Déjalo en blanco (no es necesario para la autenticación de la entidad de servicio).
  5. Haz clic en Registrar.

  6. Después del registro, copia y guarda los siguientes valores:

    • ID de la aplicación (cliente)
    • ID de directorio (usuario)

Configura los permisos de API

La integración requiere los siguientes permisos de la aplicación de Microsoft Graph:

  1. En el registro de la app, ve a Permisos de API.
  2. Haz clic en Agregar un permiso.
  3. Selecciona Microsoft Graph > Permisos de aplicación.
  4. Selecciona los siguientes permisos:
    • AuditLog.Read.All: Se requiere para leer los registros de acceso.
    • Directory.Read.All: La API de Microsoft Graph lo requiere para acceder a los registros de acceso (problema conocido).
    • SecurityEvents.Read.All: Google Security Operations lo requiere.
  5. Haz clic en Agregar permisos.
  6. Haz clic en Grant admin consent for [Your Organization].
  7. Verifica que la columna Estado muestre Se otorgó para [Tu organización] para los tres permisos.
Permiso Tipo Descripción
AuditLog.Read.All Aplicación Leer todos los datos de acceso y de registro de auditoría
Directory.Read.All Aplicación Leer datos de directorios (obligatorio para el acceso a la API)
SecurityEvents.Read.All Aplicación Leer eventos de seguridad

Crea un secreto del cliente

  1. Ve a Certificates & secrets.
  2. Haz clic en New client secret.
  3. Proporciona los siguientes detalles de configuración:

    • Descripción: Ingresa un nombre descriptivo (por ejemplo, Google SecOps Feed).
    • Vence: Selecciona un período de vencimiento.
  4. Haz clic en Agregar.

  5. Importante: Copia el valor del secreto del cliente de inmediato. Este valor se muestra solo una vez y no se puede recuperar más adelante.

Verifica el acceso a la API antes de crear el feed

Antes de crear el feed de Google SecOps, verifica que la entidad de servicio pueda autenticarse y acceder a la API de Microsoft Graph correctamente.

  • Prueba la autenticación con 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
    }
    
    • Resultado esperado:

      ✓ Successfully obtained access token
      ✓ Successfully accessed sign-ins API
      Sample sign-in log retrieved successfully
      
  • Prueba la autenticación con 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"
    

Configura un feed en Google SecOps para transferir registros de acceso de Microsoft Entra ID

Configura el feed

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. En la siguiente página, haz clic en Configurar un solo feed.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Microsoft Entra ID Sign-In Logs).
  5. Selecciona API de terceros como el Tipo de origen.
  6. Selecciona Microsoft Azure AD como el Tipo de registro.
  7. Haz clic en Siguiente.

Configura los parámetros del feed

Especifica valores para los siguientes parámetros de entrada:

  • ID de cliente de OAuth: Es el ID de la aplicación (cliente) del registro de la app.
  • Secreto del cliente de OAuth: Es el valor del secreto del cliente que copiaste antes.
  • ID de usuario: Es tu ID de usuario de Microsoft del registro de la app (formato UUID, por ejemplo, 0fc279f9-fe30-41be-97d3-abe1d7681418).
  • Ruta de acceso completa de la API: URL del extremo de API de REST de Microsoft Graph:

    graph.microsoft.com/v1.0/auditLogs/signIns
    
  • Extremo de autenticación de la API: Extremo de autenticación de Microsoft Active Directory:

    login.microsoftonline.com
    
  • Opciones avanzadas:

    • Nombre del feed: Es un valor completado previamente que identifica el feed.
    • Tipo de fuente: API de terceros (mecanismo para recopilar los registros en Google SecOps).
    • Espacio de nombres del activo: Es el espacio de nombres del activo con el que se asociará el feed.
    • Etiquetas de transferencia: Se agregarán etiquetas a todos los eventos de este feed.
  1. Haz clic en Siguiente.
  2. Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Extremos regionales

Para las implementaciones de Microsoft Entra ID en nubes soberanas, usa los extremos regionales adecuados:

Entorno de nube Ruta de acceso completa de la API Extremo de autenticación de API
Global graph.microsoft.com/v1.0/auditLogs/signIns login.microsoftonline.com
L4 del Gobierno de EE.UU. graph.microsoft.us/v1.0/auditLogs/signIns login.microsoftonline.us
Gobierno de EE.UU., nivel 5 (DoD) dod-graph.microsoft.us/v1.0/auditLogs/signIns login.microsoftonline.us
China (21Vianet) microsoftgraph.chinacloudapi.cn/v1.0/auditLogs/signIns login.chinacloudapi.cn

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
activityDateTime principal.event_timestamp Se analizó a partir del campo activityDateTime. Si el campo no está en el formato esperado "aaaa-MM-ddTHH:mm:ss.SSSZ" o "ISO8601", el analizador intentará otros formatos, como "MM/dd/aaaa HH:mm:ss A" o "MM/d/aaaa HH:mm:ss A".
activityDisplayName security_result.summary Se asigna directamente desde activityDisplayName.
additionalDetails.0.value network.http.user_agent Se asigna directamente desde additionalDetails.0.value.
additionalDetails.1.key target.resource.attribute.labels.key Se asigna directamente desde additionalDetails.1.key.
additionalDetails.1.value target.resource.attribute.labels.value Se asigna directamente desde additionalDetails.1.value.
additionalInfo.[].Key network.http.user_agent, target.url Si Key es userAgent, asigna Value a network.http.user_agent y network.http.parsed_user_agent. Si Key es alertUrl, asigna Value a target.url.
additionalInfo.[].Value network.http.user_agent, target.url Si Key es userAgent, asigna Value a network.http.user_agent y network.http.parsed_user_agent. Si Key es alertUrl, asigna Value a target.url.
am_category metadata.description Se asigna directamente desde am_category.
am_tenantId metadata.product_deployment_id Se asigna directamente desde am_tenantId.
appId target.resource.attribute.labels.value Se asigna directamente desde appId con la clave de etiqueta como "ID de la app".
appDisplayName target.application Se asigna directamente desde appDisplayName.
appliedConditionalAccessPolicies.[].displayName security_result.[].rule_name, about.[].user.user_display_name Se asigna directamente desde appliedConditionalAccessPolicies.[].displayName.
appliedConditionalAccessPolicies.[].enforcedGrantControls security_result.[].rule_labels.value Se asigna directamente desde appliedConditionalAccessPolicies.[].enforcedGrantControls con la clave de etiqueta "applied_conditional_access_policies_enforced_grant_controls".
appliedConditionalAccessPolicies.[].enforcedSessionControls security_result.[].rule_labels.value Se asigna directamente desde appliedConditionalAccessPolicies.[].enforcedSessionControls con la clave de etiqueta "applied_conditional_access_policies_enforced_session_controls".
appliedConditionalAccessPolicies.[].id security_result.[].rule_id, about.[].user.userid Se asigna directamente desde appliedConditionalAccessPolicies.[].id.
appliedConditionalAccessPolicies.[].result security_result.[].detection_fields.value, about.[].labels.value Se asigna directamente desde appliedConditionalAccessPolicies.[].result con la clave de la etiqueta como "Resultado".
authenticationDetails.[].authenticationMethod security_result.[].detection_fields.value Se asigna directamente desde authenticationDetails.[].authenticationMethod con la clave de etiqueta "authenticationMethod".
authenticationDetails.[].authenticationMethodDetail security_result.[].detection_fields.value Se asigna directamente desde authenticationDetails.[].authenticationMethodDetail con la clave de etiqueta "authenticationMethodDetail".
authenticationDetails.[].authenticationStepDateTime security_result.[].detection_fields.value Se asigna directamente desde authenticationDetails.[].authenticationStepDateTime con la clave de etiqueta como "authenticationStepDateTime".
authenticationDetails.[].authenticationStepRequirement security_result.[].detection_fields.value Se asigna directamente desde authenticationDetails.[].authenticationStepRequirement con la clave de etiqueta como "authenticationStepRequirement".
authenticationDetails.[].authenticationStepResultDetail security_result.[].detection_fields.value Se asigna directamente desde authenticationDetails.[].authenticationStepResultDetail con la clave de etiqueta como "authenticationStepResultDetail".
authenticationDetails.[].succeeded security_result.action Si el valor es "true", se devuelve ALLOW; de lo contrario, se devuelve BLOCK.
authenticationRequirement additional.fields.value.string_value Se asigna directamente desde authenticationRequirement con la clave de etiqueta como "AuthenticationRequirement".
authenticationRequirementPolicies.[].detail security_result.detection_fields.value Se asigna directamente desde authenticationRequirementPolicies.[].detail con la clave de etiqueta como "detail".
authenticationRequirementPolicies.[].requirementProvider security_result.detection_fields.value Se asigna directamente desde authenticationRequirementPolicies.[].requirementProvider con la clave de etiqueta como "requirementProvider".
callerIpAddress principal.ip, principal.asset.ip Se asigna directamente desde callerIpAddress.
category metadata.description Se asigna directamente desde category.
clientAppUsed principal.application Se asigna directamente desde clientAppUsed.
conditionalAccessStatus additional.fields.value.string_value Se asigna directamente desde conditionalAccessStatus con la clave de etiqueta "conditionalAccessStatus".
correlationId network.session_id, security_result.detection_fields.value Se asigna directamente desde correlationId. También se usa como security_result.detection_fields.value con la clave de etiqueta como "CorrelationId".
createdDateTime when El campo when se deriva del campo createdDateTime. La fecha y la hora se extraen del campo createdDateTime con grok y, luego, se combinan para formar el campo when.
deviceDetail.browser network.http.user_agent Se asigna directamente desde deviceDetail.browser.
deviceDetail.deviceId principal.asset.asset_id, principal.asset_id Se asigna directamente desde deviceDetail.deviceId y tiene el prefijo "ID de dispositivo:".
deviceDetail.displayName principal.asset.hostname Se asigna directamente desde deviceDetail.displayName.
deviceDetail.isCompliant principal.asset.attribute.labels.value Se asigna directamente desde deviceDetail.isCompliant con la clave de etiqueta como "isCompliant".
deviceDetail.isManaged principal.asset.attribute.labels.value Se asigna directamente desde deviceDetail.isManaged con la clave de etiqueta "isManaged".
deviceDetail.operatingSystem principal.platform_version Se asigna directamente desde deviceDetail.operatingSystem.
deviceDetail.trustType principal.asset.attribute.labels.value Se asigna directamente desde deviceDetail.trustType con la clave de etiqueta como "trustType".
durationMs additional.fields.value.string_value Se asigna directamente desde durationMs con la clave de etiqueta como "durationMs".
event.id - No se asignó según las instrucciones (punto 3).
id metadata.product_log_id Se asigna directamente desde id.
identity target.user.user_display_name Se asigna directamente desde identity si es diferente de userId y no es una dirección de correo electrónico.
initiatedBy.user.displayName principal.user.user_display_name Se asigna directamente desde initiatedBy.user.displayName.
initiatedBy.user.id principal.user.userid, principal.user.windows_sid Se asigna directamente desde initiatedBy.user.id.
initiatedBy.user.ipAddress principal.ip, principal.asset.ip Se asigna directamente desde initiatedBy.user.ipAddress.
initiatedBy.user.userPrincipalName principal.user.email_addresses, principal.user.userid Se asigna directamente desde initiatedBy.user.userPrincipalName. Si es una dirección de correo electrónico, se asigna a email_addresses; de lo contrario, a userid.
Level security_result.severity_details, level Se asigna directamente desde Level.
level security_result.severity_details, security_result.severity Se asigna directamente desde level. También se asigna a security_result.severity después de convertirse a mayúsculas. Control especial para los valores "Information", "Informational", "0", "4", "Warning", "1", "3", "Error", "2" y "Critical".
location.city principal.location.city Se asigna directamente desde location.city.
location.countryOrRegion principal.location.country_or_region Se asigna directamente desde location.countryOrRegion.
location.geoCoordinates.altitude additional.fields.value.string_value Se asigna directamente desde location.geoCoordinates.altitude con la clave de etiqueta "location_geoCoordinates_altitude".
location.geoCoordinates.latitude principal.location.region_latitude, principal.location.region_coordinates.latitude Se asigna directamente desde location.geoCoordinates.latitude.
location.geoCoordinates.longitude principal.location.region_longitude, principal.location.region_coordinates.longitude Se asigna directamente desde location.geoCoordinates.longitude.
location.state principal.location.state Se asigna directamente desde location.state.
location principal.location.name Se asigna directamente desde location.
log_type metadata.log_type Se asigna directamente desde log_type.
networkLocationDetails.[].networkNames additional.fields.value.string_value Valores concatenados de networkLocationDetails.[].networkNames con la clave de etiqueta como "networkName {index}".
networkLocationDetails.[].networkType security_result.detection_fields.value, additional.fields.value.string_value Se asigna directamente desde networkLocationDetails.[].networkType con la clave de etiqueta "networkType". También se usa como additional.fields.value.string_value con la clave de la etiqueta como "networkType {index}".
operationName event_type Si operationName es "Actividad de acceso", entonces USER_LOGIN. Si operationName es "Agregar miembro al grupo", entonces USER_CHANGE_PERMISSIONS.
operationType security_result.action_details Se asigna directamente desde operationType.
properties.activity security_result.summary Se asigna directamente desde properties.activity.
properties.activityDateTime when Se analizó a partir del campo properties.activityDateTime. Si el campo no está en el formato esperado "aaaa-MM-ddTHH:mm:ss.SSSZ" o "ISO8601", el analizador intentará otros formatos, como "MM/dd/aaaa HH:mm:ss A" o "MM/d/aaaa HH:mm:ss A".
properties.activityDisplayName security_result.summary Se asigna directamente desde properties.activityDisplayName.
properties.additionalInfo network.http.user_agent, target.url Se analiza como JSON y, si la clave es userAgent, se asigna el valor a network.http.user_agent y network.http.parsed_user_agent. Si la clave es alertUrl, asigna el valor del mapa a target.url.
properties.appliedConditionalAccessPolicies.[].displayName security_result.[].rule_name Se asigna directamente desde properties.appliedConditionalAccessPolicies.[].displayName.
properties.appliedConditionalAccessPolicies.[].enforcedGrantControls security_result.[].rule_labels.value Se asigna directamente desde properties.appliedConditionalAccessPolicies.[].enforcedGrantControls con la clave de etiqueta "applied_conditional_access_policies_enforced_grant_controls".
properties.appliedConditionalAccessPolicies.[].enforcedSessionControls security_result.[].rule_labels.value Se asigna directamente desde properties.appliedConditionalAccessPolicies.[].enforcedSessionControls con la clave de etiqueta "applied_conditional_access_policies_enforced_session_controls".
properties.appliedConditionalAccessPolicies.[].id security_result.[].rule_id Se asigna directamente desde properties.appliedConditionalAccessPolicies.[].id.
properties.appliedConditionalAccessPolicies.[].result security_result.[].detection_fields.value Se asigna directamente desde properties.appliedConditionalAccessPolicies.[].result con la clave de la etiqueta como "Resultado".
properties.appId appId Se asigna directamente desde properties.appId.
properties.appDisplayName target.application Se asigna directamente desde properties.appDisplayName.
properties.authenticationDetails.[].authenticationMethod security_result.detection_fields.value Se asigna directamente desde properties.authenticationDetails.[].authenticationMethod con la clave de etiqueta "authenticationMethod".
properties.authenticationDetails.[].authenticationMethodDetail security_result.detection_fields.value Se asigna directamente desde properties.authenticationDetails.[].authenticationMethodDetail con la clave de etiqueta "authenticationMethodDetail".
properties.authenticationDetails.[].authenticationStepDateTime security_result.detection_fields.value Se asigna directamente desde properties.authenticationDetails.[].authenticationStepDateTime con la clave de etiqueta como "authenticationStepDateTime".
properties.authenticationDetails.[].authenticationStepRequirement security_result.detection_fields.value Se asigna directamente desde properties.authenticationDetails.[].authenticationStepRequirement con la clave de etiqueta como "authenticationStepRequirement".
properties.authenticationDetails.[].authenticationStepResultDetail security_result.detection_fields.value Se asigna directamente desde properties.authenticationDetails.[].authenticationStepResultDetail con la clave de etiqueta como "authenticationStepResultDetail".
properties.authenticationRequirement additional.fields.value.string_value Se asigna directamente desde properties.authenticationRequirement con la clave de etiqueta como "AuthenticationRequirement".
properties.authenticationRequirementPolicies.[].detail security_result.detection_fields.value Se asigna directamente desde properties.authenticationRequirementPolicies.[].detail con la clave de etiqueta como "detail".
properties.authenticationRequirementPolicies.[].requirementProvider security_result.detection_fields.value Se asigna directamente desde properties.authenticationRequirementPolicies.[].requirementProvider con la clave de etiqueta como "requirementProvider".
properties.clientAppUsed principal.application Se asigna directamente desde properties.clientAppUsed.
properties.conditionalAccessStatus additional.fields.value.string_value Se asigna directamente desde properties.conditionalAccessStatus con la clave de etiqueta "conditionalAccessStatus".
properties.crossTenantAccessType additional.fields.value.string_value Se asigna directamente desde properties.crossTenantAccessType con la clave de etiqueta como "crossTenantAccessType".
properties.detectedDateTime additional.fields.value.string_value Se asigna directamente desde properties.detectedDateTime con la clave de etiqueta como "detectedDateTime".
properties.detectionTimingType additional.fields.value.string_value Se asigna directamente desde properties.detectionTimingType con la clave de etiqueta como "detectionTimingType".
properties.homeTenantId additional.fields.value.string_value Se asigna directamente desde properties.homeTenantId con la clave de etiqueta como "homeTenantId".
properties.id metadata.product_log_id Se asigna directamente desde properties.id.
properties.initiatedBy.user.displayName principal.user.user_display_name Se asigna directamente desde properties.initiatedBy.user.displayName.
properties.initiatedBy.user.id principal.user.windows_sid Se asigna directamente desde properties.initiatedBy.user.id.
properties.initiatedBy.user.ipAddress principal.ip, principal.asset.ip Se asigna directamente desde properties.initiatedBy.user.ipAddress.
properties.initiatedBy.user.userPrincipalName principal.user.email_addresses, principal.user.userid Se asigna directamente desde properties.initiatedBy.user.userPrincipalName. Si es una dirección de correo electrónico, se asigna a email_addresses; de lo contrario, a userid.
properties.ipAddress principal.ip, principal.asset.ip Se asigna directamente desde properties.ipAddress.
properties.isGuest additional.fields.value.string_value Se asigna directamente desde properties.isGuest con la clave de etiqueta "isGuest".
properties.isDeleted additional.fields.value.string_value Se asigna directamente desde properties.isDeleted con la clave de etiqueta "isDeleted".
properties.isProcessing additional.fields.value.string_value Se asigna directamente desde properties.isProcessing con la clave de etiqueta como "isProcessing".
properties.lastUpdatedDateTime additional.fields.value.string_value Se asigna directamente desde properties.lastUpdatedDateTime con la clave de etiqueta "lastUpdatedDateTime".
properties.location.city principal.location.city Se asigna directamente desde properties.location.city.
properties.location.countryOrRegion principal.location.country_or_region Se asigna directamente desde properties.location.countryOrRegion.
properties.location.geoCoordinates.latitude principal.location.region_latitude, principal.location.region_coordinates.latitude Se asigna directamente desde properties.location.geoCoordinates.latitude.
properties.location.geoCoordinates.longitude principal.location.region_longitude, principal.location.region_coordinates.longitude Se asigna directamente desde properties.location.geoCoordinates.longitude.
properties.location.state principal.location.state Se asigna directamente desde properties.location.state.
properties.networkLocationDetails.[].networkNames additional.fields.value.string_value Valores concatenados de properties.networkLocationDetails.[].networkNames con la clave de etiqueta como "properties networkName {index}".
properties.networkLocationDetails.[].networkType additional.fields.value.string_value Se asigna directamente desde properties.networkLocationDetails.[].networkType con la clave de etiqueta como "properties networkType {index}".
properties.riskEventType additional.fields.value.string_value Se asigna directamente desde properties.riskEventType con la clave de la etiqueta como "riskEventType".
properties.riskLastUpdatedDateTime additional.fields.value.string_value Se asigna directamente desde properties.riskLastUpdatedDateTime con la clave de etiqueta como "riskLastUpdatedDateTime".
properties.riskLevel additional.fields.value.string_value Se asigna directamente desde properties.riskLevel con la clave de etiqueta como "riskLevel".
properties.riskLevelDuringSignIn additional.fields.value.string_value Se asigna directamente desde properties.riskLevelDuringSignIn con la clave de etiqueta "riskLevelDuringSignIn".
properties.riskState additional.fields.value.string_value Se asigna directamente desde properties.riskState con la clave de etiqueta como "riskState".
properties.riskDetail additional.fields.value.string_value Se asigna directamente desde properties.riskDetail con la clave de etiqueta "riskDetail".
properties.riskType additional.fields.value.string_value Se asigna directamente desde properties.riskType con la clave de etiqueta como "riskType".
properties.source additional.fields.value.string_value Se asigna directamente desde properties.source con la clave de etiqueta como "source".
properties.targetResources.0.id target.user.product_object_id Se asigna directamente desde properties.targetResources.0.id.
properties.targetResources.modifiedProperties.0.newValue target.group.product_object_id Se asigna directamente desde properties.targetResources.modifiedProperties.0.newValue.
properties.tokenIssuerType additional.fields.value.string_value Se asigna directamente desde properties.tokenIssuerType con la clave de etiqueta como "tokenIssuerType".
properties.userAgent network.http.user_agent, network.http.parsed_user_agent Se asigna directamente desde properties.userAgent.
properties.userDisplayName target.user.user_display_name Se asigna directamente desde properties.userDisplayName.
properties.userId target.user.product_object_id Se asigna directamente desde properties.userId.
properties.userPrincipalName target.user.userid, target.user.email_addresses Se asigna directamente desde properties.userPrincipalName. Si es una dirección de correo electrónico, se asigna a email_addresses; de lo contrario, a userid.
result security_result.action, security_result.action_details Si result es "success", entonces ALLOW.
resultDescription security_result.description Se asigna directamente desde resultDescription.
resultSignature additional.fields.value.string_value Se asigna directamente desde resultSignature con la clave de etiqueta como "resultSignature".
resultType security_result.rule_id, action, security_result.summary Si resultType es "0", entonces ALLOW y "Se produjo un acceso exitoso". De lo contrario, se mostrará BLOCK y el mensaje “Se produjo un error en el acceso”.
resourceId target.resource.id, target.resource.product_object_id Se asigna directamente desde resourceId.
resourceDisplayName target.resource.name, appDisplayName Se asigna directamente desde resourceDisplayName.
riskDetail additional.fields.value.string_value Se asigna directamente desde riskDetail con la clave de etiqueta "riskDetail".
riskEventTypes.[]. additional.fields.value.string_value, additional.fields.value.list_value.values.string_value Los valores se agregan a una lista con la clave "riskEventTypes" en additional.fields. Además, cada valor se agrega como un campo independiente con la clave "riskEventType" en additional.fields.
riskEventTypes_v2.[]. additional.fields.value.list_value.values.string_value Los valores se agregan a una lista con la clave "riskEventTypes_v2" en additional.fields.
riskLevelAggregated additional.fields.value.string_value Se asigna directamente desde riskLevelAggregated con la clave de etiqueta "riskLevelAggregated".
riskLevelDuringSignIn additional.fields.value.string_value Se asigna directamente desde riskLevelDuringSignIn con la clave de etiqueta "riskLevelDuringSignIn".
riskState additional.fields.value.string_value Se asigna directamente desde riskState con la clave de etiqueta como "riskState".
status.additionalDetails security_result.description Se asigna directamente desde status.additionalDetails.
status.errorCode security_result.rule_id, errorCode Se asigna directamente desde status.errorCode.
target.displayName resourceDisplayName Se asigna directamente desde target.displayName.
target.id resourceId Se asigna directamente desde target.id.
target.modifiedProperties.[].displayName target.resource.attribute.labels.key Se asigna directamente desde target.modifiedProperties.[].displayName.
target.modifiedProperties.[].newValue target.resource.attribute.labels.value, target.resource.product_object_id Se asigna directamente desde target.modifiedProperties.[].newValue.
target.modifiedProperties.[].oldValue target.resource.attribute.labels.value Se asigna directamente desde target.modifiedProperties.[].oldValue.
target.type target.resource.type Se asigna directamente desde target.type.
tenantId metadata.product_deployment_id Se asigna directamente desde tenantId.
time when El campo when se deriva del campo time. La fecha y la hora se extraen del campo time con grok y, luego, se combinan para formar el campo when.
userAgent network.http.user_agent, network.http.parsed_user_agent Se asigna directamente desde userAgent.
userDisplayName target.user.user_display_name Se asigna directamente desde userDisplayName.
userId target.user.product_object_id Se asigna directamente desde userId.
userPrincipalName target.user.userid, principal.administrative_domain, target.user.email_addresses Se asigna directamente desde userPrincipalName. Si es una dirección de correo electrónico, se asigna a email_addresses y se extrae la parte del dominio, que se asigna a principal.administrative_domain. De lo contrario, se asigna a userid.
(Lógica del analizador) event.idm.is_alert, event.idm.is_significant Se establece como verdadero si el nivel es "Crítico".
(Lógica del analizador) event.idm.read_only_udm.metadata.event_type Se establece en "USER_LOGIN" si has_target_user es "true". Se establece en "USER_UNCATEGORIZED" si has_principal_user es "verdadero". Se establece en "STATUS_UPDATE" si has_principal es "true". De lo contrario, se establece en "GENERIC_EVENT".
(Lógica del analizador) event.idm.read_only_udm.metadata.vendor_name Se establece en "Microsoft".
(Lógica del analizador) event.idm.read_only_udm.metadata.product_name Establece el valor en "Azure AD".
(Lógica del analizador) event.idm.read_only_udm.extensions.auth.type Se debe establecer en "SSO".
(Lógica del analizador) event.idm.read_only_udm.extensions.auth.mechanism Se establece en "INTERACTIVE" si isInteractive es "true". De lo contrario, se debe establecer en "MECHANISM_OTHER".
(Lógica del analizador) security_result.action Se establece en ALLOW si el resultado es correcto.
(Lógica del analizador) security_result.action Se establece en ALLOW si resultType es 0.
(Lógica del analizador) security_result.action Se establece en BLOCK si resultType no es 0 ni "".
(Lógica del analizador) security_result.category Se establece en "AUTH_VIOLATION" si resultType no es 0 ni "".
(Lógica del analizador) security_result.description Se establece en "Se modificó la pertenencia a un grupo" si operationName es "Agregar miembro al grupo" y el resultado es "success".
(Lógica del analizador) security_result.priority Se establece en "MEDIUM_PRIORITY" si properties.riskLevelDuringSignIn es "medium".
(Lógica del analizador) security_result.summary Se establece en "Se produjo un acceso exitoso" si resultType es 0.
(Lógica del analizador) security_result.summary Se establece en "Failed login occurred" si resultType no es 0 ni "".
(Lógica del analizador) security_result.summary Se establece en properties.activityDisplayName si existe.
(Lógica del analizador) security_result.severity Se establece en INFORMATIONAL si el nivel es "Information", "Informational", "0" o "4". Se establece en MEDIUM si el nivel es "Warning", "1" o "3". Se establece en ERROR si el nivel es "Error" o "2". Se establece en CRITICAL si el nivel es "Crítico".
(Lógica del analizador) security_result.severity Se establece en ERROR si resultType no es 0 ni "".

Registro de cambios

Consulta el registro de cambios de este analizador

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.