【问题标题】:How does RLS behave when user does not match record in users table?当用户与用户表中的记录不匹配时,RLS 的行为如何?
【发布时间】:2021-03-23 15:30:19
【问题描述】:

假设我有 sales 和 users 表。 sales 表有 userid 链接到 users 表。

在 users 表的 email 列上配置了动态 RLS 过滤器:

电子邮件 = 用户名()

有一个名为 User 的角色,我通过 power bi 服务添加了几个用户。

因此,每当用户登录时,他都可以看到自己的销售数据。

但是,如果用户是用户组的成员,但用户表中没有该用户的记录,那么当他登录时,将不会应用过滤器,因为用户表中不存在该电子邮件.这样用户就可以看到每个人的数据了吗?

解决方法是什么?

【问题讨论】:

  • 在服务中,如果用户没有被映射,他们不应该看到任何东西,只会看到带有警告的视觉效果。但是 RLS 仅在用户是“查看者”角色而不是管理员、贡献者或成员时适用于服务
  • 用户通过power bi服务映射到角色。但是用户表中不存在具有该用户名的记录。如此有效地不应该应用过滤器并暴露所有数据?

标签: powerbi row-level-security


【解决方案1】:

对于那些不在 RLS 映射表中的人,他们将看不到任何数据。 您可以在 Power BI Desktop 中进行测试 例如,在我的用户映射表中,它链接到客户,然后链接到数据,我有两个用户:

每个用户都可以看到以下客户

因此,如果我将角色视为“some.one@domain.com”,我将只看到映射到该用户的数据。

但是,如果我将其设置为“some.three@domain.com”,您将看不到任何内容。

在服务中,您必须将用户添加到数据集安全设置中设置的角色,如果您不在服务中的角色中,您会收到安全警告:

如果您在该角色中,但不在您的映射表中,则它不会返回任何数据,就像在 Power BI Desktop 中一样。

请注意:要使 RLS 工作,用户必须在工作区级别具有“查看者”角色。如果他们是管理员、会员或贡献者,他们将能够查看所有数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-25
    • 2021-02-22
    • 2018-01-26
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2016-08-06
    相关资源
    最近更新 更多