PowerBI能否继承Azure Synapse SQL中的RLS行级安全?
问题解决:PowerBI继承Azure Synapse RLS配置
问题根源
PowerBI发布到共享工作区后,默认采用发布者的身份凭据连接Synapse,而非传递报表查看者的Azure AD身份,导致Synapse的RLS仅应用发布者的权限规则。
实现PowerBI继承Synapse RLS的配置步骤
启用身份传递(SSO)
在PowerBI中连接Synapse时,必须使用支持身份传递的模式:- PowerBI Desktop端:选择「Azure Active Directory - 通用」身份验证,勾选「使用单一登录通过Azure AD传递凭据」(仅DirectQuery/Live Connect模式支持该选项)。
- 发布到共享工作区后,进入数据集设置,将「数据源凭据」改为「使用单一登录(SSO)通过Azure AD传递凭据」,替换默认的「发布者凭据」。
验证身份与权限匹配
- 确保报表查看者的Azure AD账号拥有Synapse SQL池的读取权限(如
db_datareader角色),且该账号的邮箱存在于spf.AccessMatrix表中。 - 你的RLS函数中使用的
USER_NAME()会返回传递过来的查看者邮箱,需保证该值与AccessMatrix表的emailaddress字段匹配。
- 确保报表查看者的Azure AD账号拥有Synapse SQL池的读取权限(如
无需重复配置PowerBI RLS
只要身份传递配置正确,Synapse的RLS会直接生效,PowerBI将自动获取经过过滤的数据,无需在PowerBI中另行设置行级别安全。
关键注意事项
- 仅DirectQuery或Live Connect模式支持继承Synapse RLS;若使用导入模式,数据会被缓存到PowerBI,必须在PowerBI内配置RLS。
- 避免使用服务主体等非用户身份连接数据源,否则会跳过身份传递,导致RLS失效。
内容的提问来源于stack exchange,提问作者user774952
相关产品推荐
相关产品推荐

