Microsoft Entra ID 治理自定义警报

当组织中的人员需要采取操作(例如:批准访问资源的请求)或业务流程无法正常运行(例如:无法预配新员工)时,可以通过 Microsoft Entra ID 治理轻松向他们发出警报。

下表概述了 Microsoft Entra ID 治理提供的一些标准通知、组织中的目标角色、预期会在哪种情况下向他们发出警报,以及他们在多久后会收到警报。

现有标准通知的示例

角色 警报方法 时效性 示例警报
最终用户 Teams 分钟数 你需要批准或拒绝此访问请求;
你请求的访问权限已获批准,可以开始使用新应用。

了解详细信息
最终用户 Teams 你请求的访问权限将于下周过期,请续订。了解详细信息
最终用户 电子邮件 欢迎使用 Woodgrove,这是你的临时访问密码。 了解详细信息
技术支持 ServiceNow 分钟数 需要手动将用户预配到旧版应用程序中。 了解详细信息
IT 运营 电子邮件 小时 不会从 Workday 导入新雇用的员工。 了解详细信息

自定义警报通知

除了 Microsoft Entra ID 治理提供的标准通知之外,组织还可以创建自定义警报来满足其需求。

Microsoft Entra ID 治理服务执行的所有活动都会记录到 Microsoft Entra 审核日志中。 通过将日志推送到 Log Analytics 工作区,组织可以创建自定义警报

以下部分提供了客户可以通过将 Microsoft Entra ID 治理与 Azure Monitor 集成来创建的自定义警报的示例。 通过使用 Azure Monitor,组织可以自定义生成何种警报、接收警报的人员以及接收警报的方式(电子邮件、短信、技术支持票证等)。

功能 示例警报
访问评审 删除访问评审时向 IT 管理员发出警报。
权利管理 在不使用访问包的情况下将用户直接添加到组时,向 IT 管理员发出警报。
权利管理 添加新的连接组织时向 IT 管理员发出警报。
权利管理 当自定义扩展失败时向 IT 管理员发出警报。
权利管理 创建或更新权利管理访问包分配策略而无需批准时,向 IT 管理员发出警报。
生命周期工作流 当特定工作流失败时向 IT 管理员发出警报。
多租户协作 启用跨租户同步时向 IT 管理员发出警报
多租户协作 启用跨租户访问策略时向 IT 管理员发出警报
Privileged Identity Management 禁用 PIM 警报时向 IT 管理员发出警报。
Privileged Identity Management 在 PIM 外部授予角色时,会向 IT 管理员发出警报。
预配 当过去一天内预配失败次数激增时向 IT 管理员发出警报。
预配 当有人启动、停止、禁用、重启或删除预配配置时向 IT 管理员发出警报。
预配 预配作业进入隔离区时向 IT 管理员发出警报。

访问评审

删除访问评审时向 IT 管理员发出警报。

查询

AuditLogs
| where ActivityDisplayName == "Delete access review"

权利管理

在不使用访问包的情况下将用户直接添加到组时,向 IT 管理员发出警报。

查询

AuditLogs
| where parse_json(tostring(TargetResources[1].id)) in ("InputGroupID", "InputGroupID")
| where ActivityDisplayName == "Add member to group"
| extend ActorName = tostring(InitiatedBy.app.displayName)
| where ActorName != "Azure AD Identity Governance - User Management"

创建新的连接组织时向 IT 管理员发出警报。 此组织中的用户现在可以请求访问为所有连接组织提供的资源。

查询

AuditLogs
| where ActivityDisplayName == "Create connected organization"
| mv-expand AdditionalDetails
| extend key = AdditionalDetails.key, value = AdditionalDetails.value
| extend tostring(key) == "Description"
| where key == "Description"
| parse value with * "\n" TenantID 
| distinct TenantID

权利管理自定义扩展失败时向 IT 管理员发出警报。

查询

AuditLogs
| where ActivityDisplayName == "Execute custom extension"
| where Result == "success"
| mvexpand TargetResources 
| extend  CustomExtensionName=TargetResources.displayName
| where CustomExtensionName in ('<input custom exteionsion name>', '<input custom extension name>')

创建或更新权利管理访问包分配策略而无需批准时,向 IT 管理员发出警报。

查询

AuditLogs
| where ActivityDisplayName in ("Create access package assignment policy", "Update access package assignment policy")
| extend AdditionalDetailsParsed = parse_json(AdditionalDetails)
| mv-expand AdditionalDetailsParsed
| extend Key = tostring(AdditionalDetailsParsed.key), Value = tostring(AdditionalDetailsParsed.value)
| summarize make_set(Key), make_set(Value) by ActivityDisplayName, CorrelationId
| where set_has_element(set_Key, "IsApprovalRequiredForAdd") and set_has_element(set_Value, "False")
| where set_has_element(set_Key, "SpecificAllowedTargets") and not(set_has_element(set_Value, "None"))

生命周期工作流

当特定生命周期工作流失败时向 IT 管理员发出警报。

查询

AuditLogs
| where Category == "WorkflowManagement"
| where ActivityDisplayName in ('On-demand workflow execution completed', 'Scheduled workflow execution completed')
| where Result != "success"
| mvexpand TargetResources 
| extend  WorkflowName=TargetResources.displayName
| where WorkflowName in ('input workflow name', 'input workflow name')
| extend WorkflowType = AdditionalDetails[0].value 
| extend DisplayName = AdditionalDetails[1].value 
| extend ObjectId = AdditionalDetails[2].value 
| extend UserCount = AdditionalDetails[3].value 
| extend Users = AdditionalDetails[4].value 
| extend RequestId = AdditionalDetails[5].value 
| extend InitiatedBy = InitiatedBy.app.displayName 
| extend Result = Result 
| project WorkflowType, DisplayName, ObjectId, UserCount, Users, RequestId, Id, Result,ActivityDisplayName

警报逻辑

  • 依据:结果数
  • 运算符:等于
  • 阈值:0

多租户协作

新建跨租户访问策略时向 IT 管理员发出警报。 这样,你的组织便可以检测何时与新组织建立了关系。

查询

AuditLogs
| where OperationName == "Add a partner to cross-tenant access setting"
| where parse_json(tostring(TargetResources[0].modifiedProperties))[0].displayName == "tenantId"
| extend initiating_user=parse_json(tostring(InitiatedBy.user)).userPrincipalName
| extend source_ip=parse_json(tostring(InitiatedBy.user)).ipAddress
| extend target_tenant=parse_json(tostring(TargetResources[0].modifiedProperties))[0].newValue
| project TimeGenerated, OperationName,initiating_user,source_ip, AADTenantId,target_tenant
| project-rename source_tenant= AADTenantId

作为管理员,当入站跨租户同步策略设置为 true 时,我可以收到警报。 这样,你的组织便可以检测何时授权了某个组织将标识同步到你的租户中。

查询

AuditLogs
| where OperationName == "Update a partner cross-tenant identity sync setting"
| extend a = tostring(TargetResources)
| where a contains "true"
| where parse_json(tostring(TargetResources[0].modifiedProperties))[0].newValue contains "true"

警报逻辑

Privileged identity management

禁用特定的 PIM 安全警报时向 IT 管理员发出警报。

查询

AuditLogs
| where ActivityDisplayName == "Disable PIM alert"

将用户添加到 PIM 外部的角色时,会向 IT 管理员发出警报

下面的查询基于 templateId。 可在此处找到模板 ID 的列表。

查询

AuditLogs
| where ActivityDisplayName == "Add member to role"
| where parse_json(tostring(TargetResources[0].modifiedProperties))[2].newValue in ("\"INPUT GUID\"")

预配

当 24 小时内预配失败次数激增时向 IT 管理员发出警报。 在日志分析中配置警报时,将聚合粒度设置为 1 天。

查询

AADProvisioningLogs
| where JobId == "<input JobId>"
| where resultType == "Failure"

警报逻辑

  • 依据:结果数
  • 运算符:大于
  • 阈值:10

当有人启动、停止、禁用、重启或删除预配配置时向 IT 管理员发出警报。

查询

AuditLogs
| where ActivityDisplayName in ('Add provisioning configuration','Delete provisioning configuration','Disable/pause provisioning configuration', 'Enable/restart provisioning configuration', 'Enable/start provisioning configuration')

预配作业进入隔离状态时向 IT 管理员发出警报

查询

AuditLogs
| where ActivityDisplayName == "Quarantine"

后续步骤