不通过行级安全性,又如何解决Power BI数据屏蔽

​不通过行级安全性,我们又如何解决Power BI数据屏蔽这一现实问题呢?

 

 

到目前为止,我们都知道可以通过行级安全性方法限制对数据的访问。但是,我最近遇到的一个新的问题是:“销售员希望在销售报表看到彼此的销售信息,但是又不能看到其他人的名字!那我们如何在Power BI中做到这一点?”

 

以上操作与行级安全性方法有所不同。在这种情况下,我们希望用户看到其他人的信息,甚至知道他们的销售量,但是我们不希望他们看到他的名字。

这比行级安全性更像是数据屏蔽的一种解决方法。以下我们会通过这篇文章与大家分享这个方法。


数据关系

我使用的是带有两个表的非常简单的数据集;销售员工信息表和销售信息表;

 

 


这不是行级安全性

在这里,我重申一遍,这不是行级安全性。在这种情况下,我们显示了整个数据行。但是,我们对部分数据做了隐藏处理,因为它们是敏感列。


隐藏敏感列

采取这种方法的第一步是隐藏用户不能看到的列。例如; 用户名称、电子邮件、地址、电话号码等。

在我的这个例子中;我将下面的所有列都做了隐藏处理。

 

 


使用MaskedUserName列创建可视化

现在有了maskedUserName列,我们可以使用它来创建可视化。由于敏感信息列是隐藏的,因此用户无论如何都无法看到它们。

 

 

 

 

如图所示,当用户登录到报表时,他/她们不知道被屏蔽的用户是谁(如菠萝、草莓和大西瓜)。从用户的角度来看这些细节是完全隐藏的。但是,用户在不知道是谁的情况下却又可以看到他们的销售金额。

 

 


当前用户

到这,大家肯定想了解:怎么做到啊?现在,我们说下实现的具体的方法:通过使用UserPrincipalName函数的度量,我们可以轻松实现这一目标;

CurrentUser = if(

sum(SalesInfo[Number])&&

SELECTEDVALUE('SaleUserInfos'[Email])=USERPRINCIPALNAME(),

SELECTEDVALUE('SaleUserInfos'[Name]))

 

这意味着仅显示已登录用户的用户名。

 

 

你可以看到,当前我根据当前用户进行了一些颜色格式化,我做了表列的背景色;

BackgroundColor = if(not ISBLANK([CurrentUser]),"light green","light grey")

 


无需行级安全配置

到这里,你也可以发现,实现这个效果,我并没有通过行级安全性配置。而且不用创建任何角色,也无需将用户分配给这些角色。因为这不是行级安全性。但此方法只是从用户的角度隐藏敏感信息而已。


最佳实践

对于实现,我建议用合适的数据体系结构。在这种情况下,由于某些用户可能是可以使用Power BI Desktop创建报表的数据可视化工具,因此我建议你使用共享数据集的方式。如果你采用这种方法,即使用户Power BI Desktop也只能看到隐藏后的数据。


总结

数据屏蔽不是行级安全性。它只是通过我们用于一些安全逻辑仅仅来显示部分非敏感信息。

 

 

推荐阅读

马上报名 | "玩转数据,智启未来"Power BI Workshop与您相约618

Power BI 5月产品功能更新培训 —— 视频上线

【2020】Power BI 5月产品功能更新

Power BI中简单而强大的相对日期切片器

Power BI表格编辑器

 

技术交流

1.Power BI免费下载:http://www.yeacer.com/

    Microsoft Power BI Desktop中文最新版:下载地址

2.欢迎加入的Power BI技术群,目前正在学习阶段,有兴趣的朋友可以一起学习讨论。 

   Power Data技术交流群:702966126 (验证注明:博客园Power BI) 

   更多精彩内容请关注微信公众号:悦策PowerBI          


如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载。
posted @ 2020-06-24 15:14  PowerBI365  阅读(891)  评论(0编辑  收藏  举报