码迷,mamicode.com
首页 > 其他好文 > 详细

PowerBI开发 第十八篇:行级安全(RLS)

时间:2021-04-30 12:35:30      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:repo   pow   services   uri   创建   username   target   ack   member   

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)。

技术图片

你也可以输入在表达式中嵌入函数username(),注意该函数返回的格式是:DOMAIN\username,也可以使用函数 userprincipalname() 返回用户安全主体名称,格式是:username@contoso.com

2,动态的RLS

用户不能在PowerBI Desktop中把一个user 分配到一个role中,但是可以在PowerBI Service中进行分配。通过使用函数username() 或 userprincipalname(),可以实现动态的RLS设置。

默认情况下,不管关系设置的是单向过滤方向,还是双向过滤方向,RLS都是使用单向的过滤器来过滤用户。开发人员可以手动启用双向交叉过滤的RLS,这只需要勾选“Apply security filter in both directions”。

 技术图片

 3,验证Role

当创建Role之后,可以通过“View as”菜单来进行验证。

 技术图片

 选择要验证的Role,或者Other user。

技术图片

当选择特定的Role或Other user之后,根据这个Role或 Other user把报表的数据重新渲染。

二,在PowerBI Service中管理数据模型中的安全设置

开发人员可以在PowerBI Service中管理模型的安全设置。

1,打开菜单

在PowerBI Service中,从Workspace中选择Dataset,打开“Open menu”

技术图片

技术图片

2,选择 Security

Security 菜单将打开Role-Level Security页面,这是为你在PowerBI Desktop中创建的Role添加member的地方。只有dataset的Owner可以看到Security 菜单。

用户只能在PowerBI Desktop中创建Role,只能在PowerBI Service中为Role添加member。

技术图片

3,为Role添加member

在PowerBI Service中,开发人员可以通过email 地址、用户的名称、或者Security Group的名称来添加member。

技术图片

在为Role添加成员之后,Role名称后面会显示成员的数量。

技术图片

4,验证角色

在PowerBI Service中,用户可以通过(...)来验证Role,当选择“Test as role”时,

技术图片

开发人员会以角色来查看报表,报表会显示“Now viewing as: role_name”,如下图所示:

技术图片

如果要测试其他用户或角色,可以点击“Now viewing as”,弹出以下窗口:

技术图片

要返回常规窗口,请点击“Back to Row-Level Security”。

三,动态RLS设置

通过使用函数username() 或 userprincipalname(),可以实现动态的RLS设置。

username()函数返回的格式是:DOMAIN\username,函数 userprincipalname() 返回用户安全主体名称,格式是:username@contoso.com。

案例:用户通过邮箱登陆,PowerBI通过邮箱配置来限制用户查看数据。

1,在PowerBI Desktop中定义Role和Rule

step1:建立一个用户表

用户表的结构如下图(表名:DM_D_Permission)

 技术图片

step2,建立Role和Table filter之间的关系

 技术图片

step3,建立关系表

在建立多对一的关系时,一定要注意在Cross Filter Direction中,选择Both并点选 “Apply security filter in both directions”

技术图片

选择OK,在PowerBI Desktop上的操作完成,需要Publish到PowerBI Service上。

2,在PowerBI Service中定义成员

选择Report的Dataset,选择“Security”:

技术图片

为角色增加成员,成员可以是email 地址、用户的名称、或者Security Group的名称。

技术图片

PowerBI Service上的配置完成,每一个访问Report的用户都会被Dataset上的安全设置所限制。

 

参考文档:

Row-Level Security with PowerBI

Power BI 中的RLS权限控制设置简要说明

PowerBI开发 第十八篇:行级安全(RLS)

标签:repo   pow   services   uri   创建   username   target   ack   member   

原文地址:https://www.cnblogs.com/ljhdo/p/14719074.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!