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

已完成

定义静态规则既简单又有效。 但要注意缺点:设置静态规则可能需要投入大量精力来创建和设置。 它还要求您在新区域或部门加入时更新并重新发布数据集。

如果要设置许多规则,并且您预计将来会添加新规则,请考虑改为创建动态规则,从而无需持续动态维护它。

当模型表存储用户名或电子邮件地址值时,定义动态规则既简单又有效。 它们允许您强制实施数据驱动的 RLS 设计。 例如,当在员工表中添加或删除销售人员(或者将销售人员分配到不同区域)时,此设计方法正好有效。

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

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

有三个特定的 DAX 函数:

  • USERNAMEUSERPRINCIPALNAME - 以文本值形式返回 Power BI 经过身份验证的用户。

  • CUSTOMDATA - 返回传入连接字符串的 CustomData 属性。 使用连接字符串连接到数据集的非 Power BI 报告工具可以设置此属性,例如 Microsoft Excel。

注意

请注意,USERNAME 函数在 Power BI Desktop 中使用时,会以 DOMAIN\username 的格式返回用户。 但是,在 Power BI 服务中使用时,它会返回用户的用户主体名称 (UPN) 的格式,例如 username@adventureworks.com。 或者,您可以使用 USERPRINCIPALNAME 函数,该函数始终以用户主体名称的格式返回用户。