Azure 流分析支持为 Azure 数据资源管理器输出进行托管标识身份验证。 Azure 资源的托管标识是一项跨 Azure 功能,可便于用户创建与其中运行应用程序代码的部署关联的安全标识。 然后可以将该标识与访问控制角色进行关联,后者授予的自定义权限可用于访问应用程序需要的特定 Azure 资源。
借助托管标识,Azure 平台可管理此运行时标识。 对于标识本身或需要访问的资源,都不需要在应用程序代码或配置中存储和保护访问密钥。 有关 Azure 流分析的托管标识的详细信息,请参阅 Azure 流分析的托管标识。
本文介绍如何通过 Azure 门户为流分析作业的 Azure 数据资源管理器输出启用系统分配或用户分配的托管标识。 必须先具有流分析作业和 Azure 数据资源管理器资源,然后才能启用托管标识。
Important
- Azure 数据资源管理器仅支持用于身份验证的 托管标识 。 无法使用连接字符串或密钥向 Azure 数据资源管理器群集进行身份验证。
- 权限在 Azure 数据资源管理器数据库级别授予,而不是在群集 IAM 级别授予。
创建托管标识
首先,为您的 Azure 流分析 工作创建一个托管标识。
在 Azure 门户中,打开 Azure 流分析作业。
在左侧导航菜单中,选择“设置”下的“托管标识”。
选择工具栏上的“选择标识”。
在选择标识窗格中,对于用于作业的标识,选择系统分配。 或者,如果希望跨多个作业使用可重用标识,则可以启用 用户分配的托管标识 。
选择“保存”。
在 Microsoft Entra ID 中,为流分析作业的标识创建了一个服务主体。 新建标识的生命周期将由 Azure 管理。 删除流分析作业时,Azure 会自动删除关联的标识(即服务主体)。
在系统分配标识和用户分配标识之间进行选择
| 标识类型 | 何时使用 |
|---|---|
| 系统分配 | 更简单的设置;生命周期与流分析作业相关联 |
| 用户分配 | 可跨多个作业重复使用;适用于集中式访问控制 |
有关用户分配的托管标识的详细信息,请参阅 使用 Azure 流分析的用户分配托管标识。
保存配置时,服务主体的对象 ID(OID)将列为主体 ID,如下所示:
服务主体的名称与流分析作业相同。 例如,如果作业的名称是 MyASAJob,则服务主体的名称也是 MyASAJob。
向流分析作业授予访问 Azure 数据资源管理器的权限
要使流分析作业能够使用托管标识访问 Azure 数据资源管理器数据库,创建的服务主体必须具有对 Azure 数据资源管理器 数据库的特殊权限。 在此步骤中,您将在数据库级别为流分析作业的托管身份分配角色。
Azure 数据资源管理器提供以下用于数据库访问的内置角色。 对于 Azure 流分析,你需要这两个角色:
| 角色 | Permissions |
|---|---|
| 引入器 | 可以将数据引入数据库中的所有现有表,但不能查询数据。 |
| Monitor | 可以在数据库及其子实体的上下文中执行 .show 命令。 |
分配数据库权限
在 Azure 门户中,打开 Azure 数据资源管理器群集。
从左侧导航菜单中选择 “数据库 ”,然后选择目标数据库。
从左侧导航菜单中选择 “权限 ”。
选择 “添加 ”并选择 “引入器”。
搜索并选择流分析作业的托管标识(其名称与流分析作业相同)。
选择 “选择 ”以确认。
重复步骤 4-6 以添加 监视器 角色。
注释
由于全局复制或缓存延迟,在撤销或授予权限时可能会有延迟。 更改应在 8 分钟内反映出来。
添加 Azure 数据资源管理器作为输出
现在托管标识已配置完毕,您可以准备将 Azure 数据资源探查器资源作为输出添加到流分析作业。
转到你的流分析作业,然后导航到 作业拓扑 下的 输出 页面。
选择添加> Azure 数据浏览器。
在“输出属性”窗口中,搜索并选择 Azure 数据资源管理器群集或键入群集的 URL,然后从“身份验证模式”下拉菜单中选择“托管标识: 系统分配”。
填写其余属性,包括:
- 数据库名称:Azure 数据资源管理器群集中的目标数据库
- 表名称:将引入数据的目标表
选择“保存”。
确保表架构兼容性
若要成功引入,流分析查询输出必须与 Azure 数据资源管理器表架构匹配:
- 列名 必须完全匹配(区分大小写)
- 数据类型 必须兼容
- 列顺序 应与表架构保持一致
多余或不匹配的列会导致数据导入失败。 流分析使用 CSV 引入将数据发送到 Azure 数据资源管理器。
Tip
.show table <TableName> schema as json使用 Azure 数据资源管理器中的命令验证表架构是否与流分析查询输出匹配。
故障排除清单
如果遇到问题,请验证以下内容:
- ✔️ 已在流分析作业中启用托管标识
- ✔️ 标识在数据库级别添加为 数据库引入器 和 数据库监视器 (而不是群集 IAM)
- ✔️ 流分析作业中配置了 Azure 数据资源管理器输出
- ✔️ 表架构与流分析查询输出完全匹配
- ✔️ 权限传播已过足够的时间(最多 8 分钟)