首页 > 解决方案 > Azure Identity 风险事件的图形 API 未提取所有事件

问题描述

我想在 Azure AD 中发生风险事件时收到电子邮件。我们是一个非常大的租户,它们经常发生。我从 Microsoft 找到了这篇文章并按照以下步骤操作:https ://docs.microsoft.com/en-us/azure/active-directory/identity-protection/graph-get-started 但是,我看到它返回的少于我在 Web 界面上看到的结果的一半。

我复制并粘贴了示例代码,填写了我的租户信息,但我只得到了一些结果。(这是我第一次使用 Graph API。)我们不关闭事件,所以我从 Graph 接收活动事件,并且有很多活动事件不是通过 Graph 来的。

我正在使用这个 URL:“ https://graph.microsoft.com/beta/identityRiskEvents ” 以下是我如何将所有结果保存到变量中:

$myReport = (Invoke-WebRequest -UseBasicParsing -Headers $headerParams -Uri $url)
$events = ($myReport.Content | ConvertFrom-Json).value

例如,在网站上,从 2019 年 4 月 4 日到今天,我有四个(活动的)凭证泄露事件,但在图表结果中,我只有一个。在网站上,我有十二个(活动的)不可能的旅行事件,但在图表中,我在同一时间跨度内只有四个。

我是否需要关闭网站上的活动才能获得正确的结果,我想知道吗?

标签: powershellazure-active-directoryazure-ad-graph-api

解决方案


当风险事件多于页面大小时,需要使用 OData $top 和 $skip 进行分页逐页查询数据。例如,以下查询返回 page1、page2 和 page3:

  • 获取 ~/beta/identityRiskEvents?$top=100
  • 获取 ~/beta/identityRiskEvents?$top=100&$skip=100
  • 获取 ~/beta/identityRiskEvents?$top=100&$skip=200

为避免深度分页,要跳过的页面有限制。因此,要查询大量风险事件,您可以添加过滤器以将数据分成一些块进行查询,例如:

GET ~beta/identityRiskEvents?$filter=riskLevel eq microsoft.graph.riskLevel'medium' 和 riskEventDateTime > 2016-04-05T00:00:56.2255665Z&$count=true

如果您对特定类型的风险事件感兴趣,比如leakedCredentials 风险事件,他们可以执行以下查询:

获取 ~/beta/leakedCredentialsRiskEvents

或者

GET ~/beta/identityRiskEvents?$filter=riskType eq 'LeakedCredentialsRiskEvent'</p>


推荐阅读