Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 client. Les administrateurs de client peuvent activer la collecte des journaux et configurer des destinations en aval à l’aide des paramètres de diagnostic dans Azure Monitor. Les journaux sont envoyés à Log Analytics pour analyse. Vous pouvez les exporter vers Stockage Azure 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 cœur de métier, de clients API, de SDK, de clients IA interrogeant le serveur Microsoft MCP for Enterprise et d’applications Microsoft telles que Outlook, Microsoft Teams ou les portails d’administration Microsoft.
Ce service est disponible dans ces déploiements cloud nationaux.
| Service global | Gouvernement américain L4 | Gouvernement américain L5 (DOD) | Chine exploitée par 21Vianet |
|---|---|---|---|
| ✅ | ✅ | ✅ | ✅ |
Configuration requise
Pour utiliser les journaux d’activité Microsoft Graph, vous devez disposer des privilèges suivants.
- Une licence de locataire Microsoft Entra ID P1 ou P2.
- Un administrateur avec un rôle d’administrateur de Microsoft Entra pris en charge. L’administrateur de sécurité est le seul rôle d’administrateur à privilèges minimum pris en charge pour la configuration des paramètres de diagnostic.
- Un abonnement Azure avec l’une des destinations de journal suivantes configurée et les autorisations d’utilisation des données dans les destinations de journal correspondantes.
- Un espace de travail Azure Log Analytics pour envoyer des journaux à Azure Monitor
- Un compte de stockage Azure sur lequel vous disposez d’autorisations de liste de clés
- Un espace de noms Azure Event Hubs pour vous connecter à des solutions tierces
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 Log Analytics.
Conseil
Les demandes adressées au serveur Microsoft MCP pour Enterprise ont un RequestUri qui inclut /enterprise.
Avertissement
Ne stockez pas de secrets ou d’autres informations sensibles, telles que des mots de passe, des informations d’identification, des jetons d’accès ou d’actualisation ou des chaînes de connexion, dans les attributs d’objet d’annuaire ou toute autre ressource auditable exposée par Microsoft Graph. Les journaux d’activité Microsoft Graph, ainsi que d’autres journaux d’audit et de connexion, capturent les détails des demandes d’API, y compris les URI de demande. Toute valeur sensible transmise dans une requête ou stockée sur une telle ressource peut être enregistrée dans ces journaux, où elle est lisible par les administrateurs de clients et par tout espace de travail Log Analytics en aval, compte de stockage Azure ou système SIEM vers lequel les journaux sont exportés. Les attributs d’objet d’annuaire ne sont pas un magasin sécurisé pour les secrets ; Utilisez plutôt un magasin de secrets dédié tel que Azure Key Vault.
| Column | Type | Description |
|---|---|---|
| AadTenantId | string | ID de client Azure AD. |
| Version api | string | Version API de l’événement. |
| l’AppId | string | Identifiant de l’application. |
| ATContent | string | Réservé à une utilisation future. |
| ATContenH | 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 la façon dont 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. Identifiant de la demande du client lors de l’envoi. Si aucun identificateur de requête client n’est envoyé, la valeur est égale à l’identificateur d’opération. |
| ConditionalAccessStatus | string | Le status d’accès conditionnel enregistré par Microsoft Graph pour la demande. Vide si aucun status n’a été enregistré. |
| 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 | Indique si l’ingestion des données est facturable. Lorsque _IsBillable ingestion n’est false pas facturée à votre compte Azure |
| Emplacement | string | Nom de la région qui a traité la demande. |
| ID d’opération | string | Identificateur du lot. Pour les demandes non groupées, le montant sera unique par demande. Pour les demandes par lot, il en sera de même pour toutes les demandes du lot. |
| RequestId | string | Identifiant représentant la demande. |
| RequestMethod | string | Méthode HTTP de l’événement. |
| RequestUri | string | URI de la demande. |
| ResponseSizeBytes | int | Taille de la réponse en octets. |
| Code d’état de réponse | int | Code de status de réponse HTTP pour l’événement. |
| Rôles | string | Les rôles dans les revendications de jetons. |
| Étendues | string | Étendues dans les revendications de jetons. |
| ServicePrincipalId | string | Identificateur du principal de service qui effectue la demande. |
| SessionId | string | Identifiant unique de la session d’authentification. |
| SignInActivityId | string | Identifiant 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 |
| ID client | string | ID de l’espace de travail Log Analytics |
| Heuregénérée | 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 liées à la demande. |
| UserId | string | Identificateur de l’utilisateur qui effectue la demande. |
| Wids | string | Indique les rôles à l’échelle du client attribués à cet utilisateur. |
Cas d’utilisation courants des journaux d’activité Microsoft Graph
- Affichez toutes les transactions effectuées par les applications et les autres clients API auxquels vous avez consenti dans le locataire.
- Recherchez les activités qu’un compte d’utilisateur piraté effectue sur votre client.
- Créez des détections et des analyses comportementales pour repérer l’utilisation suspecte ou inhabituelle des API Microsoft Graph.
- Examinez les attributions privilégiées inattendues ou suspectes des autorisations d’application.
- Repérez les comportements problématiques ou inattendus pour les applications clientes, comme les volumes d’appels extrêmes.
- Surveillez les interactions du client IA avec les API Microsoft Graph, notamment les demandes des applications d’IA et du serveur Microsoft MCP pour Entreprise.
- Mettre 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 des API Azure Resource Manager. Si vous souhaitez en savoir plus, consultez les articles suivants :
- Intégrer les journaux d’activité aux journaux d’activité Azure Monitor
- Configurer diagnosticSettings via l’API Azure Resource Manager
Pour configurer les destinations de stockage, consultez les articles suivants :
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 les ressources Azure.
La quantité de données enregistrées et le coût encouru peuvent varier considérablement en fonction de la taille du client 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 le prix. Utilisez ces estimations à des fins générales uniquement.
| Utilisateurs du client | 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érez les journaux dans un espace de travail Log Analytics, mais que vous ne vous intéressez qu’aux journaux filtrés selon un critère tel que l’omission de certaines colonnes ou lignes, vous pouvez réduire partiellement les coûts en appliquant une transformation d’espace de travail dans la table Journaux d’activité Microsoft Graph. Pour en savoir plus sur les transformations d’espace de travail, leur incidence sur les coûts d’ingestion et l’application d’une transformation à vos journaux d’activité Microsoft Graph, consultez Transformations de la collecte de données dans Azure Monitor.
Une autre approche pour réduire le coût de Log Analytics consiste à passer au plan de données de journal de base, ce qui réduit les factures en fournissant 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 Analytics.
Exemples de requêtes sur les journaux d’activité Azure Monitor
Si vous envoyez des journaux d’activité Microsoft Graph à un espace de travail Log Analytics, vous pouvez interroger les journaux à l’aide du langage de requête Kusto (KQL). Pour plus d’informations sur les requêtes dans l’espace de travail Log Analytics, consultez Analyser les journaux d’activité Microsoft Entra avec Log Analytics. Vous pouvez utiliser ces requêtes pour explorer des données, créer des règles d’alerte, créer des tableaux de bord Azure ou intégrer des applications personnalisées à l’aide de l’API Journaux d’Azure Monitor ou du SDK de requête.
La requête Kusto suivante identifie les 20 principales entités qui effectuent des demandes aux ressources de groupes qui échouent en raison de l’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 des utilisateurs potentiellement risqués :
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. Il est possible que les journaux d’activité des applications Microsoft ne correspondent pas tous à des entrées de journal de connexion. Pour plus d’informations, voir Journaux de connexion limitations connues.
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 de restituer 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é de journaux d’activité Microsoft Graph permet aux administrateurs de client de collecter des journaux pour le locataire de ressources. Cette fonctionnalité ne vous permet pas de voir les activités d’une application mutualisée 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 l’espace de travail Azure Log Analytics. Pour plus d’informations, reportez-vous à la section Transformation de l’espace de travail.
- Dans la plupart des régions, les événements sont disponibles et remis à la destination de la configuration dans les 30 minutes. Dans des cas moins courants, certains événements peuvent prendre jusqu’à 2 heures pour être remis à destination.