Zugreifen auf Microsoft Graph-Aktivitätsprotokolle
Microsoft Graph-Aktivitätsprotokolle sind ein Überwachungsprotokoll aller HTTP-Anforderungen, die der Microsoft Graph-Dienst für einen Mandanten empfangen und verarbeitet hat. Mandantenadministratoren können die Sammlung aktivieren und Downstreamziele für diese Protokolle mithilfe von Diagnoseeinstellungen in Azure Monitor konfigurieren. Die Protokolle werden zur Analyse in Log Analytics gespeichert. Sie können sie zur langfristigen Speicherung oder zum Streamen in Azure Storage exportieren, indem Sie Azure Event Hubs zu externen SIEM-Tools für Warnungen, Analysen oder Archivierung verwenden.
Alle Protokolle für API-Anforderungen, die von Branchenanwendungen, API-Clients, SDKs und von Microsoft-Anwendungen wie Outlook, Microsoft Teams oder den Microsoft Entra Admin Center gesendet werden, sind verfügbar.
Dieser Dienst ist in den folgenden nationalen Cloudbereitstellungen verfügbar.
Weltweiter Service | US Government L4 | US Government L5 (DOD) | China, betrieben von 21Vianet |
---|---|---|---|
✅ | ✅ | ✅ | ❌ |
Voraussetzungen
Für den Zugriff auf die Microsoft Graph-Aktivitätsprotokolle benötigen Sie die folgenden Berechtigungen.
- Eine Microsoft Entra ID P1- oder P2-Mandantenlizenz in Ihrem Mandanten.
- Ein Administrator mit einer unterstützten Microsoft Entra Administratorrolle. Sicherheitsadministrator ist die einzige Administratorrolle mit den geringsten Berechtigungen, die zum Konfigurieren von Diagnoseeinstellungen unterstützt wird.
- Es werden ein Azure-Abonnement mit einem der folgenden Protokollziele und Berechtigungen für den Zugriff auf Daten in den entsprechenden Protokollzielen konfiguriert.
- Einen Azure Log Analytics-Arbeitsbereich zum Senden von Protokollen an Azure Monitor
- Ein Azure Storage-Konto, für das Sie über Berechtigungen zum Auflisten von Schlüsseln verfügen
- Ein Azure Event Hubs Namespace für die Integration in Drittanbieterlösungen
Welche Daten sind in den Microsoft Graph-Aktivitätsprotokollen verfügbar?
Die folgenden Daten zu API-Anforderungen sind für Microsoft Graph-Aktivitätsprotokolle auf der Logs Analytics-Schnittstelle verfügbar.
Spalte | Typ | Beschreibung |
---|---|---|
AadTenantId | string | Die Azure AD-Mandanten-ID. |
ApiVersion | string | Die API-Version des Ereignisses. |
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 für die 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. |
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 aufgetreten ist. |
_IsBillable | string | Gibt an, ob die Erfassung der Daten abrechenbar ist. Wenn _IsBillable false erfassung nicht ihrem Azure-Konto in Rechnung gestellt wird |
Ort | Zeichenfolge | Der Name der Region, die die Anforderung verarbeitet hat. |
OperationId | string | Der Bezeichner für den Batch. Bei Anforderungen ohne Batchverarbeitung 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 | Die HTTP-Antwort status Code 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. |
SignInActivityId | string | Der Bezeichner, der die Anmeldeaktivitäten darstellt. |
SourceSystem | string | Der Typ des Agents, von dem das Ereignis erfasst wurde. Beispielsweise OpsManager für den Windows-Agent, entweder direkte Verbindung oder Operations Manager, Linux für alle Linux-Agents oder Azure für Azure-Diagnose |
TenantId | string | Die Log Analytics-Arbeitsbereichs-ID |
TimeGenerated | Datum/Uhrzeit | Das Datum und die Uhrzeit, zu der die Anforderung empfangen wurde. |
TokenIssuedAt | Datum/Uhrzeit | Der Zeitstempel, an dem das Token ausgestellt wurde. |
Typ | string | Der Name der Tabelle |
UserAgent | string | Die Benutzer-Agent-Informationen im Zusammenhang mit der Anforderung. |
UserId | string | Der Bezeichner des Benutzers, der die Anforderung stellt. |
Wids | string | Bezeichnet die mandantenweiten Rollen, die diesem Benutzer zugewiesen sind. |
Häufige Anwendungsfälle für Microsoft Graph-Aktivitätsprotokolle
- Erhalten Sie vollständigen Einblick in die Transaktionen von Anwendungen und anderen API-Clients, denen Sie im Mandanten zugestimmt haben.
- Identifizieren Sie die Aktivitäten, die ein kompromittiertes Benutzerkonto in Ihrem Mandanten durchgeführt hat.
- Erstellen Sie Erkennungen und Verhaltensanalysen, um verdächtige oder anomale Verwendung von Microsoft Graph-APIs zu identifizieren.
- Untersuchen Sie unerwartete oder verdächtige Zuweisung privilegierter Anwendungsberechtigungen.
- Identifizieren Sie problematisches oder unerwartetes Verhalten für Clientanwendungen, z. B. extreme Aufrufvolumen.
- Korrelieren Sie Microsoft Graph-Anforderungen eines Benutzers oder einer App mit Anmeldeinformationen.
Konfigurieren für den Empfang der Microsoft Graph-Aktivitätsprotokolle
Sie können das Streamen der Protokolle über die Diagnoseeinstellung im Azure-Portal oder über Azure Resource Manager-APIs konfigurieren. Weitere Informationen finden Sie in den folgenden Artikeln:
- Integrieren von Aktivitätsprotokollen in Azure Monitor-Protokolle
- Konfigurieren von diagnosticSettings über die Azure Resource Manager-API
In den folgenden Artikeln erfahren Sie, wie Sie die Speicherziele konfigurieren:
Kostenplanungsschä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. Das Azure-Abonnement ist kostenlos, aber Sie müssen für die Nutzung von Azure-Ressourcen bezahlen.
Die Menge der protokollierten Daten und somit 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 einige Schätzungen für die Protokolldatengröße, um die Preisberechnung zu unterstützen. Verwenden Sie diese Schätzungen nur zu allgemeinen Überlegungen.
Benutzer im Mandanten | Speicher-GiB/Monat | Event Hubs-Nachrichten/Monat | Azure Monitor-Protokolle (GiB/Monat) |
---|---|---|---|
1000 | 14 | 62K | 15 |
100000 | 1000 | 4,8 M | 1200 |
Sehen Sie sich die folgenden Preisberechnungen für die jeweiligen Dienste an:
Kostensenkung für Log Analytics
Wenn Sie die Protokolle in einem Log Analytics-Arbeitsbereich erfassen, aber nur an Protokollen interessiert sind, die nach einem Kriterium gefiltert wurden, z. B. das Auslassen bestimmter Spalten oder Zeilen, können Sie die Kosten teilweise senken, indem Sie eine Arbeitsbereichstransformation auf die Tabelle Microsoft Graph-Aktivitätsprotokolle anwenden. Weitere Informationen zu Arbeitsbereichstransformationen, deren Auswirkungen auf die Erfassungskosten und zum Anwenden einer Transformation auf Ihre Microsoft Graph-Aktivitätsprotokolle finden Sie unter Transformationen der Datensammlung in Azure Monitor.
Ein alternativer Ansatz zum Reduzieren der Log Analytics-Kosten besteht darin, zum Standard-Protokolldatenplan zu wechseln, der die Rechnungen senkt, indem reduzierte Funktionen bereitgestellt werden. Weitere Informationen finden Sie unter Festlegen des Protokolldatenplans einer Tabelle auf Basic oder Analytics.
Abfragebeispiele für Azure Monitor-Protokolle
Wenn Sie Microsoft Graph-Aktivitätsprotokolle an einen Log Analytics-Arbeitsbereich senden, können Sie die Protokolle mithilfe von Kusto-Abfragesprache (KQL) abfragen. Weitere Informationen zu Abfragen im Log Analytics-Arbeitsbereich finden Sie unter Analysieren Microsoft Entra Aktivitätsprotokolle mit Log Analytics. Sie können diese Abfragen zum Durchsuchen von Daten verwenden, um Warnungsregeln zu erstellen, Azure-Dashboards zu erstellen oder mit der Azure Monitor-Protokoll-API oder dem Abfrage-SDK in Ihre benutzerdefinierten Anwendungen zu 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
Mit der folgenden Kusto-Abfrage können Sie die Microsoft Graph-Aktivitätsprotokolle und Anmeldeprotokolle korrelieren. Aktivitätsprotokolle von Microsoft-Anwendungen enthalten möglicherweise nicht alle übereinstimmenden Anmeldeprotokolleinträge. Weitere Informationen finden Sie unter Bekannte Einschränkungen für 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
- Mit dem Feature "Microsoft Graph-Aktivitätsprotokolle" können Mandantenadministratoren Protokolle für den Ressourcenmandanten 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 Kostenreduzierung im Azure Log Analytics-Arbeitsbereich zur Verfügung. Weitere Informationen finden Sie unter Arbeitsbereichstransformation.
- 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 bis zu 2 Stunden dauern, bis einige Ereignisse an das Ziel übermittelt werden.