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

适用于:✅Azure 数据资源管理器

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

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

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

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

先决条件

配置托管标识

托管标识分为两种类型:

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

  • 用户分配:用户分配的托管标识是独立的 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>')
    

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

创建更新策略

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

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

例如,以下命令会更改 MyDatabase 数据库中表 MyTable 的更新策略。 请务必注意,SourceQuery 参数只应引用定义更新策略的同一数据库中的对象。 但是,Query 参数指定的函数中包含的代码可以与其他数据库中的表交互。 例如,函数 MyUpdatePolicyFunction() 可以代表用户分配的托管标识访问 OtherDatabase 中的 OtherTable<objectId> 应是托管标识对象 ID。

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