通过

使用托管标识从 Azure 流分析作业中访问 Azure Cosmos DB

Azure Stream Analytics 支持 Azure Cosmos DB 输出的托管身份身份验证。 托管标识消除了基于用户的身份验证方法的限制,例如,由于每隔 90 天进行一次密码更改(否则用户令牌会过期),需要重新进行身份验证。 当你不再需要手动进行身份验证时,流分析部署可以完全自动化。 

在 Microsoft Entra ID 中注册的托管标识是一个表示特定 Stream Analytics 工作的托管应用程序。 托管应用程序用于对目标资源进行身份验证。 有关 Azure 流分析的托管标识的详细信息,请参阅 Azure 流分析的托管标识

本文介绍如何通过 Azure 门户为 Azure Cosmos DB 输出的流分析作业启用系统分配的托管标识。 必须先拥有流分析作业和 Azure Cosmos DB 资源,然后才能启用系统分配的托管标识。

创建托管标识

首先,为你的 Azure Stream Analytics 作业创建托管标识。 

  1. 在 Azure 门户中,打开 Azure 流分析作业。 

  2. 从左侧导航菜单中,选择配置下的托管身份。 然后,选中“使用系统分配的托管标识”旁的框,然后选择“保存”。

    系统分配的托管标识

  3. 微软 Entra ID 中创建了用于流分析作业标识的服务主体。 新创建的标识的生命周期由Azure管理。 删除流分析作业后,Azure会自动删除关联的标识(即服务主体)。 

    保存配置后,服务主体的对象 ID (OID) 将列为主体 ID,如下所示:

    主体 ID

    服务主体的名称与流分析作业相同。 例如,如果作业的名称是 MyASAJob,则服务主体的名称也是 MyASAJob。 

授予流分析作业访问 Azure Cosmos DB 帐户的权限

为了使流分析作业能够使用托管标识访问 Azure Cosmos DB,您创建的服务主体必须对您的 Azure Cosmos DB 帐户具有特殊权限。 在此步骤中,您可以将角色分配给您的流分析作业的系统分配的托管标识。 Azure Cosmos DB 具有多个内置角色,可以分配给托管标识。 对于此解决方案,你将使用以下角色:

内置角色
Cosmos DB 内置数据参与者

重要

Azure Cosmos DB 数据平面的内置基于角色的访问控制(RBAC)无法通过 Azure 门户公开。 若要分配 Cosmos DB 内置数据参与者角色,必须通过Azure Powershell授予权限。 有关 Microsoft Entra ID 中的 Azure Cosmos DB 帐户的基于角色的访问控制的详细信息,请参阅 配置 Microsoft Entra ID 中的 Azure Cosmos DB 帐户的基于角色的访问控制文档。

以下命令可用于使用 Azure Cosmos DB 对 ASA 作业进行身份验证。 $accountName$resourceGroupName适用于你的 Azure Cosmos DB 帐户,$principalId是在 ASA 作业的“标识”选项卡中获取的值。 需要对你的 Azure Cosmos DB 帐户具备“贡献者”访问权限,以确保命令正常运行。

New-AzCosmosDBSqlRoleAssignment -AccountName $accountName -ResourceGroupName $resourceGroupName -RoleDefinitionId 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb' -Scope "/" -PrincipalId $principalId

注意事项

由于全局复制或缓存延迟,在撤销或授予权限时可能会有延迟。 更改应在 10 分钟内反映出来。 尽管测试连接最初可以通过,但在权限完全传播之前启动作业时,作业可能会失败。

重要

如果 CosmosDB 帐户未配置为接受来自所有网络的连接,则必须选择接受来自公共 Azure 数据中心的连接

将 Azure Cosmos DB 添加为输出

配置托管标识后,即可将 Azure Cosmos DB 资源作为输出添加到流分析作业。 

  1. 转到您的流分析作业,然后导航到“作业拓扑”下的“输出”页面。

  2. 选择 添加 > Azure Cosmos DB。 在输出属性窗口中,搜索并选择 Azure Cosmos DB 帐户,然后从 身份验证模式下拉菜单中选择 Managed Identity: System assigned

  3. 填写其余属性并选择“保存”。

后续步骤