PowerBI实现行级别安全性(RLS)

Microsoft Power BI 允许将报表和工作区共享到 Active Directory 用户和组,从而帮助保护报表和工作区。 你还可以共享单个报表,但根据用户的工作角色使用户看到不同的数据。

假设企业有销售情况/员工信息/产品列表等3个表。

你想要创建一个报表,其中特定部门的员工只能看到该部门的销售情况。 例如,Maria Cameron 在游戏部门工作,应该只能看到游戏部门的销售情况,看不到运动、服装或汽车部门的销售情况。

此数据以星型架构进行组织。 销售表包含事实数据表的所有属性,而员工和产品表则是维度表。 数据模型如以下屏幕截图所示。

行级别安全性的数据模型

在 Power BI 中实现行级别安全性的两种方法是:静态方法和动态方法。

行级别安全性 (RLS) 使用 DAX 筛选器作为核心逻辑机制。 本模块将演示如何使用 DAX 在 Power BI 中实现行级别安全性,以确保只有相应人员才能看到相应记录。

使用静态方法配置行级别安全性

行级别安全性 (RLS) 中的静态方法使用 DAX 筛选器中的固定值,而动态方法则使用 DAX 函数。

RLS 包含多个配置步骤,应按以下顺序完成这些步骤:

  1. 在 Microsoft Power BI Desktop 中创建报表。

    1. 导入数据。

    2. 确认两个表之间的数据模型。

    3. 创建报表视觉对象。

  2. 使用 DAX 在 Power BI Desktop 中创建 RLS 角色。

  3. 在 Power BI Desktop 中测试角色。

  4. 将报表部署到 Microsoft Power BI 服务。

  5. 将成员添加到 Power BI 服务中的角色。

  6. 测试 Power BI 服务中的角色。

在 Power BI Desktop 中创建 RLS 角色

若要在 Power BI Desktop 中创建 RLS 角色,请选择“建模”选项卡,然后选择“管理角色”。

通过 Power BI Desktop 中的“建模”选项卡管理角色

在“管理角色”页上,选择“创建”。

管理角色中的“创建”按钮

Power BI 行级别安全性 (RLS) 使用 DAX 来控制哪些用户可以查看哪些数据。 可以将此过程视为始终向相应用户添加额外筛选器,无论这些用户在 Power BI 报表上选择哪些筛选器、切片器或交互。

在“管理角色”页上,为每个部门创建一个角色,然后向该角色添加一个 DAX 表达式。 例如,可以创建一个名为“游戏”的角色,然后添加 DAX 表达式 [department] = "游戏"。 每当该角色的成员与报表进行交互时,Power BI 都会将该筛选器添加到他们的交互中,从而限制他们所看到的内容。

筛选器等号右侧使用的是固定值(在本例中,此值为“游戏”)。 这样做的目的是,如果需要添加类别,则需要在 DAX 表达式中创建一个具有新值的新角色。

“管理角色”屏幕

请注意对维度表应用 DAX 筛选器的方式。 以星型架构组织数据时,行级别安全性表现会更好。 将 DAX 筛选器应用于维度表,操作方式与产品表相同。

DAX 筛选器应用于用户使用的每个交互、切片器和筛选器。 如果 DAX 筛选器性能不佳,则会对用户体验产生负面影响。 因此,请使 DAX 筛选器尽可能简单。

在 Power BI Desktop 中测试角色

可以通过选择“建模”选项卡,然后选择“以角色身份查看”来验证筛选器是否正常工作。

“建模”选项卡上的“以角色身份查看”按钮

在“以角色身份查看”窗口中,选择“游戏”角色。 现在,报表将你当做拥有该角色来呈现内容,而你只会看到游戏部门中包含的记录。//可以使用 Power BI Desktop 和 Power BI 服务测试 RLS

通过再次选择“以角色身份查看”,然后选择“无”可以撤消此筛选器。

将成员添加到 Power BI 服务中的角色

若要将成员添加到 Power BI 服务中的角色,请转到 Power BI 服务中的工作区。 查找以与报表相同的名称创建的数据集。 选择省略号(“...”)按钮,然后选择“安全性”。

数据集上的“安全性”按钮

在“行级别安全性”屏幕中,可以将 Microsoft Azure Active Directory (Azure AD) 用户和安全组添加到安全角色。 将成员添加到此角色后,系统将向这些成员应用你之前定义的 DAX 筛选器。 如果成员未添加到该角色中,但他们有权访问该报表,则 RLS 将不会向他们应用筛选器。 可以将游戏部门中的三名人员添加到“游戏”角色。 现在,在这些成员登录后,他们看到的报表将仅包含适用于他们的数据。

“行级别安全性”屏幕

测试 Power BI 服务中的角色

通过在“行级别安全性”屏幕上选择“游戏”角色旁边的省略号(“...”),然后选择“以角色身份测试”,可以测试 Power BI 服务中的角色。

以角色身份测试

选择此选项后,系统会将你当做是 Power BI 服务中的角色成员来显示报表。

使用动态方法配置行级别安全性

可以只设置一次行级别安全性,而无需继续动态维护它。

作为 Tailwind Traders 的管理员,你需要 Power BI 行级别安全性仅向达成销售的人员的显示相关销售信息。 在本示例中,Russel King 达成了四笔销售。 当 Russel 访问报表时,应该只能看到他负责的销售,而不会看到其他销售信息。 仅需进行一次更改即可完全按照之前的配置方式配置行级别安全性。 只需要创建一个角色,而不是创建四个角色。 该角色的 DAX 筛选器如下图所示。

动态角色级别安全性

请注意使用行级别安全筛选器中的 DAX 函数,而不是使用固定字符串(如“游戏”或“服装”)。 函数 userprincipalname() 会将员工表中的电子邮件地址与用户在登录 Power BI 服务时输入的电子邮件地址进行比较。 如果 Russel King 使用电子邮件地址 [email protected] 登录到 Power BI 服务,系统会将该值与员工表中的电子邮件地址进行比较。 假设在员工与销售之间创建了关系,则 Russel 只能看到他的四笔销售。

参照:

https://docs.microsoft.com/zh-cn/learn/modules/row-level-security-power-bi/1-introduction

猜你喜欢

转载自blog.csdn.net/figosoar/article/details/114625265
今日推荐