将 Microsoft Entra 活动日志与 Azure Monitor 日志集成之后,可以使用 Log Analytics 和 Azure Monitor 日志的强大功能来深入了解自己的环境。
比较 Microsoft Entra 登录日志与 Microsoft Defender for Cloud 发布的安全日志。
通过从 Azure Application Insights 关联应用程序性能数据,可以解决应用程序登录页上的性能瓶颈。
本文介绍如何在 Log Analytics 工作区中分析 Microsoft Entra 活动日志。
先决条件
若要使用 Log Analytics 分析活动日志,需要:
- 一个正常运行的 Microsoft Entra 租户,且与之关联的 Microsoft Entra ID P1 或 P2 许可证。
- 一个 Log Analytics 工作区和对该工作区的访问权限
- Azure Monitor 和 Microsoft Entra ID 的相应角色
Log Analytics 工作区
必须创建 Log Analytics 工作区。 有多种因素决定对 Log Analytics 工作区的访问权限。 需要为工作区以及需要发送数据的资源分配合适的角色。
有关详细信息,请参阅管理对 Log Analytics 工作区的访问权限。
Azure Monitor 角色
Azure Monitor 提供两个内置角色,用于查看监视数据和编辑监视设置。 Azure 基于角色的访问控制 (RBAC) 还提供两个授予类似访问权限的 Log Analytics 内置角色。
视图:
- 监视查阅者
- Log Analytics 读者
查看和修改设置:
- 监控贡献者
- Log Analytics 参与者
有关 Azure Monitor 内置角色的详细信息,请参阅 Azure Monitor 中的角色、权限和安全性。
有关 Log Analytics 角色的详细信息,请参阅 Azure 内置角色
Microsoft Entra 角色
只读访问权限允许查看工作簿内的 Microsoft Entra ID 日志数据、从 Log Analytics 查询数据或在 Microsoft Entra 管理中心读取日志。 更新访问权限增加了创建和编辑诊断设置的功能,以便将 Microsoft Entra 数据发送到 Log Analytics 工作区。
读取:
- 报告阅读器
- 安全阅读器
- 全局读取者
更新:
- 安全管理员
有关 Microsoft Entra 内置角色的详细信息,请参阅 Microsoft Entra 内置角色。
访问 Log Analytics
若要查看 Microsoft Entra ID Log Analytics,必须已将活动日志从 Microsoft Entra ID 发送到 Log Analytics 工作区。 如何将活动日志与 Azure Monitor 集成一文中介绍了此过程。
至少以报告读取者身份登录到 Microsoft Entra 管理中心。
浏览到 Entra ID>监控与健康>Log Analytics。 此时将运行默认搜索查询。
展开“LogManagement”类别以查看与日志相关的查询的列表。
选择查询名称或悬停在查询名称上方,查看说明和其他有用的详细信息。
从列表中展开查询以查看架构。
查询活动日志
您可以对正在路由到 Log Analytics 工作区的活动日志运行查询。 例如,若要获取上周登录次数最多的应用程序列表,请输入以下查询并选择“运行”按钮。
SigninLogs
| where CreatedDateTime >= ago(7d)
| summarize signInCount = count() by AppDisplayName
| sort by signInCount desc
若要查找有风险的登录事件,请使用以下查询:
SigninLogs
| where RiskState contains "atRisk"
若要获取最近一周发生最多的审核事件,可使用以下查询:
AuditLogs
| where TimeGenerated >= ago(7d)
| summarize auditCount = count() by OperationName
| sort by auditCount desc
将每天的配置事件按操作进行汇总统计:
AADProvisioningLogs
| where TimeGenerated > ago(7d)
| summarize count() by Action, bin(TimeGenerated, 1d)
选取 100 个配置事件,并显示其关键属性:
AADProvisioningLogs
| extend SourceIdentity = parse_json(SourceIdentity)
| extend TargetIdentity = parse_json(TargetIdentity)
| extend ServicePrincipal = parse_json(ServicePrincipal)
| where tostring(SourceIdentity.identityType) == "Group"
| project tostring(ServicePrincipal.Id), tostring(ServicePrincipal.Name), ModifiedProperties, JobId, Id, CycleId, ChangeId, Action, SourceIdentity.identityType, SourceIdentity.details, TargetIdentity.identityType, TargetIdentity.details, ProvisioningSteps
| take 100
Log Analytics 中的多个登录记录
分析Microsoft Entra ID 登录日志时,你可能会注意到 Log Analytics 显示单一用户登录的多个记录,而 Microsoft Entra ID 登录日志视图仅显示一个记录。 这是预期的行为。
为何显示多个记录
在交互式登录期间,用户可能会生成多个请求,这些请求都共享相同的关联 ID。 例如:
- 用户尝试登录并提示进行多重身份验证(MFA)。
- 第一次 MFA 尝试失败。
- 用户重试 MFA 并成功。
在Microsoft Entra ID 登录日志中,这些相关请求合并到单一登录事件中。 门户聚合具有相同关联 ID 的所有活动,并报告最终结果,因此登录显示为成功。
每个请求单独发送,这意味着 Log Analytics 显示:
- 中间故障记录。
- 最后一个成功的条目。
所有条目共享相同的关联 ID。
解释这些日志
由于 Log Analytics 显示每个请求,因此似乎存在重复项。 但是,这些步骤是单一登录流程的不同阶段。
正确解释这些事件:
- 按关联 ID 对所有记录进行分组。
- 将该关联 ID 的最终状态用作有效结果。
- (可选)合并 KQL 中的记录以创建类似于 Microsoft Entra 管理中心的聚合视图。
以下示例演示如何按关联 ID 合并记录:
SigninLogs
| summarize
FirstSeen = min(TimeGenerated),
LastSeen = max(TimeGenerated),
FinalStatus = arg_max(TimeGenerated, ResultType, ConditionalAccessStatus),
Count = count()
by CorrelationId, UserPrincipalName