You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过用户托管标识限制ADF对Azure SQL DB的架构级访问

如何通过用户托管标识实现Azure SQL的架构/表级权限控制

首先明确核心结论:可以通过用户托管标识(UMI)实现Azure SQL的架构或表级权限限制,但不能直接用单个UMI区分不同人员的权限——必须为不同权限需求创建独立的UMI,再为每个UMI分配精细化权限,最后让对应人员使用的ADF资源绑定对应的UMI。

以下是具体操作步骤:

1. 创建对应权限组的用户托管标识

根据你的权限需求,在Azure门户中创建独立的UMI:

  • 比如为需要访问X表的人员创建UMI-X,为需要访问Y表的人员创建UMI-Y。

2. 在Azure SQL中为每个UMI创建数据库用户

以AAD管理员身份连接到目标Azure SQL数据库,执行T-SQL创建对应UMI的外部用户:

-- 为UMI-X创建数据库用户(替换为你的UMI名称)
CREATE USER [UMI-X] FROM EXTERNAL PROVIDER;

-- 为UMI-Y创建数据库用户
CREATE USER [UMI-Y] FROM EXTERNAL PROVIDER;

3. 分配架构/表级精细化权限

建议通过创建自定义角色来管理权限(便于后续维护),再将UMI用户添加到对应角色:

示例1:表级权限(让UMI-X仅访问SchemaA.TableX)

-- 创建专属角色
CREATE ROLE Role_X_Table_Access;

-- 授予角色对目标表的SELECT权限(可根据需求添加INSERT/UPDATE等)
GRANT SELECT ON SchemaA.TableX TO Role_X_Table_Access;

-- 将UMI-X用户添加到该角色
ALTER ROLE Role_X_Table_Access ADD MEMBER [UMI-X];

示例2:架构级权限(让UMI-Y访问SchemaB下所有表)

CREATE ROLE Role_Y_Schema_Access;

-- 授予角色对整个Schema的SELECT权限
GRANT SELECT ON SCHEMA::SchemaB TO Role_Y_Schema_Access;

ALTER ROLE Role_Y_Schema_Access ADD MEMBER [UMI-Y];

4. 在ADF中绑定对应UMI到资源

为不同人员使用的ADF数据集/管道,配置Azure SQL连接时选择对应的UMI作为身份验证方式:

  • 给X人员的ADF资源绑定UMI-X
  • 给Y人员的ADF资源绑定UMI-Y

关键注意事项

  • 单个UMI是一个统一的身份实体,所有通过它发起的请求都会使用同一权限,无法直接区分不同人员。因此必须为不同权限组创建独立UMI。
  • 如果是让AAD用户直接访问SQL而非通过ADF托管标识,无需绕UMI,直接创建AAD用户对应的SQL外部用户并授权即可。

内容的提问来源于stack exchange,提问作者AzSurya Teja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 06:15:40