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

如何在Azure Synapse中创建/编辑仅具备数据查询权限的自定义角色

Azure Synapse最小权限配置方案

可以实现,不需要修改现有内置角色,通过自定义RBAC角色搭配多层粒度权限配置就能完全匹配你的管控要求。Synapse的权限体系是分层管控的,不存在单一角色覆盖所有场景的情况,按下面步骤配置即可。


第一步:创建工作区级自定义RBAC角色,从管控面屏蔽Pipeline及无关权限

工作区级Azure RBAC是控制Synapse工作室功能入口访问权限的核心层,内置角色普遍权限冗余,自定义角色可以精准卡控权限范围:

  • 角色仅开放以下和数据查询相关的管控权限,其余权限全部不授予:
    • Microsoft.Synapse/workspaces/read:基础工作区可见权限,无此权限用户无法正常进入工作区
    • Microsoft.Synapse/workspaces/bigDataPools/usePool/action:允许用户使用Spark池提交查询作业
    • Microsoft.Synapse/workspaces/sqlPools/usePool/action:允许用户连接内置无服务器SQL池
  • 权限屏蔽规则:
    • 所有和Pipelines、触发器、凭据管理、托管私有端点配置、工作区设置修改、工件发布/删除/写入相关的权限全部不授予,尤其是Microsoft.Synapse/workspaces/pipelines/*全类权限直接排除,从入口层面彻底堵死Pipeline访问路径
    • 不要给目标用户分配任何内置的Synapse管理员、Synapse参与者、Synapse管道操作员这类带写入、Pipeline操作权限的角色,仅绑定你创建的这个自定义角色即可

第二步:配置内置无服务器SQL池粒度权限,仅开放SELECT查询能力

SQL池的数据面权限独立于Azure RBAC,需要单独配置才能实现仅允许SELECT的要求:

  1. 先在无服务器SQL池的master库为用户创建登录映射,执行以下SQL:
-- 需在master库上下文执行
CREATE LOGIN [目标用户AAD账号] FROM EXTERNAL PROVIDER;
  1. 切换到用户需要访问的业务数据库,创建数据库用户并仅授予读权限:
-- 需在对应业务数据库上下文执行
CREATE USER [目标用户AAD账号] FROM EXTERNAL PROVIDER;
-- 授予整库SELECT权限,如需更细粒度控制可单独授权特定Schema/表
EXEC sp_addrolemember 'db_datareader', '目标用户AAD账号';
  1. 权限校验:确认没有给用户分配db_owner、db_datawriter、db_ddladmin这类高权限角色,保证用户执行INSERT、UPDATE、DROP、ALTER等非查询语句时会直接报权限不足。

第三步:配置Spark池与存储层只读权限

针对Spark查询和数据湖访问的场景,单独配置最小权限:

  • Spark池层面:不给用户分配Spark池管理员、池配置修改权限,仅保留基础的作业提交权限即可
  • 关联ADLS Gen2存储层面:给目标用户授予对应存储容器/路径的Storage Blob Data Reader角色,不要授予存储贡献者、Blob数据参与者这类带写入、删除权限的角色,保证不管是无服务器SQL池查询外部表,还是Spark作业读湖数据,都只有读取权限,无法修改、删除湖内数据。

配置完成后校验点

用测试账号登录Synapse工作室逐一验证权限符合预期:

  • 左侧导航栏的「集成」(Pipeline功能入口)访问时提示无权限,看不到任何已有管道、触发器,也无法新建相关资源
  • 可以正常连接内置无服务器SQL池,SELECT查询执行正常,非查询类语句执行被拦截
  • 可以正常提交Spark作业读取湖内数据,写入数据到存储时被权限拦截
  • 看不到工作区管理设置页,无法修改工作区配置、添加删除用户、操作计算资源

内容的提问来源于stack exchange,提问作者Senthil Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:42:14