题
如何在Power BI中使用行级安全性?我确实需要使用“角色”来管理安全性吗?权限在哪里授予?您能否通过示例演示如何设置Power BI行级安全性?
解
当然,每个人都在考虑安全性,尤其是随着数据量的持续增长。拥有大量数据的特权,我们需要弄清楚那些使用数据的个人可以查看和不能查看哪些数据。
Power BI中的安全性有几种形式和级别。首先,当然,需要适当的许可证(专业版或高级版)才能访问云上的Power BI服务(或使用Power BI Report Server中的相关本地资源)。接下来,必须授予对数据集,报告的访问权限,并且更适当地,对包含仪表板,报告和数据集的APP进行访问。此访问级别的重点是对整个报表或仪表板的访问。数据集级别的最后访问层围绕行级别的安全性。尽管有点用词不当,因为它并不是真正的行级(由于可能的聚合,例如在数据级),所以行级安全功能通过提供一种限制数据访问的方式在逐行级上起作用级别基于数据集中的特定值。当然,有了这种访问权限,
了解使用行级安全性的好处的最佳方法是通过样本案例研究。但是,在进入示例之前,您需要确保从此处下载最新版本的Power BI桌面 。此外,我们将使用WideWorldImportersDW数据库作为数据源的基础;该数据库可以 从GitHub下载。如果需要重新将数据导入Power BI中,请参阅此 技巧。
创建Power BI报表以设置行级安全性
为了帮助我们入门,我创建了Power BI报告文件,并在报告中添加了两个选项卡。第一个选项卡包含一个条形图和切片器,而第二个选项卡包含一个矩阵和另一个条形图,如以下两个屏幕截图所示。
现在已经设置了报告,我们可以开始设置行级安全性的过程。整个过程分为两步,其中第一步在Power BI Desktop中进行,而第二步在云中或Power BI Report Server上的Power BI Service中在线进行。必须执行两个步骤,否则安全性将无法正常工作。
在Power BI中设置角色
第一步实际上需要使用角色。通过命名角色,然后使用准过滤过程来建立每个角色可以访问的特定数据,从而建立每个角色。当然,如果您有许多角色,则维护可能是一个挑战,因为可以将报表使用者分配给这些角色。但是,设置用户访问交叉引用表的替代方案同样令人生畏。
要设置角色,必须选择Modeling选项卡,然后单击 Manage Roles,如下所示。
通过首先选择创建选项,然后在以下示例中命名角色Far West,继续该过程。确保正确,一致地命名角色,就像在步骤2中将使用的一样。命名角色后,我们需要选择使用哪个表来限制分配给角色的数据访问级别。接下来,选择添加过滤器,最后选择将用于过滤的字段。在下图中,从“维度城市”表中选择“销售地区”作为要用于行级安全性的表/字段。
选择“销售地区”后,“表格过滤器DAX表达式”字段将预先填充列名称和=“值”。必须将“值”参数替换为该角色将只能看到的实际值。
在此示例中,“值”被“远西”替换为该角色的销售地区数据过滤器。此外,您会注意到,根据数据中的不同销售地区创建了总共十个角色。
因此,以类似的方式,我们可以看到大湖区角色使用了大湖区销售区域。对于我们要创建的其余每个角色,我们都遵循相同的过程。
在DAX表达式框的右上角,您会看到一个选中标记和斧头按钮。复选标记按钮验证输入的DAX表达式,而“ x”按钮通过恢复为过滤器的原始值来充当撤消按钮。请注意,“ x”还原按钮仅在积极使用角色过滤器时有效;如果您保存并退出管理角色窗口,则还原选项将不再可用。
如下所示,两个随机感叹号的加法创建了无效的DAX语句。利用复选标记,我们可以看到三个位置,这些位置指示存在问题的位置:1)在“管理角色”列下,2)在“表”列下和3)在DAX表达式框下,其中给出了完整的错误消息,指出了问题所在的位置。问题。
如果尝试使用不正确的DAX保存角色,则可以保存它,但是保存时会同时收到一条警告错误消息,如下所示。
此外,在主设计网格上,还会显示一条警告消息,指示角色安全筛选器存在问题。
关于管理角色过程需要提及的其他事项是,您实际上可以将多个DAX筛选器表达式添加到特定角色。如后续屏幕截图所示,GreatLakes和Plains角色实际上包括Plains和Great Lakes销售地区。双杠,“ ||” 在DAX表达式中充当OR语句。
或者,我们可以将IN关键字用于DAX,如下所示。
例如,我们可以通过为特定邮政编码添加第二个过滤器来创建“ AND”条件,如下面的屏幕截图所示。还要注意两个过滤器图标如何出现在“表”列中。
很容易看出创建各种基于角色的安全筛选器和功能的可能性是如何无限的。我们确实需要谨慎地创建大量角色,因为如果定义不严谨,角色将变得难以管理。当然,有解决这些问题的方法。
现在我们已经创建了几个角色,但是在发布仪表板和报告之前,我们可能会想要测试我们的设置。幸运的是,“按角色查看”按钮使我们能够完成这种测试。
单击“按角色查看”按钮将打开“按角色查看”窗口。
通过单击“远西”角色,我们为该角色启用了过滤器。
现在,视觉上仅显示Far West销售地区的利润,切片器上仅显示Far West销售地区的州/省,图例仅显示Far West。
该角色将应用于使用所选数据集的仪表板或报表上的所有页面。不相关的数据集和查询不会受到影响。
在下面的示例中,我们还可以看到如果某人同时担任Far West和New England多个角色的一部分,会发生什么情况。
属于这两个角色的报表或仪表板使用者将看到两组数据,它们以“或”方式工作。
在“管理角色”下,选择“ 无”选项可将报表设计器还原为查看所有数据。
至此,我们准备将数据发布到云中的Power BI Service。一旦发布到云中,我们将需要继续进行行级安全性过程的第二部分。
Power BI的设置安全性
现在已经发布了数据集和报告,我们希望导航到数据集所在的工作区。进入工作空间后,您将找到涉及的数据集并选择安全性选项。
现在,可以将单个用户,通讯组列表或活动目录组添加为角色成员。在此过程中,我们将实际用户或组分配给已定义的角色。希望您能看到现在适当命名角色的重要性。如果添加的成员是专门为添加用户来设置角色(在我们的示例中为销售区域)而创建的活动直接组,那将是非常有益的。因此,如果已经为远西视图建立了活动目录组,则只需添加该AD组即可。当然,也可以添加个人,但是如果具有访问权限的用户变得庞大,那么这将成为管理负担。
当您键入广告组名称,通讯组列表或用户的ID或电子邮件地址时,Intellisence会自动为您显示可用用户或组的列表。输入所有组或用户后,下一步是单击“添加”按钮。
最后,必须单击“保存”以保存对角色成员资格所做的添加。
您也可以单击用户或组名称旁边的X以删除特定用户。但是,这些更改也必须保存。
可以将用户或组添加到多个角色,但是这些添加通过添加到组或用户可以查看的数据中而具有合并效果。
在此过程中,我们的最后一步是再次测试我们的角色是如何工作的。单击角色名称旁边的椭圆按钮,可以选择“测试为角色”链接。
如下所示,我们可以看到角色设置正确,仅显示了大湖区和平原的销售地区。
摘要
想到的一个问题是,当用户有权访问报表,仪表板或APP,但没有被分配为角色成员时,会发生什么情况。该个人将看不到任何数据。同样,如果用户具有对报表和数据集的编辑权限(例如,通常是内容管理员),则该用户将看到所有数据,并可在角色中更改其自己的成员身份。
如您所见,Power BI中的行级安全性实际上可以称为角色级安全性。它是一个功能强大的工具,可以与AD组,电子邮件地址和用户ID结合使用,从而通过基于角色的筛选器来创建受限访问权限。