在 Power BI Desktop 中定义角色和规则
发布到 Power BI 时,它还会发布角色定义。
若要定义安全角色,请执行以下步骤。
-
将数据导入 Power BI Desktop 报表,或配置 DirectQuery 连接。
备注
需要在 Analysis Services 模型中执行此操作。
-
选择“建模” 选项卡。
-
选择“管理角色” 。
-
选择“创建” 。
-
为角色提供名称。
-
选择你想要应用 DAX 规则的表。
-
例如:[实体 ID] =“值”。
备注
或者,可以使用 userprincipalname(),它始终返回采用其用户主体名称格式 username@contoso.com 的用户 。
-
创建 DAX 表达式后,你可以选择表达式框上方的“检查”以验证该表达式。
备注
在此表达式框中,即使使用的区域设置通常使用分号分隔符(例如,法语或德语),也要使用逗号分隔 DAX 函数参数。
-
选择保存。
通过使用 username() 或 userprincipalname() DAX 函数并配置好正确的关系,则可以启用 Power BI Desktop 中的动态安全。
双向交叉筛选
可以手动启用具有行级别安全性的双向交叉筛选器。
-
选择关系并选中“双向应用安全性筛选器”复选框 。
动态行级别安全性时,请选中此框。
保护表格 BI 语义模型技术白皮书。
在 Power BI Desktop 中验证角色
创建角色后,请在 Power BI Desktop 中测试角色结果。
-
选择“以角色身份查看” 。
在“以角色身份查看”中,可以看到创建的角色 。
-
报表呈现与该角色相关的数据。
-
最好提供用户主体名称 (UPN),因为 Power BI 服务和 Power BI 报表服务器使用该名称。
-
选择“确定”,报表将基于该用户所见呈现内容 。
在 Power BI Desktop 中,如果使用的是基于 DAX 表达式的动态安全,“其他用户”仅显示不同的结果 。
向角色添加成员
只有具有报表的发布者或内容管理器权限的用户才能使用行级别安全性选项,并且该选项不会呈灰色。
如果报表没有所需角色,则需要在 Power BI Desktop 中打开报表,添加或修改角色,然后将其保存回 Power BI 报表服务器。
-
需要使用更适合 Power BI 报表服务器的 Power BI Desktop 版本。
-
在 Power BI 报表服务中,请选择报表旁边的省略号(…) 。
-
选择“管理” > “行级别安全性” 。
在“行级别安全性”页上,将成员添加到在 Power BI Desktop 中创建的角色 。
-
若要添加成员,请选择“添加成员” 。
-
成员需在你的组织内。
在此情况下,报表服务器会在列表中显示相应用户名。
-
单击“确定”进行应用 。
-
一次可以删除多个成员。
username() 和 userprincipalname()
发布模型时,Power BI 报表服务器将使用它们。
在 Power BI Desktop 中,username() 返回采用域\用户格式的用户,userprincipalname() 返回采用 user@contoso.com 格式的用户。
在 Power BI Desktop 中,username() 和 userprincipalname() 均返回用户的“用户主体名称 (UPN)”,类似于电子邮件地址。
如果在 Power BI 报表服务器中使用自定义身份验证,则会返回为用户设置的用户名格式。
限制
以下是 Power BI 模型上有关行级别安全性的当前限制。
由于该场景中不考虑 RLS,因此该场景中的行为保持不变。
Excel 文件的详细信息。
连接到分析服务的实时连接和使用集成身份验证的 DirectQuery 连接均在底层数据源中进行处理。
如果配合使用集成安全性和 DirectQuery,用户可能会注意到:
- 已禁用 RLS,且已返回所有数据。
- 用户不能更新其角色分配,并且在“RLS 管理”页上收到错误。
- 对于 DAX 用户名函数,仍继续按“域\用户”接收用户名。
在 Power BI 报表服务器中,报表作者无权查看报表数据,除非他们在上传报表后为自己分配了相应角色。