Acceso a los registros de actividad de Microsoft Graph

Los registros de actividad de Microsoft Graph son un seguimiento de auditoría de todas las solicitudes HTTP que el servicio Microsoft Graph recibió y procesó para un inquilino. Los administradores de inquilinos pueden habilitar la recopilación y configurar destinos de bajada para estos registros mediante la configuración de diagnóstico en Azure Monitor. Los registros se almacenan en Log Analytics para su análisis y puede exportarlos a Azure Storage para almacenamiento a largo plazo o transmitirlos con Azure Event Hubs a herramientas SIEM externas para alertas, análisis o archivado.

Todos los registros de solicitudes de API realizadas desde aplicaciones de línea de negocio, clientes de API, SDK y aplicaciones de Microsoft como Outlook, Microsoft Teams o los Centro de administración Microsoft Entra están disponibles.

Este servicio está disponible en las siguientes implementaciones nacionales de nube.

Servicio global Gobierno de EE. UU. L4 Us Government L5 (DOD) China operada por 21Vianet

Requisitos previos

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

  • Una licencia de inquilino Microsoft Entra ID P1 o P2 en el inquilino.
  • Un administrador con uno de los siguientes roles de administrador Microsoft Entra enumerados en el orden de menos a más roles con privilegios.
    • Administrador de seguridad: para configurar las opciones de diagnóstico
    • Administrador global: para configurar las opciones de diagnóstico
  • Se configura una suscripción de Azure con uno de los siguientes destinos de registro y permisos para acceder a los datos de los destinos de registro correspondientes.
    • Un área de trabajo de Azure Log Analytics para enviar registros a Azure Monitor
    • Una cuenta de Azure Storage para la que tiene permisos de claves de lista
    • Un espacio de nombres Azure Event Hubs para integrarlo con soluciones de terceros

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

Los siguientes datos relacionados con las solicitudes de API están disponibles para los registros de actividad de Microsoft Graph en la interfaz de Logs Analytics.

Column Tipo Descripción
AadTenantId string Identificador de inquilino de Azure AD.
ApiVersion string La versión de API del evento.
Appid string Identificador de la aplicación.
ATContent string Reservado para uso futuro.
_BilledSize Real 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. Identificador de solicitud de cliente cuando se envía. Si no se envía ningún identificador de solicitud de cliente, el valor será igual al identificador de operación.
DurationMs Entero Duración de la solicitud en milisegundos.
IdentityProvider string Proveedor de identidades que autenticó el asunto del token.
IPAddress string Dirección IP del cliente desde donde se produjo la solicitud.
_IsBillable string Especifica si la ingesta de los datos es facturable. Cuando _IsBillable es false ingesta no se factura a la cuenta de Azure
Ubicación cadena Nombre de la región que atendió la solicitud.
OperationId string Identificador del lote. En el caso de las solicitudes no por lotes, esto será único por solicitud. En el caso de las solicitudes por lotes, será igual para todas las solicitudes del lote.
Id. de solicitud string Identificador que representa la solicitud.
RequestMethod string Método HTTP del evento.
RequestUri string Uri de la solicitud.
ResponseSizeBytes Entero Tamaño de la respuesta en bytes.
ResponseStatusCode Entero Código de estado de respuesta HTTP para el evento.
Funciones string Roles en notificaciones de token.
Scopes string Ámbitos en notificaciones de token.
ServicePrincipalId string Identificador del servicePrincipal que realiza la solicitud.
SignInActivityId string Identificador que representa las actividades de inicio de sesión.
SourceSystem string El tipo de agente por el que se recopiló el evento. Por ejemplo, OpsManager para el agente de Windows, ya sea conexión directa o Operations Manager, Linux para todos los agentes linux o Azure para Azure Diagnostics
TenantId string Identificador del área de trabajo de Log Analytics
TimeGenerated datetime Fecha y hora en que se recibió la solicitud.
TokenIssuedAt datetime Marca de tiempo en la que se emitió el token.
Tipo string Nombre de la tabla
UserAgent string Información del agente de usuario relacionada con la solicitud.
UserId string Identificador del usuario que realiza la solicitud.
Wids string Denota los roles de todo el inquilino asignados a este usuario.

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

  • Obtenga visibilidad completa de las transacciones realizadas por las aplicaciones y otros clientes de API a las que ha dado su consentimiento en el inquilino.
  • Identifique las actividades que ha llevado a cabo una cuenta de usuario en peligro en el inquilino.
  • Cree detecciones y análisis de comportamiento para identificar el uso sospechoso o anómalo de las API de Microsoft Graph.
  • Investigue la asignación con privilegios inesperada o sospechosa de permisos de aplicación.
  • Identificar comportamientos problemáticos o inesperados para aplicaciones cliente, como volúmenes de llamadas extremos.
  • Correlacionar las solicitudes de Microsoft Graph realizadas por un usuario o aplicación con información de inicio de sesión.

Configuración para recibir los registros de actividad de Microsoft Graph

Puede configurar para transmitir los registros a través de la configuración de diagnóstico de la Azure Portal o a través de las API de Azure Resource Manager. Para obtener más información, consulte las instrucciones de los artículos siguientes:

Los artículos siguientes le guían para configurar los destinos de almacenamiento:

Estimaciones de 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. La suscripción de Azure no tiene costo, pero tiene que pagar para usar los recursos de Azure.

La cantidad de datos registrados y, por tanto, el costo incurrido, puede 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 algunas estimaciones del tamaño de los datos de registro para ayudar al cálculo de precios. Use estas estimaciones solo para consideraciones generales.

Usuarios en el inquilino GiB de almacenamiento/mes Mensajes/mes de Event Hubs GiB/mes de registros de Azure Monitor
1000 14 62 000 15
100000 1000 4,8 M 1200

Consulte los siguientes cálculos de precios para los servicios respectivos:

Reducción de costos para Log Analytics

Si va a ingerir los registros en un área de trabajo de Log Analytics pero solo está interesado en los 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 funcionalidades reducidas. Para obtener más información, consulte Establecer el plan de datos de registro de una tabla en Básico o Analytics.

Ejemplos de consulta de registros de Azure Monitor

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

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 los recursos consultados o modificados por usuarios potencialmente peligrosos:

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 y los registros de inicio de sesión de Microsoft Graph. Es posible que los registros de actividad de las aplicaciones de Microsoft no 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 series temporales:

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 permite ver las actividades de una aplicación multiinquilino en otro inquilino.
  • No puede 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, vea Transformación área de trabajo.
  • En la mayoría de las regiones, los eventos estarán disponibles en el destino de configuración en un plazo de 30 minutos. En casos menos comunes, algunos eventos pueden tardar hasta 2 horas en entregarse al destino.