Partager via


Accéder aux journaux d’activité Microsoft Graph

Les journaux d’activité Microsoft Graph fournissent une piste d’audit de toutes les requêtes HTTP que le service Microsoft Graph reçoit et traite pour un locataire. Les administrateurs de locataires peuvent activer la collecte des journaux et configurer des destinations en aval à l’aide des paramètres de diagnostic dans Azure Monitor. Les journaux vont à Log Analytics pour analyse. Vous pouvez les exporter vers Azure Storage pour un stockage à long terme, ou les diffuser en continu avec Azure Event Hubs vers des outils SIEM externes à des fins d’alerte, d’analyse ou d’archivage.

Vous obtenez des journaux pour les demandes d’API provenant d’applications métier, de clients d’API, de kits de développement logiciel (SDK), de clients IA interrogeant Microsoft MCP Server for Enterprise et d’applications Microsoft telles qu’Outlook, Microsoft Teams ou les portails d’administration Microsoft.

Ce service est disponible dans ces déploiements de cloud national.

Service global Gouvernement des États-Unis L4 Us Government L5 (DOD) Chine gérée par 21Vianet

Configuration requise

Pour utiliser les journaux d’activité Microsoft Graph, vous avez besoin des privilèges suivants.

  • Une licence de locataire Microsoft Entra ID P1 ou P2.
  • Administrateur avec un rôle d’administrateur Microsoft Entra pris en charge. Administrateur de sécurité est le seul rôle d’administrateur le moins privilégié pris en charge pour la configuration des paramètres de diagnostic.
  • Un abonnement Azure avec l’une des destinations de journaux suivantes configurées et des autorisations pour utiliser les données dans les destinations de journal correspondantes.
    • Un espace de travail Log Analytics Azure pour envoyer des journaux à Azure Monitor
    • Un compte de stockage Azure dans lequel vous disposez des autorisations Clés de liste
    • Un espace de noms Azure Event Hubs pour se connecter à des solutions tierces

Quelles sont les données disponibles dans les journaux d’activité Microsoft Graph

Cet article présente les données sur les demandes d’API disponibles pour les journaux d’activité Microsoft Graph dans l’interface Logs Analytics.

Conseil

Les demandes adressées à Microsoft MCP Server for Enterprise ont un RequestUri qui inclut /enterprise.

Column Type Description
AadTenantId string ID de locataire ad Azure.
ApiVersion string Version de l’API de l’événement.
AppId string Identificateur de l’application.
ATContent string Réservé à une utilisation future.
ATContentH string Réservé à une utilisation future.
ATContentP string Réservé à une utilisation future.
_BilledSize réel Taille de l’enregistrement en octets
ClientAuthMethod int Indique comment le client a été authentifié. Pour un client public, la valeur est 0. Si l’ID client et la clé secrète client sont utilisés, la valeur est 1. Si un certificat client a été utilisé pour l’authentification, la valeur est 2.
ClientRequestId string Facultatif. Identificateur de la demande cliente lors de l’envoi. Si aucun identificateur de demande client n’est envoyé, la valeur est égale à l’identificateur de l’opération.
DeviceId string Identificateur de l’appareil d’où provient la demande d’authentification.
DurationMs int Durée de la requête en millisecondes.
IdentityProvider string Fournisseur d’identité qui a authentifié l’objet du jeton.
IPAddress string Adresse IP du client à partir duquel la demande s’est produite.
_IsBillable string Spécifie si l’ingestion des données est facturable. Lorsque _IsBillable est l’ingestion false n’est pas facturée à votre compte Azure
Emplacement string Nom de la région qui a traité la demande.
OperationId string Identificateur du lot. Pour les requêtes non traitées par lot, cette valeur est unique par demande. Pour les demandes par lots, cela sera identique pour toutes les requêtes du lot.
RequestId string Identificateur représentant la demande.
RequestMethod string Méthode HTTP de l’événement.
RequestUri string URI de la requête.
ResponseSizeBytes int Taille de la réponse en octets.
ResponseStatusCode int La réponse HTTP status code de l’événement.
Rôles string Rôles dans les revendications de jeton.
Étendues string Étendues dans les revendications de jeton.
ServicePrincipalId string Identificateur du servicePrincipal qui effectue la demande.
SessionId string Identificateur unique de la session d’authentification.
SignInActivityId string Identificateur représentant les activités de connexion.
SourceSystem string Type d’agent par lequel l’événement a été collecté. Par exemple, OpsManager pour l’agent Windows, connexion directe ou Operations Manager, Linux pour tous les agents Linux ou Azure pour Diagnostics Azure
TenantId string ID de l’espace de travail Log Analytics
TimeGenerated DateHeure Date et heure de réception de la demande.
TokenIssuedAt DateHeure Horodatage auquel le jeton a été émis.
Type string Nom de la table
UniqueTokenId string Identificateur de jeton unique de l’appel d’API utilisé pour effectuer la modification auditée.
UserAgent string Informations de l’agent utilisateur relatives à la demande.
UserId string Identificateur de l’utilisateur qui effectue la demande.
Wids string Désigne les rôles à l’échelle du locataire attribués à cet utilisateur.

Cas d’usage courants pour les journaux d’activité Microsoft Graph

  • Consultez toutes les transactions effectuées par des applications et d’autres clients d’API que vous avez acceptés dans le locataire.
  • Recherchez les activités qu’un compte d’utilisateur compromis effectue dans votre locataire.
  • Créez des détections et une analyse comportementale pour détecter l’utilisation suspecte ou inhabituelle des API Microsoft Graph.
  • Examiner l’attribution de privilèges inattendue ou suspecte d’autorisations d’application.
  • Repérer les comportements problématiques ou inattendus pour les applications clientes, comme les volumes d’appels extrêmes.
  • Surveillez les interactions des clients IA avec les API Microsoft Graph, y compris les demandes provenant d’applications IA et de Microsoft MCP Server for Enterprise.
  • Mettez en corrélation les demandes Microsoft Graph effectuées par un utilisateur ou une application avec les informations de connexion.

Configurer les journaux d’activité Microsoft Graph

Stream journaux via le paramètre de diagnostic dans le Portail Azure ou à l’aide de Azure Resource Manager API. Si vous souhaitez en savoir plus, consultez les articles suivants :

Utilisez les articles suivants pour configurer des destinations de stockage :

Estimations de la planification des coûts

Si vous disposez déjà d’une licence Microsoft Entra ID P1, vous avez besoin d’un abonnement Azure pour configurer l’espace de travail Log Analytics, le compte de stockage ou Event Hubs. Vous obtenez l’abonnement Azure gratuitement, mais vous payez pour utiliser Azure ressources.

La quantité de données journalisées et le coût induit peuvent varier considérablement en fonction de la taille du locataire et des applications de votre locataire qui interagissent avec les API Microsoft Graph. Le tableau suivant fournit des estimations de la taille des données de journal pour vous aider à calculer les prix. Utilisez ces estimations à des fins générales uniquement.

Utilisateurs dans le locataire Stockage (Gio par mois) Messages Event Hubs (par mois) Journaux Azure Monitor (Gio par mois)
1 000 14 62,000 15
100 000 1 000 4,800,000 1 200

Consultez les détails de tarification suivants pour chaque service :

Réduction des coûts pour Log Analytics

Si vous ingérer les journaux dans un espace de travail Log Analytics, mais que vous vous intéressez uniquement aux journaux filtrés par un critère, comme l’omission de certaines colonnes ou lignes, vous pouvez réduire partiellement les coûts en appliquant une transformation d’espace de travail sur la table Journaux d’activité Microsoft Graph. Pour en savoir plus sur les transformations d’espace de travail, leur impact sur les coûts d’ingestion et l’application d’une transformation à vos journaux d’activité Microsoft Graph, consultez Transformations de collecte de données dans Azure Monitor.

Une autre approche pour réduire les coûts Log Analytics consiste à passer au plan de données de journal de base, qui réduit les factures en offrant des fonctionnalités réduites. Pour plus d’informations, consultez Définir le plan de données de journal d’une table sur De base ou Analytique.

Azure Monitor Logs - Exemples de requêtes

Si vous envoyez des journaux d’activité Microsoft Graph à un espace de travail Log Analytics, vous pouvez interroger les journaux à l’aide de Langage de requête Kusto (KQL). Pour plus d’informations sur les requêtes dans l’espace de travail Log Analytics, consultez Analyser Microsoft Entra journaux d’activité avec Log Analytics. Vous pouvez utiliser ces requêtes pour l’exploration des données, pour générer des règles d’alerte, créer des Azure tableaux de bord ou intégrer dans vos applications personnalisées à l’aide de l’API Azure Monitor Logs ou du SDK Query.

La requête Kusto suivante identifie les 20 principales entités qui effectuent des requêtes à des groupes de ressources qui échouent en raison d’une autorisation :

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 requête Kusto suivante identifie les ressources interrogées ou modifiées par les utilisateurs potentiellement à risque :

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 requête Kusto suivante vous permet de mettre en corrélation les journaux d’activité microsoft Graph et les journaux de connexion. Les journaux d’activité des applications Microsoft n’ont peut-être pas tous des entrées de journal de connexion correspondantes. Pour plus d’informations, consultez Limitations connues des journaux de connexion.

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

La requête Kusto suivante identifie les applications qui sont limitées :

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 requête suivante vous permet d’afficher un graphique de série chronologique :

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 
    )

Limitations

  • La fonctionnalité journaux d’activité Microsoft Graph permet aux administrateurs du locataire de collecter des journaux pour le locataire de ressource. Cette fonctionnalité ne vous permet pas de voir les activités d’une application multilocataire dans un autre locataire.
  • Vous ne pouvez pas filtrer les journaux d’activité Microsoft Graph via les paramètres de diagnostic dans Azure Monitor. Toutefois, des options sont disponibles pour réduire les coûts dans Azure’espace de travail Log Analytics. Pour plus d’informations, consultez Transformation de l’espace de travail.
  • Dans la plupart des régions, les événements sont disponibles et remis à la destination de configuration dans les 30 minutes. Dans des cas moins courants, la livraison de certains événements à la destination peut prendre jusqu’à 2 heures.