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

如何通过Az CLI与AAD组配置Azure Synapse架构RBAC访问权限

解决Azure Synapse Schema级RBAC配置问题(Az CLI方式)

一、Synapse RBAC的正确Scope格式

你不需要获取schema的ID,Synapse角色分配的scope采用路径格式而非GUID。针对SQL池中的schema,scope格式如下:

  • 专用SQL池:
    /workspaces/{你的Synapse工作区名}/sqlPools/{SQL池名}/databases/{数据库名}/schemas/{schema名}
    
  • 无服务器SQL池(数据库固定为master):
    /workspaces/{你的Synapse工作区名}/sqlPools/sqlondemand/databases/master/schemas/{schema名}
    

二、Az CLI配置Synapse RBAC权限命令

1. 给AAD组G1配置全架构访问

直接给SQL池级的Reader角色即可覆盖所有schema,无需逐个配置:

# 专用SQL池
az synapse role assignment create --workspace-name SynapseID --role "Synapse SQL Pool Reader" --assignee {G1的AAD组ID} --scope /workspaces/SynapseID/sqlPools/{你的SQL池名}

# 无服务器SQL池
az synapse role assignment create --workspace-name SynapseID --role "Synapse SQL On-Demand Reader" --assignee {G1的AAD组ID} --scope /workspaces/SynapseID/sqlPools/sqlondemand

2. 给AAD组G2配置仅B/C schema访问

针对单个schema分配Reader角色,分别执行命令:

# 专用SQL池 - 配置schema B
az synapse role assignment create --workspace-name SynapseID --role "Synapse SQL Pool Reader" --assignee {G2的AAD组ID} --scope /workspaces/SynapseID/sqlPools/{你的SQL池名}/databases/{数据库名}/schemas/B

# 专用SQL池 - 配置schema C
az synapse role assignment create --workspace-name SynapseID --role "Synapse SQL Pool Reader" --assignee {G2的AAD组ID} --scope /workspaces/SynapseID/sqlPools/{你的SQL池名}/databases/{数据库名}/schemas/C

# 无服务器SQL池 - 配置schema B
az synapse role assignment create --workspace-name SynapseID --role "Synapse SQL On-Demand Reader" --assignee {G2的AAD组ID} --scope /workspaces/SynapseID/sqlPools/sqlondemand/databases/master/schemas/B

三、更优的细粒度权限控制方案(SQL GRANT)

Synapse RBAC在schema层级的灵活性有限,更推荐用SQL权限语句直接配置,通过Az CLI执行即可:

1. 登录到Synapse SQL池

# 专用SQL池登录
az synapse sql pool connect --workspace-name SynapseID --name {你的SQL池名} --auth-type AAD

# 无服务器SQL池登录
az synapse sql on-demand connect --workspace-name SynapseID --auth-type AAD

2. 执行GRANT语句配置权限

将以下SQL保存为grant_permissions.sql文件:

-- 给G1授予所有schema的SELECT权限(访问视图需该权限)
GRANT SELECT ON SCHEMA::A TO [G1组名];
GRANT SELECT ON SCHEMA::B TO [G1组名];
GRANT SELECT ON SCHEMA::C TO [G1组名];

-- 给G2仅授予B/C schema的SELECT权限
GRANT SELECT ON SCHEMA::B TO [G2组名];
GRANT SELECT ON SCHEMA::C TO [G2组名];

然后用Az CLI执行:

# 专用SQL池执行SQL文件
az synapse sql pool query --workspace-name SynapseID --name {你的SQL池名} --file-path ./grant_permissions.sql

# 无服务器SQL池执行SQL文件
az synapse sql on-demand query --workspace-name SynapseID --file-path ./grant_permissions.sql

注意事项

  • 确保Az CLI已安装synapse扩展,未安装则执行:az extension add --name synapse
  • 执行命令前,你的账号需拥有Synapse Administrator或Owner权限,才能分配角色或执行GRANT语句

内容的提问来源于stack exchange,提问作者Jakub Jón

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 01:35:25