如何查看应用通过Microsoft Graph API发起的请求并生成查询报告?
查看应用通过Microsoft Graph API发起的GET请求并生成报告
可以实现,核心是通过Azure AD审计日志或Microsoft 365审计日志获取应用调用Graph API的记录,再用PowerShell过滤、导出成指定时间段的报告。以下是具体操作:
前提条件
- 拥有全局管理员、审计管理员或等效权限
- 已安装
Microsoft.Graph模块(推荐)或AzureAD/ExchangeOnlineManagement模块 - 日志保留期足够覆盖目标时间段(Azure AD免费版默认30天,付费版最长可达1年)
操作步骤
1. 使用Microsoft Graph PowerShell模块获取Azure AD审计日志
适用于所有经过Azure AD认证的应用Graph请求:
- 连接到Microsoft Graph:
Connect-MgGraph -Scopes "AuditLog.Read.All" - 定义时间范围并筛选GET请求:
# 设置目标时间段(示例:过去7天) $startDate = (Get-Date).AddDays(-7).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ') $endDate = (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ') # 过滤Graph API的GET类操作 $graphGetLogs = Get-MgAuditLogDirectoryAudit -Filter "activityDateTime ge $startDate and activityDateTime le $endDate" | Where-Object { $_.OperationName -like "*Get*" -and $_.TargetResources.DisplayName -contains "Microsoft Graph" } - 导出为CSV报告:
$graphGetLogs | Select-Object ActivityDateTime, OperationName, @{Name="InitiatedApp"; Expression={$_.InitiatedBy.App.DisplayName}}, TargetResources | Export-Csv -Path "Graph_Get_Requests_Report.csv" -NoTypeInformation
2. 使用Exchange Online模块获取Microsoft 365审计日志
如需覆盖Exchange、SharePoint等服务的Graph请求,可采用此方法:
- 连接到Exchange Online:
Connect-ExchangeOnline - 查询并筛选Graph GET请求:
$startDate = (Get-Date).AddDays(-7) $endDate = Get-Date $m365GraphLogs = Search-UnifiedAuditLog -StartDate $startDate -EndDate $endDate -RecordType "AzureActiveDirectory" | Where-Object { $_.Operation -like "*Get*" -and $_.AuditData -match '"Service":"Microsoft Graph"' } - 导出报告:
$m365GraphLogs | Select-Object CreationDate, Operation, UserIds, AuditData | Export-Csv -Path "M365_Graph_Get_Requests.csv" -NoTypeInformation
注意事项
- 部分Graph操作的
OperationName是具体名称(如"Get User"、"Get Group"),可调整-like "*Get*"规则匹配更多场景 - 如需仅查看应用发起的请求,可在过滤条件中添加:
$_.InitiatedBy.App -ne $null
内容的提问来源于stack exchange,提问作者drawbridge_user
相关产品推荐
相关产品推荐

