PowerBI可以通过RLS(Row-level security)限制用户对数据的访问,过滤器在行级别限制数据的访问,用户可以在角色中定义过滤器,通过角色来限制数据的访问。在PowerBI Service中,workspace中的member能够访问Workspace中的Dataset,RLS不会限制数据的访问。
PowerBI 只支持Import 和 DirectQuery 连接模式,Live Connection to Analysis Services需要在on-premises模型中处理。也就是说,当数据模型采用Import模式,可以在PowerBI的数据模型中配置RLS;当dataset使用DirectQuery模式时,关系型数据源也可以在PowerBI中配置RLS,比如SQL Server。但是对于Analysis Services 或 Azure Analysis Services数据源,由于使用的 lives connection,需要在模型中配置RLS,而不是在PowerBI Desktop中。
行级安全实际上分为两块:开发人员首先在PowerBI Desktop中定义Role和身份验证的规则,然后在PowerBI Service中添加Role的成员。
一,在PowerBI Desktop中定义Role和Rule
在PowerBI Desktop中定义Role和Rule,当把PBI文件发布(publish)时,也会把Role的定义发布到PowerBI Service。
1,定义Role和Rule
从PowerBI Desktop的 Modeling菜单中选择“Manage Roles”
点击“Create”按钮创建Role:
在“Table filter DAX expression”中输入DAX表达式,这个表达式返回True或False,这个表达式就是Role的规则(Rule)。