Acceder a los registros de actividad de Microsoft Graph

Los registros de actividad de Microsoft Graph proporcionan una pista de auditoría de todas las solicitudes HTTP que el servicio de Microsoft Graph recibe y procesa para un espacio empresarial. Los administradores de inquilinos pueden activar la recopilación de registros y configurar destinos de bajada mediante la configuración de diagnóstico en Azure Monitor. Los registros se envían a Log Analytics para su análisis. Puede exportarlos a Azure Storage para el almacenamiento a largo plazo o transmitirlos con Azure Event Hubs a herramientas SIEM externas para alertas, análisis o archivado.

Obtiene registros de solicitudes de API de aplicaciones de línea de negocio, clientes de API, SDK, clientes de IA que consultan el servidor Microsoft MCP para empresas y aplicaciones de Microsoft como Outlook, Microsoft Teams o los portales de administración de Microsoft.

Este servicio está disponible en estas implementaciones en la nube nacional.

Servicio global Administración pública de EE. UU. Gobierno de EE. UU. L5 (DOD) China operado por 21Vianet
✅ ✅ ✅ ✅

Requisitos previos

Para usar los registros de actividad de Microsoft Graph, necesita los siguientes privilegios.

  • Una licencia de inquilino de Microsoft Entra ID P1 o P2.
  • Un administrador con un rol de administrador de Microsoft Entra compatible. El administrador de seguridad es el único rol de administrador con privilegios mínimos admitido para configurar la configuración de diagnóstico.
  • Una suscripción a Azure con uno de los siguientes destinos de registro configurados y permisos para usar los datos en los destinos de registro correspondientes.
    • un área de trabajo de Azure Log Analytics para enviar los registros a Azure Monitor
    • Una cuenta de almacenamiento de Azure en la que tenga permisos de claves de lista
    • Un espacio de nombres de Azure Event Hubs para conectarse con soluciones de terceros

Qué datos están disponibles en los registros de actividad de Microsoft Graph

En este artículo se muestran los datos sobre las solicitudes de API que están disponibles para los registros de actividad de Microsoft Graph en la interfaz de análisis de registros.

Sugerencia

Las solicitudes al servidor MCP de Microsoft para empresas tienen un RequestUri que incluye /enterprise.

Advertencia

No almacene secretos ni otra información confidencial (como contraseñas, credenciales, tokens de acceso o actualización, o cadenas de conexión) en atributos de objetos de directorio o en cualquier otro recurso auditable expuesto por Microsoft Graph. Los registros de actividad de Microsoft Graph, junto con otros registros de auditoría e inicio de sesión, capturan detalles sobre las solicitudes de API, incluidos los URI de solicitud. Cualquier valor confidencial que se pase en una solicitud o se almacene en dicho recurso se puede registrar en estos registros, donde es legible por los administradores de inquilinos y por cualquier área de trabajo de Log Analytics descendente, cuenta de almacenamiento de Azure o sistema SIEM al que se exportan los registros. Los atributos de los objetos de directorio no son un almacén seguro de secretos; En su lugar, use un almacén de secretos dedicado, como Azure Key Vault.

Column Tipo Description
AadTenantId string El identificador de inquilino de Azure AD.
ApiVersion string La versión de API del evento.
AppId string El identificador de la aplicación.
ATContent string Reservado para uso futuro.
ATContentH string Reservado para uso futuro.
ATContentP string Reservado para uso futuro.
_BilledSize real El tamaño del registro en bytes
ClientAuthMethod Entero Indica cómo se autenticó el cliente. Para un cliente público, el valor es 0. Si se usan el identificador de cliente y el secreto de cliente, el valor es 1. Si se usó un certificado de cliente para la autenticación, el valor es 2.
ClientRequestId string Opcional. El identificador de solicitud del cliente cuando se envió. Si no se envía ningún identificador de solicitud de cliente, el valor será igual al identificador de operación.
ConditionalAccessStatus string El estado de acceso condicional registrado por Microsoft Graph para la solicitud. Vacío cuando no se ha registrado ningún estado.
DeviceId string El identificador del dispositivo desde el que se originó la solicitud de autenticación.
DurationMs Entero La duración de la solicitud en milisegundos.
IdentityProvider string El proveedor de identidad que autenticó al sujeto del token.
IPAddress string La dirección IP del cliente desde donde se produjo la solicitud.
_IsBillable string Especifica si la ingesta de los datos es facturable. Cuando _IsBillable false es la ingesta no se factura a su cuenta de Azure
Ubicación cadena El nombre de la región que atendió la solicitud.
Identificador de operación string El identificador del lote. En el caso de las solicitudes no por lotes, este valor será único por solicitud. En el caso de las solicitudes por lotes, será el mismo para todas las solicitudes del lote.
Id. de solicitud string Identificador que representa la solicitud.
RequestMethod string El método HTTP del evento.
RequestUri string El URI de la solicitud.
ResponseSizeBytes Entero Tamaño de la respuesta en bytes.
Código de estado de respuesta Entero El código de estado de respuesta HTTP para el evento.
Funciones string Los roles en las notificaciones de token.
Scopes string Los ámbitos de las notificaciones de token.
ServicePrincipalId string Identificador del servicePrincipal que realiza la solicitud.
SessionId string El identificador único de la sesión de autenticación.
SignInActivityId string El identificador que representa las actividades de inicio de sesión.
Sistema de origen string El tipo de agente que recopiló el evento. Por ejemplo, para el agente de Windows, OpsManager Direct Connect o Operations Manager, Linux para todos los agentes de Linux o Azure para Azure Diagnostics
TenantId string El identificador del área de trabajo de Log Analytics
Hora de creación datetime La fecha y hora en que se recibió la solicitud.
TokenIssuedAt datetime La marca de tiempo en la que se emitió el token.
Tipo string El nombre de la tabla
UniqueTokenId string El identificador de token único de la llamada a la API usada para realizar el cambio auditado.
UserAgent string La información del agente de usuario relacionada con la solicitud.
UserId string El identificador del usuario que realiza la solicitud.
Wids string Indica los roles de todo el espacio empresarial asignados a este usuario.

Casos de uso comunes de los registros de actividad de Microsoft Graph

  • Vea todas las transacciones realizadas por las aplicaciones y otros clientes de API a los que ha dado su consentimiento en el inquilino.
  • Buscar actividades que una cuenta de usuario en peligro realiza en el espacio empresarial.
  • Cree detecciones y análisis de comportamiento para detectar el uso sospechoso o inusual de las API de Microsoft Graph.
  • Investigue la asignación de privilegios inesperada o sospechosa de permisos de aplicación.
  • Detecte comportamientos problemáticos o inesperados para las aplicaciones cliente, como volúmenes extremos de llamadas.
  • Supervise las interacciones del cliente de IA con las API de Microsoft Graph, incluidas las solicitudes de las aplicaciones de IA y el servidor Microsoft MCP para empresas.
  • Correlacionar las solicitudes de Microsoft Graph realizadas por un usuario o una aplicación con la información de inicio de sesión.

Configurar registros de actividad de Microsoft Graph

Stream los registros a través de la configuración de diagnóstico en el Azure Portal o mediante Azure Resource Manager API. Para más información, consulte los siguientes artículos:

Utilice los siguientes artículos para configurar destinos de almacenamiento:

Estimaciones de la planificación de costos

Si ya tiene una licencia de Microsoft Entra ID P1, necesita una suscripción de Azure para configurar el área de trabajo de Log Analytics, la cuenta de almacenamiento o Event Hubs. Obtiene la suscripción de Azure sin coste alguno, pero paga por usar los recursos de Azure.

La cantidad de datos registrados y el costo incurrido pueden variar significativamente en función del tamaño del inquilino y de las aplicaciones del inquilino que interactúan con las API de Microsoft Graph. En la tabla siguiente se proporcionan estimaciones del tamaño de los datos de registro para ayudarle a calcular los precios. Utilice estas estimaciones solo para consideración general.

Usuarios del inquilino Almacenamiento (GiB al mes) Mensajes de Event Hubs (por mes) Registros de monitor de Azure (GiB al mes)
1,000 14 62,000 15
100 000 1,000 4 800 000 1 200

Consulte los siguientes detalles de precios para cada servicio:

Reducción de costos para Log Analytics

Si ingiere los registros en un área de trabajo de Log Analytics pero solo está interesado en registros filtrados por un criterio, como omitir determinadas columnas o filas, puede reducir parcialmente los costos aplicando una transformación de área de trabajo en la tabla Registros de actividad de Microsoft Graph. Para obtener más información sobre las transformaciones del área de trabajo, cómo afecta a los costos de ingesta y cómo aplicar una transformación a los registros de actividad de Microsoft Graph, consulte Transformaciones de recopilación de datos en Azure Monitor.

Un enfoque alternativo para reducir el costo de Log Analytics es cambiar al plan de datos de registro básico, que reduce las facturas al proporcionar capacidades reducidas. Para obtener más información, consulte Establecer el plan de datos de registro de una tabla en Básico o Analítico.

Ejemplos de consulta de registros de monitor de Azure

Si envía registros de actividad de Microsoft Graph a un área de trabajo de Log Analytics, puede consultar los registros mediante el Lenguaje de consulta Kusto (KQL). Para obtener más información acerca de las consultas en el área de trabajo de Log Analytics, consulte Análisis de los registros de actividad de Microsoft Entra con Log Analytics. Puede usar estas consultas para la exploración de datos, para crear reglas de alerta, crear paneles de Azure o integrarse en sus aplicaciones personalizadas mediante la API de registros de Azure Monitor o el SDK de Query.

La siguiente consulta de Kusto identifica las 20 entidades principales que realizan solicitudes a los recursos de grupos que producen errores debido a la autorización:

MicrosoftGraphActivityLogs
| where TimeGenerated >= ago(3d)
| where ResponseStatusCode == 401 or ResponseStatusCode == 403 
| where RequestUri contains "/groups"
| summarize UniqueRequests=count_distinct(RequestId) by AppId, ServicePrincipalId, UserId
| sort by UniqueRequests desc
| limit 20

La siguiente consulta de Kusto identifica recursos consultados o modificados por usuarios potencialmente arriesgados:

MicrosoftGraphActivityLogs
| where TimeGenerated > ago(30d)
| join AADRiskyUsers on $left.UserId == $right.Id
| extend resourcePath = replace_string(replace_string(replace_regex(tostring(parse_url(RequestUri).Path), @'(\/)+','/'),'v1.0/',''),'beta/','')
| summarize RequestCount=dcount(RequestId) by UserId, RiskState, resourcePath, RequestMethod, ResponseStatusCode

La siguiente consulta de Kusto permite correlacionar los registros de actividad de Microsoft Graph y los registros de inicio de sesión. Es posible que no todos los registros de actividad de las aplicaciones de Microsoft tengan entradas de registro de inicio de sesión coincidentes. Para obtener más información, consulte Limitaciones conocidas de los registros de inicio de sesión.

MicrosoftGraphActivityLogs
| where TimeGenerated > ago(7d)
| join kind=leftouter (union SigninLogs, AADNonInteractiveUserSignInLogs, AADServicePrincipalSignInLogs, AADManagedIdentitySignInLogs, ADFSSignInLogs
    | where TimeGenerated > ago(7d))
    on $left.SignInActivityId == $right.UniqueTokenIdentifier

La siguiente consulta de Kusto identifica las aplicaciones que se están limitando:

MicrosoftGraphActivityLogs 
| where TimeGenerated > ago(3d) 
| where ResponseStatusCode == 429 
| extend path = replace_string(replace_string(replace_regex(tostring(parse_url(RequestUri).Path), @'(\/)+','//'),'v1.0/',''),'beta/','') 
| extend UriSegments =  extract_all(@'\/([A-z2]+|\$batch)($|\/|\(|\$)',dynamic([1]),tolower(path)) 
| extend OperationResource = strcat_array(UriSegments,'/')| summarize RateLimitedCount=count() by AppId, OperationResource, RequestMethod 
| sort by RateLimitedCount desc 
| limit 100 

La consulta siguiente permite representar un gráfico de serie temporal:

MicrosoftGraphActivityLogs 
| where TimeGenerated  between (ago(3d) .. ago(1h))  
| summarize EventCount = count() by bin(TimeGenerated, 10m) 
| render timechart 
    with ( 
    title="Recent traffic patterns", 
    xtitle="Time", 
    ytitle="Requests", 
    legend=hidden 
    )

Limitaciones

  • La característica de registros de actividad de Microsoft Graph permite a los administradores de inquilinos recopilar registros para el inquilino de recursos. Esta característica no le permite ver las actividades de una aplicación multiinquilino en otro espacio empresarial.
  • No se pueden filtrar los registros de actividad de Microsoft Graph a través de la configuración de diagnóstico en Azure Monitor. Sin embargo, hay opciones disponibles para reducir los costos en el área de trabajo de Azure Log Analytics. Para obtener más información, consulte Transformación del espacio de trabajo.
  • En la mayoría de las regiones, los eventos están disponibles y se entregan en el destino de la configuración en menos de 30 minutos. En casos menos comunes, algunos eventos pueden tardar hasta 2 horas en entregarse en el destino.