你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用托管标识运行更新策略

在以下情况下,必须使用 托管标识 配置更新策略:

  • 当更新策略查询引用其他数据库中的表时。
  • 当更新策略查询引用启用了 行级别安全策略的表时。

使用托管标识配置的更新策略代表托管标识执行。

本文介绍如何配置系统分配或用户分配的托管标识,并使用该标识创建更新策略。

先决条件

配置托管标识

托管标识分为两种类型:

  • 系统分配:系统分配的标识将连接到群集,删除该群集时也会删除该标识。 对于每个群集,只能分配一个系统分配的标识。

  • 用户分配:用户分配的托管标识是独立的 Azure 资源。 可以将多个用户分配的标识分配给群集。

选择以下选项卡之一来设置首选的托管标识类型。

  1. 按照步骤添加用户分配的标识

  2. 在 Azure 门户中,在托管标识资源的左侧菜单中选择“属性”。 复制并保存“租户 ID”和“主体 ID”,以便在后续步骤中使用。

    包含托管标识 ID 的 Azure 门户区域的屏幕截图。

  3. 运行以下 .alter-merge policy managed_identity 命令,将 <objectId> 替换为上一步中的托管标识对象 ID。 此命令对群集设置托管标识策略,这样就能将托管标识用于更新策略。

    .alter-merge cluster policy managed_identity ```[
        {
          "ObjectId": "<objectId>",
          "AllowedUsages": "AutomatedFlows"
        }
    ]```
    

    注意

    若要对特定数据库设置策略,请使用 database <DatabaseName> 而不是 cluster

  4. 运行以下命令,授予托管标识对更新策略查询引用的所有数据库的数据库查看者权限。

    .add database <DatabaseName> viewers ('aadapp=<objectId>;<tenantId>')
    

    将 替换为相关数据库,<objectId>将 替换为<DatabaseName>步骤 2 中的托管标识主体 ID,将 <tenantId> 替换为步骤 2 中的Microsoft Entra ID 租户 ID

创建更新策略

选择以下选项卡之一,创建将代表用户分配或系统分配的托管标识运行的更新策略。

运行 .alter table policy update 命令并将 ManagedIdentity 属性设置为托管标识对象 ID。

例如,以下命令更改数据库中的表的更新策略,该表MyTableMyDatabase代表用户分配的托管标识引用数据库中OtherDatabase的表OtherTable<objectId> 应是托管标识对象 ID。

.alter table MyDatabase.MyTable policy update
```
[
    {
        "IsEnabled": true,
        "Source": "MyTable",
        "Query": "UpdatePolicyFunction",
        "IsTransactional": false,
        "PropagateIngestionProperties": false,
        "ManagedIdentity": "<objectId>"
    }
]
```