你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
使用 Azure Monitor 将 Azure Active Directory B2C(Azure AD B2C)登录和 审核 日志路由到不同的监视解决方案。 可以保留日志以供长期使用,或与第三方安全信息和事件管理(SIEM)工具集成,以便深入了解环境。
可以将日志事件路由到:
- Azure 存储帐户。
- Log Analytics 工作区(用于分析数据、创建仪表板和针对特定事件发出警报)。
- Azure 事件中心 (并与 Splunk 和 Sumo 逻辑实例集成)。
计划将 Azure AD B2C 日志传输到不同的监视解决方案或存储库时,请考虑 Azure AD B2C 日志包含个人数据。 当你处理此类数据时,请确保你对个人数据使用适当的安全措施。 包括使用适当的技术或组织措施防止未经授权或非法处理。
本文介绍如何将日志传输到 Azure Log Analytics 工作区。 然后,可以创建仪表板或创建基于 Azure AD B2C 用户活动的警报。
观看此视频,了解如何使用 Azure Monitor 为 Azure AD B2C 配置监视。
部署概述
Azure AD B2C 使用 Microsoft Entra 监控。 与 Microsoft Entra 租户不同,Azure AD B2C 租户不能有与之关联的订阅。 因此,我们需要采取额外的步骤来启用 Azure AD B2C 与 Log Analytics 之间的集成,这是我们发送日志的位置。 若要在 Azure AD B2C 租户中启用Microsoft Entra ID 中的 诊断设置 ,请使用 Azure Lighthouse委托资源,从而允许 Azure AD B2C( 服务提供商)管理Microsoft Entra ID( 客户)资源。
小窍门
Azure Lighthouse 通常用于管理多个客户的资源。 此外,它还可用于管理 企业内拥有多个Microsoft Entra租户的资源,这正是我们在这里进行的操作,只不过我们只委托单个资源组的管理。
完成本文中的步骤后,你将创建一个新的资源组(此处称为 azure-ad-b2c-monitor),并有权访问 Azure AD B2C 门户中包含 Log Analytics 工作区的同一资源组。 还可以将日志从 Azure AD B2C 传输到 Log Analytics 工作区。
在此部署期间,你将授权 Azure AD B2C 目录中的用户或组在包含 Azure 订阅的租户中配置 Log Analytics 工作区实例。 若要创建授权,请将 Azure 资源管理器 模板部署到包含 Log Analytics 工作区的订阅。
下图描述了你将在 Microsoft Entra ID 和 Azure AD B2C 租户中配置的组件。
在此部署期间,您将配置 Azure AD B2C 租户,以生成日志。 还将配置 Microsoft Entra 租户以托管 Log Analytics 工作区。 应为使用的 Azure AD B2C 帐户(例如管理员帐户)分配 Azure AD B2C 租户上的 全局管理员 角色。 用于运行部署的 Microsoft Entra 帐户必须在 Microsoft Entra 订阅中被授予 所有者 角色。 另外,请务必在完成所述的每个步骤时登录到正确的目录。
总之,您将使用 Azure Lighthouse,使 Azure AD B2C 租户中的用户或组可以管理与其他租户(Microsoft Entra 租户)关联的订阅中的资源组。 完成此授权后,可以在 Azure AD B2C 的诊断设置中选择订阅和日志分析工作区作为目标。
先决条件
在 Azure AD B2C 租户上具有全局管理员角色的 Azure AD B2C 帐户。
Microsoft Entra 订阅中具有 “所有者” 角色的 Microsoft Entra 帐户。 了解如何将 用户分配为 Azure 订阅的管理员。
1.创建或选择资源组
首先,创建或选择一个资源组,其中包含将从 Azure AD B2C 接收数据的目标 Log Analytics 工作区。 部署 Azure 资源管理器模板时请指定资源组名称。
- 登录到 Azure 门户。
- 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Microsoft Entra ID 租户。
- 创建资源组 或选择现有资源组。 此示例使用名为 azure-ad-b2c-monitor 的资源组。
2.创建 Log Analytics 工作区
Log Analytics 工作区是 Azure Monitor 日志数据的唯一环境。 你将使用此 Log Analytics 工作区从 Azure AD B2C 审核日志收集数据,然后使用查询和工作簿将其可视化,或创建警报。
- 登录到 Azure 门户。
- 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Microsoft Entra ID 租户。
- 创建 Log Analytics 工作区。 此示例在名为 azure-ad-b2c-monitor 的资源组中使用名为 AzureAdB2C 的 Log Analytics 工作区。
3. 委托资源管理
在此步骤中,选择 Azure AD B2C 租户作为 服务提供商。 还要定义将相应的 Azure 内置角色分配到 Microsoft Entra 租户中的组所需的授权。
3.1 获取 Azure AD B2C 租户 ID
首先,获取 Azure AD B2C 目录的 租户 ID (也称为目录 ID)。
- 登录到 Azure 门户。
- 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
- 选择Microsoft Entra ID,然后选择概述。
- 记录“租户 ID”。
3.2 选择安全组
现在,选择要向其授予之前在包含订阅的目录中创建的资源组的权限的 Azure AD B2C 组或用户。
为了简化管理,我们建议对每个角色使用 Microsoft Entra 用户组 ,以便向组添加或删除单个用户,而不是直接向该用户分配权限。 在本演练中,我们将添加一个安全组。
重要
若要为 Microsoft Entra 组添加权限,“组类型”必须设置为“安全”。 此选项是在创建组时选择的。 有关详细信息,请参阅使用 Microsoft Entra ID 创建基本组并添加成员。
- 在“Azure AD B2C”目录中的“Microsoft Entra ID”仍处于选中状态时,选择“组”,然后选择一个组。 如果没有现有组,请创建一个“安全”组,然后添加成员。 有关详细信息,请按照过程 创建基本组并使用 Microsoft Entra ID 添加成员。
- 选择 “概述”,并记录组 的对象 ID。
3.3 创建 Azure 资源管理器模板
为了在 Azure Lighthouse 中创建自定义授权和委派,我们使用 Azure 资源管理器模板。 此模板授予 Azure AD B2C 对之前创建的 Microsoft Entra 资源组的访问权限,例如 azure-ad-b2c-monitor。 使用“部署到 Azure”按钮从 GitHub 示例部署模板,这将打开 Azure 门户,并允许直接在门户中配置和部署模板。 对于这些步骤,请确保已登录到 Microsoft Entra 租户(而不是 Azure AD B2C 租户)。
登录到 Azure 门户。
如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Microsoft Entra ID 租户。
使用“部署到 Azure”按钮打开 Azure 门户,并直接在门户中部署模板。 有关详细信息,请参阅 创建 Azure 资源管理器模板。
在“自定义部署”页面上,输入以下信息:
领域 定义 订阅 选择创建了 azure-ad-b2c-monitor 资源组的包含 Azure 订阅的目录。 区域 选择将部署资源的区域。 Msp 套餐名称 描述此定义的名称。 例如“Azure AD B2C 监视”。 这是将在 Azure Lighthouse 中显示的名称。 MSP 套餐名称在 Microsoft Entra ID 中必须是唯一的。 若要监视多个 Azure AD B2C 租户,请使用不同的名称。 Msp 产品/服务说明 产品/服务的简短说明。 例如, 在 Azure AD B2C 中启用 Azure Monitor。 由租户 ID 进行托管 Azure AD B2C 租户的“租户 ID”(也称为目录 ID)。 授权 指定包含 Microsoft Entra ID principalId
principalIdDisplayName
和 AzureroleDefinitionId
的对象的 JSON 数组。principalId
是有权访问此 Azure 订阅中的资源的 B2C 组或用户的“对象 ID”。 对于本演练,请指定前面记下的组对象 ID。 对于roleDefinitionId
,对于参与者角色,请使用内置角色值b24988ac-6180-42a0-ab88-20f7382dd24c
。资源组名称 之前在 Microsoft Entra 租户中创建的资源组的名称。 例如,azure-ad-b2c-monitor。 下面的示例演示一个具有一个安全组的授权数组。
[ { "principalId": "<Replace with group's OBJECT ID>", "principalIdDisplayName": "Azure AD B2C tenant administrators", "roleDefinitionId": "b24988ac-6180-42a0-ab88-20f7382dd24c" } ]
部署模板后,可能需要花费几分钟时间(通常不超过五分钟)来完成资源投影。 可以在 Microsoft Entra 租户中验证部署,并获取资源投影的详细信息。 有关详细信息,请参阅 “查看和管理服务提供商”。
4.选择订阅
部署模板并等待几分钟资源投影完成之后,请按照以下步骤将订阅与 Azure AD B2C 目录相关联。
注释
在 门户设置 |“目录 + 订阅 ”页,确保 Azure AD B2C 和 Microsoft Entra 租户在 “当前 + 委派”目录下选中。
注销 Azure 门户 并使用 Azure AD B2C 管理帐户重新登录。 此帐户必须是在 “委托资源管理 ”步骤中指定的安全组的成员。 注销并重新登录可以在下一步中刷新你的会话凭据。
在门户工具栏中选择“设置”图标。
在 门户设置 |目录 + 订阅 页,在 目录名称 列表中,找到包含 Azure 订阅和创建的 azure-ad-b2c-monitor 资源组的 Microsoft Entra ID 目录,然后选择“ 切换”。
验证你选择了正确的目录,并且你的 Azure 订阅已在默认订阅筛选器中列出并选中。
5. 配置诊断设置
诊断设置定义要将资源的日志和指标发送到的位置。 可能的目标包括:
在此示例中,我们使用 Log Analytics 工作区来创建仪表板。
5.1 创建诊断设置
你已准备好在 Azure 门户中 创建诊断设置 。
若要配置 Azure AD B2C 活动日志的监视设置,请执行以下作:
使用 Azure AD B2C 管理帐户登录到 Azure 门户。 此帐户必须是在 “选择安全组 ”步骤中指定的安全组的成员。
如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
选择 Microsoft Entra ID
在“监视”下,选择“诊断设置”。
如果有用于此资源的现有设置,则会看到已配置的设置列表。 如果要添加新设置,请选择“添加诊断”设置;如果要编辑现有设置,请选择“编辑”设置。 每个设置最多只能包含一个目标类型。
为设置指定名称(如果未指定)。
选择“AuditLogs”和“SignInLogs” 。
选择“发送到 Log Analytics 工作区”,然后:
- 在“订阅”下,选择您的订阅。
- 在 Log Analytics 工作区下,选择前面创建的工作区的名称,例如
AzureAdB2C
。
注释
Azure AD B2C 租户目前仅支持 AuditLogs 和 SignInLogs 诊断设置。
选择“保存”。
注释
发出事件后,最多可能需要 15 分钟才能在 Log Analytics 工作区中显示该事件。 此外,详细了解 Active Directory 报告延迟,这可能会影响数据的过时性,并在报告中扮演重要角色。
如果看到错误消息, 若要设置诊断设置以使用 Azure AD B2C 目录的 Azure Monitor,需要设置委派的资源管理,确保使用属于 安全组 成员的用户登录并选择 订阅。
6. 可视化数据
现在,可以将 Log Analytics 工作区配置为可视化数据并配置警报。 可以在 Microsoft Entra 租户和 Azure AD B2C 租户中配置这些配置。
6.1 创建查询
日志查询可帮助你充分利用在 Azure Monitor 日志中收集的数据的价值。 使用功能强大的查询语言,只需编写极少量的代码即可联接多个表中的数据、聚合大型数据集,以及执行复杂的操作。 只要收集了支持数据,几乎可以回答和分析任何问题,并且你已了解如何构造正确的查询。 有关详细信息,请参阅 Azure Monitor 日志查询入门。
登录到 Azure 门户。
如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Microsoft Entra ID 租户。
从“Log Analytics 工作区”窗口中,选择“日志”
在查询编辑器中,粘贴以下 Kusto 查询语言 查询。 此查询显示过去 x 天内按操作列出的策略使用情况。 默认持续时间设置为 90 天 (90d)。 请注意,查询只关注由策略发出令牌/代码的操作。
AuditLogs | where TimeGenerated > ago(90d) | where OperationName contains "issue" | extend UserId=extractjson("$.[0].id",tostring(TargetResources)) | extend Policy=extractjson("$.[1].value",tostring(AdditionalDetails)) | summarize SignInCount = count() by Policy, OperationName | order by SignInCount desc nulls last
选择 运行。 查询结果显示在屏幕底部。
要保存查询以供以后使用,请选择“保存”。
填写以下详细信息:
- 名称 - 输入查询的名称。
- 另存为 - 选择 。
- 类别 - 选择 。
选择“保存”。
还可以使用 呈现 运算符更改查询以可视化数据。
AuditLogs
| where TimeGenerated > ago(90d)
| where OperationName contains "issue"
| extend UserId=extractjson("$.[0].id",tostring(TargetResources))
| extend Policy=extractjson("$.[1].value",tostring(AdditionalDetails))
| summarize SignInCount = count() by Policy
| order by SignInCount desc nulls last
| render piechart
有关更多示例,请参阅 Azure AD B2C SIEM GitHub 存储库。
6.2 创建工作簿
工作簿提供了一个灵活的画布,用于数据分析和在 Azure 门户中创建丰富的视觉报表。 它们使您能够连接多个跨 Azure 的数据来源,并将其合并为统一的交互式体验。 有关详细信息,请参阅 Azure Monitor 工作簿。
按照以下说明,使用 JSON 陈列模板创建新工作簿。 此工作簿为 Azure AD B2C 租户提供 User Insights 和 身份验证 仪表板。
登录到 Azure 门户。
如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Microsoft Entra ID 租户。
在 Log Analytics 工作区 窗口中,选择 “工作簿”。
在工具栏中,选择“ + 新建 ”选项创建新工作簿。
在“新建工作簿”页上,使用<工具栏上的/>选项选择高级编辑器。
选择“库模板”。
将 库模板 中的 JSON 替换为 Azure AD B2C 基本工作簿中的内容:
使用 “应用” 按钮应用模板。
从工具栏中选择 “完成编辑 ”按钮以完成工作簿编辑。
最后,使用工具栏中的 “保存 ”按钮保存工作簿。
提供标题,例如Azure AD B2C 仪表板。
选择“保存”。
工作簿将以仪表板的形式显示报表。
创建警报
警报由 Azure Monitor 中的警报规则创建,可以定期自动运行保存的查询或自定义日志搜索。 可以根据特定的性能指标或发生某些事件时创建警报。 还可以针对缺少事件或在特定时间范围内发生多个事件时创建警报。 例如,警报可用于在平均登录数超过特定阈值时通知你。 有关详细信息,请参阅创建警报。
使用以下说明创建新的 Azure 警报,每当总请求数与上一时间段相比下降 25% 时,该警报将发送电子邮件通知。 警报将每 5 分钟运行一次,并查找过去一小时与其前面的一小时相比的下降情况。 警报是使用 Kusto 查询语言创建的。
登录到 Azure 门户。
如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Microsoft Entra ID 租户。
在 Log Analytics 工作区中,选择 “日志”。
使用此查询创建新的 Kusto 查询 。
let start = ago(2h); let end = now(); let threshold = -25; //25% decrease in total requests. AuditLogs | serialize TimeGenerated, CorrelationId, Result | make-series TotalRequests=dcount(CorrelationId) on TimeGenerated from start to end step 1h | mvexpand TimeGenerated, TotalRequests | serialize TotalRequests, TimeGenerated, TimeGeneratedFormatted=format_datetime(todatetime(TimeGenerated), 'yyyy-MM-dd [HH:mm:ss]') | project TimeGeneratedFormatted, TotalRequests, PercentageChange= ((toreal(TotalRequests) - toreal(prev(TotalRequests,1)))/toreal(prev(TotalRequests,1)))*100 | order by TimeGeneratedFormatted desc | where PercentageChange <= threshold //Trigger's alert rule if matched.
选择 “运行”以测试查询。 如果过去一小时内请求总数下降了 25% 或更多,则会看到结果。
若要基于此查询创建警报规则,请使用工具栏中可用的 “+ 新建警报规则 ”选项。
在“创建警报规则”页上,选择“条件名称”
在 “配置信号逻辑 ”页上,设置以下值,然后使用 “完成 ”按钮保存更改。
- 设置结果数大于0的警报逻辑。
- 评价依据:选择120分钟数作为期间,以及5分钟数作为频率。
创建警报后,转到 Log Analytics 工作区 并选择 “警报”。 此页显示在时间范围选项设置的持续时间内触发的所有警报。
配置操作组
Azure Monitor 和服务运行状况警报使用操作组来通知用户某个警报已触发。 可以包括发送语音呼叫、短信、电子邮件,或触发各种类型的自动化操作。 按照指南 在 Azure 门户中创建和管理作组
下面是警报通知电子邮件的示例。
多个租户
若要将多个 Azure AD B2C 租户日志载入到同一 Log Analytics 工作区(或 Azure 存储帐户或事件中心),需要使用不同的 Msp 套餐名称 值进行单独的部署。 请确保 Log Analytics 工作区与在 “创建”或“选择资源组”中配置的资源组位于同一资源组中。
使用多个 Log Analytics 工作区时,使用 跨工作区查询 创建跨多个工作区工作的查询。 例如,以下查询基于相同的类别(例如身份验证)对来自不同租户的两个审核日志执行连接操作:
workspace("AD-B2C-TENANT1").AuditLogs
| join workspace("AD-B2C-TENANT2").AuditLogs
on $left.Category== $right.Category
更改数据保持期
Azure Monitor 日志用于调整和支持来自任何源的巨量数据的每日收集、索引和存储,这些源部署在企业或 Azure 中。 默认情况下,日志保留 30 天,但保留期可以延长到两年。 了解如何 使用 Azure Monitor 日志管理使用情况和成本。 选择定价层后,可以 更改数据保留期。
禁用监视数据收集
要停止将日志收集到 Log Analytics 工作区,请删除创建的诊断设置。 如果将已收集的日志数据保留到工作区中,将会继续产生费用。 如果不再需要收集的监视数据,则可以删除 Log Analytics 工作区和为 Azure Monitor 创建的资源组。 删除 Log Analytics 工作区会删除工作区中的所有数据,并防止产生额外的数据保留费用。
删除 Log Analytics 工作区和资源组
- 登录到 Azure 门户。
- 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Microsoft Entra ID 租户。
- 选择包含 Log Analytics 工作区的资源组。 此示例使用名为 azure-ad-b2c-monitor 的资源组和一个名为
AzureAdB2C
的 Log Analytics 工作区。 - 删除 Logs Analytics 工作区。
- 选择“删除”按钮以删除资源组。
后续步骤
在 Azure AD B2C SIEM 库中查找更多示例。
有关在 Azure Monitor 中添加和配置诊断设置的详细信息,请参阅 教程:从 Azure 资源收集和分析资源日志。
有关将 Microsoft entra 日志流式传输到事件中心的信息,请参阅 教程:将 Microsoft Entra 日志流式传输到 Azure 事件中心。