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"
后续步骤