Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft Graph-Aktivitätsprotokolle stellen einen Überwachungspfad aller HTTP-Anforderungen bereit, die der Microsoft Graph-Dienst für einen Mandanten empfängt und verarbeitet. Mandantenadministratoren können mithilfe der Diagnoseeinstellungen in Azure Monitor die Protokollsammlung aktivieren und Downstreamziele einrichten. Die Protokolle werden zur Analyse an Log Analytics gesendet. Sie können sie zur langfristigen Speicherung in Azure Storage exportieren oder mit Azure Event Hubs an externe SIEM-Tools streamen, um Warnungen, Analysen oder Archivierungen zu erhalten.
Sie erhalten Protokolle für API-Anforderungen von Branchen-Apps, API-Clients, SDKs, KI-Clients, die den Microsoft MCP Server for Enterprise abfragen, und Microsoft-Apps wie Outlook, Microsoft Teams oder den Microsoft-Verwaltungsportalen.
Dieser Dienst ist in diesen nationalen Cloudbereitstellungen verfügbar.
| Weltweiter Service | US Government L4 | US Government L5 (DOD) | China, betrieben von 21Vianet |
|---|---|---|---|
| ✅ | ✅ | ✅ | ✅ |
Voraussetzungen
Um Microsoft Graph-Aktivitätsprotokolle verwenden zu können, benötigen Sie die folgenden Berechtigungen.
- Eine Microsoft Entra ID P1- oder P2-Mandantenlizenz.
- Ein Administrator mit einer unterstützten Microsoft Entra-Administratorrolle. Der Sicherheitsadministrator ist die einzige Administratorrolle mit den geringsten Berechtigungen, die zum Einrichten von Diagnoseeinstellungen unterstützt wird.
- Ein Azure-Abonnement mit einem der folgenden Protokollziele eingerichtet, und Berechtigungen zur Verwendung von Daten in den entsprechenden Protokollzielen.
- Ein Azure Log Analytics-Arbeitsbereich zum Senden von Protokollen an Azure Monitor
- Ein Azure Storage-Konto, in dem Sie über List Keys-Berechtigungen verfügen
- Ein Azure Event Hubs-Namespace zum Herstellen einer Verbindung mit Lösungen von Drittanbietern
Welche Daten sind in den Microsoft Graph-Aktivitätsprotokollen verfügbar?
Dieser Artikel zeigt die Daten zu API-Anforderungen, die für Microsoft Graph-Aktivitätsprotokolle in der Logs Analytics-Schnittstelle verfügbar sind.
Tipp
Anforderungen an den Microsoft MCP Server for Enterprise haben einen RequestUri , der /enterpriseenthält.
Warnung
Speichern Sie keine Geheimnisse oder andere vertrauliche Informationen wie Kennwörter, Anmeldeinformationen, Zugriffs- oder Aktualisierungstoken oder Verbindungszeichenfolgen in Verzeichnisobjektattributen oder anderen überwachbaren Ressourcen, die von Microsoft Graph verfügbar gemacht werden. Microsoft Graph-Aktivitätsprotokolle erfassen zusammen mit anderen Überwachungs- und Anmeldeprotokollen Details zu API-Anforderungen, einschließlich Anforderungs-URIs. Jeder sensible Wert, der in einer Anforderung übergeben oder auf einer solchen Ressource gespeichert wird, kann in diesen Protokollen aufgezeichnet werden, wo er von Mandantenadministratoren und von jedem nachgelagerten Log Analytics-Arbeitsbereich, jedem Azure Storage-Konto oder jedem SIEM-System, in das die Protokolle exportiert werden, gelesen werden kann. Verzeichnisobjektattribute sind kein sicherer Speicher für Geheimnisse. Verwenden Sie stattdessen einen dedizierten Geheimnisspeicher, z. B. Azure Key Vault.
| Spalte | Typ | Beschreibung |
|---|---|---|
| AadTenantId | string | Die Azure AD-Mandanten-ID. |
| ApiVersion | string | Die API-Version des Ereignisses. |
| AppId (AppId) | string | Der Bezeichner für die Anwendung. |
| ATContent | string | Reserviert für zukünftige Verwendung. |
| ATContentH | string | Reserviert für zukünftige Verwendung. |
| ATContentP | string | Reserviert für zukünftige Verwendung. |
| _BilledSize | real | Die Datensatzgröße in Bytes |
| ClientAuthMethod | int | Gibt an, wie der Client authentifiziert wurde. Für einen öffentlichen Client ist der Wert 0. Wenn Client-ID und geheimer Clientschlüssel verwendet werden, ist der Wert 1. Wenn ein Clientzertifikat zur Authentifizierung verwendet wurde, ist der Wert 2. |
| ClientRequestId | string | Optional. Der Clientanforderungsbezeichner beim Senden. Wenn kein Clientanforderungsbezeichner gesendet wird, ist der Wert gleich dem Vorgangsbezeichner. |
| ConditionalAccessStatus | string | Der von Microsoft Graph für die Anforderung aufgezeichnete Status des bedingten Zugriffs. Leer, wenn kein Status aufgezeichnet wurde. |
| DeviceId | string | Die Kennung des Geräts, von dem die Authentifizierungsanforderung stammt. |
| DurationMs | int | Die Dauer der Anforderung in Millisekunden. |
| IdentityProvider | string | Der Identitätsanbieter, der den Antragsteller des Tokens authentifiziert hat. |
| IPAddress | string | Die IP-Adresse des Clients, von dem aus die Anforderung erfolgt ist. |
| _IsBillable | string | Gibt an, ob die Datenerfassung abrechenbar ist. Wenn _IsBillable ist, false wird die Erfassung nicht Ihrem Azure Konto in Rechnung gestellt |
| Ort | Zeichenfolge | Der Name der Region, in der die Anforderung verarbeitet wurde. |
| OperationId | string | Der Bezeichner für den Batch. Bei Nicht-Batchanforderungen ist dies pro Anforderung eindeutig. Bei Batchanforderungen ist dies für alle Anforderungen im Batch identisch. |
| Anfrage-ID | string | Der Bezeichner, der die Anforderung darstellt. |
| RequestMethod | string | Die HTTP-Methode des Ereignisses. |
| RequestUri | string | Der URI der Anforderung. |
| ResponseSizeBytes | int | Die Größe der Antwort in Bytes. |
| ResponseStatusCode | int | Der HTTP-Antwort-Statuscode für das Ereignis. |
| Rollen | string | Die Rollen in Tokenansprüchen. |
| Scopes | string | Die Bereiche in Tokenansprüchen. |
| ServicePrincipalId | string | Der Bezeichner des servicePrincipal, der die Anforderung stellt. |
| SessionId | string | Der eindeutige Bezeichner für die Authentifizierungssitzung. |
| SignInActivityId | string | Der Bezeichner, der die Anmeldeaktivitäten darstellt. |
| SourceSystem | string | Der Agent-Typ, von dem das Ereignis erfasst wurde. Beispielsweise OpsManager für Windows-Agents, entweder Direct Connect oder Operations Manager, Linux für alle Linux-Agents oder Azure für Azure-Diagnose |
| Mandanten-ID | string | Die Log Analytics-Arbeitsbereichs-ID |
| TimeGenerated | Datum/Uhrzeit | Das Datum und die Uhrzeit des Eingangs der Anforderung. |
| TokenIssuedAt | Datum/Uhrzeit | Der Zeitstempel, zu dem der Token ausgegeben wurde. |
| Typ | string | Der Name der Tabelle |
| UniqueTokenId | string | Der eindeutige Tokenbezeichner des API-Aufrufs, mit dem die überwachte Änderung vorgenommen wurde. |
| UserAgent | string | Die Benutzer-Agent-Informationen im Zusammenhang mit der Anforderung. |
| UserId | string | Der Bezeichner des Benutzers, der die Anforderung stellt. |
| Wids | string | Gibt die mandantenweiten Rollen an, die diesem Benutzer zugewiesen sind. |
Häufige Anwendungsfälle für Microsoft Graph-Aktivitätsprotokolle
- Zeigen Sie alle Transaktionen an, die von Anwendungen und anderen API-Clients durchgeführt wurden, denen Sie im Mandanten zugestimmt haben.
- Suchen Sie nach Aktivitäten, die ein kompromittiertes Benutzerkonto in Ihrem Mandanten ausführt.
- Erstellen Sie Erkennungen und Verhaltensanalysen, um verdächtige oder ungewöhnliche Verwendungen von Microsoft Graph-APIs zu erkennen.
- Untersuchen Sie unerwartete oder verdächtige privilegierte Zuweisungen von Anwendungsberechtigungen.
- Erkennen Sie problematische oder unerwartete Verhaltensweisen für Client-Anwendungen, z. B. extreme Anruflautstärke.
- Überwachen Sie die Interaktionen von KI-Clients mit Microsoft Graph-APIs, einschließlich Anforderungen von KI-Anwendungen und dem Microsoft MCP-Server für Unternehmen.
- Korrelieren Sie Microsoft Graph-Anforderungen eines Benutzers oder einer App mit Anmeldeinformationen.
Einrichten von Microsoft Graph-Aktivitätsprotokollen
Stream Protokolle über die Diagnoseeinstellung im Azure-Portal oder mithilfe Azure Resource Manager APIs ein. Weitere Informationen finden Sie in den folgenden Artikeln:
- Integration von Aktivitätsprotokollen mit Azure Monitor-Protokollen
- Konfigurieren von diagnosticSettings über die Azure Resource Manager API
Verwenden Sie die folgenden Artikel, um Speicherziele einzurichten:
Kostenschätzungen
Wenn Sie bereits über eine Microsoft Entra ID P1-Lizenz verfügen, benötigen Sie ein Azure-Abonnement, um den Log Analytics-Arbeitsbereich, das Speicherkonto oder Event Hubs einzurichten. Sie erhalten das Azure-Abonnement kostenlos, aber Sie zahlen für die Verwendung von Azure-Ressourcen.
Die Menge der protokollierten Daten und die anfallenden Kosten können je nach Mandantengröße und den Anwendungen in Ihrem Mandanten, die mit Microsoft Graph-APIs interagieren, erheblich variieren. Die folgende Tabelle enthält Schätzungen für die Protokolldatengröße, die Ihnen bei der Berechnung der Preise helfen. Verwenden Sie diese Schätzungen nur zur allgemeinen Überlegung.
| Benutzer im Mandanten | Speicher (GiB pro Monat) | Event Hubs-Nachrichten (pro Monat) | Azure Monitor-Protokolle (GiB pro Monat) |
|---|---|---|---|
| 1,000 | 14 | 62,000 | 15 |
| 100.000 | 1,000 | 4.800.000 | 1.200 |
Sehen Sie sich die folgenden Preisdetails für jeden Dienst an:
Kostensenkung für Log Analytics
Wenn Sie die Protokolle in einen Log Analytics-Arbeitsbereich aufnehmen, aber nur an Protokollen interessiert sind, die nach Kriterien gefiltert werden, z. B. durch das Auslassen bestimmter Spalten oder Zeilen, können Sie die Kosten teilweise senken, indem Sie eine Arbeitsbereichstransformation auf die Tabelle der Microsoft Graph-Aktivitätsprotokolle anwenden. Weitere Informationen zu Arbeitsbereichstransformationen, wie sie sich auf die Aufnahmekosten auswirken und wie Sie eine Transformation auf Ihre Microsoft Graph-Aktivitätsprotokolle anwenden, finden Sie unter Datensammlungstransformationen in Azure Monitor.
Ein alternativer Ansatz zum Senken der Log Analytics-Kosten ist der Wechsel zum Basic-Protokolldatenplan, der die Rechnungen senkt, indem weniger Funktionen bereitgestellt werden. Weitere Informationen finden Sie unter Festlegen des Protokolldatenplans einer Tabelle auf "Basic" oder "Analytics".
Beispiele für Abfragen zu Azure Monitor-Protokollen
Wenn Sie Microsoft Graph-Aktivitätsprotokolle an einen Log Analytics-Arbeitsbereich senden, können Sie die Protokolle mithilfe der Kusto-Abfragesprache (KQL) abfragen. Weitere Informationen zu Abfragen im Log Analytics-Arbeitsbereich finden Sie unter Analysieren von Microsoft Entra-Aktivitätsprotokollen mit Log Analytics. Sie können diese Abfragen für die Datenuntersuchung, zum Erstellen von Warnungsregeln oder zum Erstellen von Azure-Dashboards verwenden oder mithilfe der Azure Monitor-Protokoll-API oder des Query SDK in Ihre benutzerdefinierten Anwendungen integrieren.
Die folgende Kusto-Abfrage identifiziert die 20 wichtigsten Entitäten, die Anforderungen an Gruppenressourcen stellen, die aufgrund der Autorisierung fehlschlagen:
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
Die folgende Kusto-Abfrage identifiziert Ressourcen, die von potenziell riskanten Benutzern abgefragt oder geändert wurden:
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
Die folgende Kusto-Abfrage ermöglicht es Ihnen, die Microsoft Graph-Aktivitätsprotokolle und Anmeldeprotokolle zu korrelieren. Aktivitätsprotokolle von Microsoft-Anwendungen weisen möglicherweise nicht alle übereinstimmende Anmeldeprotokolleinträge auf. Weitere Informationen finden Sie unter Bekannte Einschränkungen der Anmeldeprotokolle.
MicrosoftGraphActivityLogs
| where TimeGenerated > ago(7d)
| join kind=leftouter (union SigninLogs, AADNonInteractiveUserSignInLogs, AADServicePrincipalSignInLogs, AADManagedIdentitySignInLogs, ADFSSignInLogs
| where TimeGenerated > ago(7d))
on $left.SignInActivityId == $right.UniqueTokenIdentifier
Die folgende Kusto-Abfrage identifiziert Apps, die gedrosselt werden:
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
Mit der folgenden Abfrage können Sie ein Zeitreihendiagramm rendern:
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
)
Begrenzungen
- Das Microsoft Graph-Feature "Aktivitätsprotokolle" ermöglicht es den Mandantenadministratoren, Protokolle für den Ressourcenmandanten zu sammeln. Mit diesem Feature können Sie die Aktivitäten einer mehrinstanzenfähigen Anwendung in einem anderen Mandanten nicht anzeigen.
- Sie können Microsoft Graph-Aktivitätsprotokolle nicht über Diagnoseeinstellungen in Azure Monitor filtern. Es stehen jedoch Optionen zur Kostensenkung im Azure Log Analytics-Arbeitsbereich zur Verfügung. Weitere Informationen finden Sie unter Workspace-Transformation.
- In den meisten Regionen sind die Ereignisse verfügbar und werden innerhalb von 30 Minuten an das Konfigurationsziel übermittelt. In weniger häufigen Fällen kann es bei einigen Ereignissen bis zu 2 Stunden dauern, bis sie an den Zielort übermittelt werden.