如何限制用户访问Synapse LakeDatabase原始表,仅开放无服务器SQL视图权限?
实现方法
要实现只让业务用户访问无服务器SQL的转换视图、禁止直接访问原始表,核心是通过权限隔离+代理访问切断用户和原始数据的直接权限关联,具体步骤如下:
1. 撤销用户对原始数据层的直接权限
- 移除Lake Database给业务用户的「数据库读取权限」,让他们无法直接访问原始表
- 撤销ADLS容器上给业务用户的ACL权限,禁止他们直接触碰底层存储文件
2. 用Synapse托管身份做访问代理
让无服务器SQL的视图通过Synapse工作区的托管身份访问原始数据,而非依赖用户自身权限:
具体操作(在无服务器SQL数据库中执行):
- 创建关联托管身份的数据库级凭据:
CREATE DATABASE SCOPED CREDENTIAL ADLS_Access_Credential WITH IDENTITY = 'Managed Identity';
- 创建指向ADLS存储的外部数据源,绑定上述凭据:
CREATE EXTERNAL DATA SOURCE ADLS_Raw_Data_Source WITH ( LOCATION = 'abfss://<你的容器名>@<存储账户名>.dfs.core.windows.net/', CREDENTIAL = ADLS_Access_Credential );
- 给Synapse托管身份配置必要权限:
- 分配ADLS容器的读取+执行ACL权限
- 分配Lake Database的读取权限
3. 配置视图的权限
- 仅在无服务器SQL数据库中给业务用户授予目标转换视图的
SELECT权限 - 确保视图基于上述外部数据源(或托管身份有权访问的Lake Database表)创建
4. 验证效果
- 用业务用户账号登录Synapse,尝试打开Lake Database的原始表,应提示权限不足
- 查询转换视图,能正常返回清洗后的结果,说明代理访问生效
内容的提问来源于stack exchange,提问作者Malshini Nissanka
相关产品推荐
相关产品推荐

