Power BI 行级别安全性 (RLS)
在 Power BI Desktop 中定义角色和规则
你可以在 Power BI Desktop 中定义角色和规则。 发布到 Power BI 时,它还会发布角色定义。
若要定义安全角色,请执行以下步骤。
-
将数据导入 Power BI Desktop 报表,或配置 DirectQuery 连接。
备注
不能在 Power BI Desktop 中为 Analysis Services 实时连接定义角色。 需要在 Analysis Services 模型中执行此操作。
-
选择“建模” 选项卡。
-
选择“管理角色” 。
-
选择“创建” 。
-
为角色提供名称。
-
选择你想要应用 DAX 规则的表。
-
输入 DAX 表达式。 此表达式应返回 true 或 false。 例如:[实体 ID] =“值”。
备注
可以在此表达式内使用 username() 。 请注意,username() 在 Power BI Desktop 中采用“域\用户名”格式 。 在 Power BI 服务和 Power BI 报表服务器中,采用用户的用户主体名称 (UPN) 格式。 或者,可以使用 userprincipalname(),它始终返回采用其用户主体名称格式 username@contoso.com 的用户 。
-
创建 DAX 表达式后,你可以选择表达式框上方的“检查”以验证该表达式。
备注
在此表达式框中,即使使用的区域设置通常使用分号分隔符(例如,法语或德语),也要使用逗号分隔 DAX 函数参数。
-
选择保存。
无法在 Power BI Desktop 中将用户分配到角色。 在 Power BI 服务中分配用户。 通过使用 username() 或 userprincipalname() DAX 函数并配置好正确的关系,则可以启用 Power BI Desktop 中的动态安全。
默认情况下,行级别安全性筛选采用单双向筛选器,无需考虑关系是设置为单向还是双向。 通过选择关系并勾选 “在两个方向上应用安全筛选器”复选框,可手动启用具有行级别安全性的双向交叉筛选器。 如果你还在服务器级别实现了动态行级别安全性,则应选中此框,其中行级别安全性基于用户名或登录 ID。
有关详细信息,请参阅在 Power BI Desktop 中使用 DirectQuery 的双向交叉筛选和保护表格 BI 语义模型技术文章。
在 Power BI Desktop 中验证角色
创建角色后,请在 Power BI Desktop 中测试角色结果。
-
选择“以角色身份查看” 。
在“以角色身份查看”中,可以看到创建的角色 。
-
选择创建的角色 >“确定”,应用该角色 。 报表呈现与该角色相关的数据。
-
你还可以选择其他用户,并提供给定用户 。 最好提供用户主体名称 (UPN),因为 Power BI 服务和 Power BI 报表服务器使用该名称。
-
选择“确定”,报表将基于该用户所见呈现内容 。
在 Power BI Desktop 中,如果使用的是基于 DAX 表达式的动态安全,“其他用户”仅显示不同的结果 。
管理模型上的安全性
若要管理数据模型上的安全性,你需要执行以下操作。
-
为数据集选择“省略号(...)” 。
-
选择“安全” 。
这将转到 RLS 页面,使你可以为 Power BI Desktop 中创建的角色添加成员。 只有数据集的所有者才能看到可用的安全性。 如果数据集在某个组中,则只有该组的管理员才能看到安全选项。
你只能创建或修改 Power BI Desktop 中的角色。
使用成员
添加成员
你可以通过键入邮件地址、用户姓名、你想要添加的安全组或通讯组列表,以向你的角色添加成员。 不能添加在 Power BI 内创建的组。 可将成员添加到组织的外部。
你还可以通过角色名称或“成员”旁边的括号内的数字看到有多少成员属于该角色。
移除成员
你可以通过选择成员名称旁的 X 来移除成员。
验证 Power BI 服务中的角色
你可以通过测试角色来验证你定义的角色是否正常工作。
- 选择该角色旁边的“更多选项”(...) 。
- 选择“作为角色测试数据”
然后你会看到对该角色可用的报表。 仪表板不在此视图中显示。 在上面的蓝色栏中,你将看到被应用的内容。
可通过选择“立即以此角色查看” 来测试其他角色或角色组合。
可选择以特定人员的身份查看数据,或选择可用角色的组合以验证它们是否工作。
选择“返回到行级安全性” 以返回到正常查看。
使用 username() 或 userprincipalname() DAX 函数
可在数据集内利用 DAX 函数 username() 或 userprincipalname()。 可在 Power BI Desktop 中的表达式内使用它们。 将在 Power BI 服务内使用你发布的模型。
在 Power BI Desktop 中,username() 将返回采用域\用户 格式的用户,userprincipalname() 将返回采用 user@contoso.com 格式的用户。
在 Power BI 服务中,username() 和 userprincipalname() 都将返回用户的用户主体名称 (UPN)。 这看起来类似于电子邮件地址。