Table of Contents

配置行级安全性 (RLS)

数据安全 Visual 摘要


通过调整为表定义的角色或表格权限即可更改 RLS。 在特定角色中选择某个表格权限时,可在“表达式编辑器”窗口中查看此 DAX 筛选表达式。 此筛选表达式是 RLS 配置中最关键的部分,用于决定用户能看到哪些数据。



在 Tabular Editor 3 中配置 RLS

下面概述了对现有 RLS 常见的一些修改:


1。 删除角色

要从模型中删除角色,只需选中角色对象后按 Del,或右键并选择“删除”。

Data Security Create Role
图 1: 在模型中删除角色。
Note

只要模型中至少还存在另一个角色,原本分配到该角色的所有用户将无法再查看模型数据。


2。 添加新角色

要在模型中添加角色:

  1. 右键单击“角色”对象类型: 这将打开一个对话框,供你创建新角色。
  2. 选择“Create” > “角色”: 给新角色命名。
Data Security Create Role
图 2: 在模型中创建新角色。
  1. Model Permission 属性设置为 Read 这是确保该角色的所有成员都能访问 Dataset 的必要设置。
Data Security Create Role
图 3: 必须设置 Model Permission 属性。
  1. 设置权限: 按下文所述设置 RLS 表格权限和/或 OLS 对象权限。

3。 移除 RLS

要从模型中移除 RLS,必须删除所有表格权限。 要从模型中移除数据安全性,必须删除所有角色。

Note

删除所有角色后,只要用户对 Dataset 具有 Read 权限,就能看到所有数据。


4。 修改表格权限

要修改某个角色的现有表格权限:

  1. 展开角色: 这将显示表格权限。
  2. 选择表格权限: 这会在表达式编辑器中显示筛选权限 FILTER 的 DAX。
Data Security Create Role
图 4: 选择表格权限时,表达式编辑器会显示 DAX FILTER 表达式。
  1. 调整 FILTER 表达式 / RLS 表格权限: 建议你在使用前先测试 / 验证 DAX:
  • 将 FILTER 表达式复制到新的 DAX 查询窗口,并放在 EVALUATE 语句下方。
  • ADDCOLUMNS 语句中,将其作为 Expression,用于遍历某个表或其子集。
  • 执行并观察结果。
  • 在动态 RLS 中,将 USERNAME()USERPRINCIPALNAME() 替换为安全表中的已知值。
  • 重新运行 DAX 查询,并验证结果是否符合预期。 重复以上步骤,直到满意为止。
Data Security Validation
图 5:演示如何在 DAX 查询窗口中,通过在针对表(或表的一部分,例如用户别名)的迭代器中使用 FILTER 筛选表达式来验证 RLS。 在此示例中,表格权限中的原始 RLS Filter Expression 已被修改 (Yellow),改为在 dataset 中显式添加用户主体名称,以进行测试 (Green)。 RLS 代码在 ADDCOLUMNS 迭代器中执行,该迭代器遍历表中相关的部分。 勾号表示计算结果为 TRUE 的行。 该测试表明:对于此 UPN,RLS 按预期运行,因为在提供该 UPN 时,只有 Gal Aehad 返回 TRUE。
EVALUATE

// 创建表以测试你的 RLS
ADDCOLUMNS ( 
  VALUES ( 'Regions'[Territory Directors] ),
  "@RLS-Validation",

    // RLS 代码
    VAR _CurrentUser = 
      SELECTCOLUMNS (
        FILTER ( 
          'Employees', 
          'Employees'[Employee Email]

            // 用用户邮箱替换 USERPRINCIPALNAME() 进行测试
            = "gal.aehad@spaceparts.co" // USERPRINCIPALNAME ()
        ),
        "@Name", 'Employees'[Employee Name]
      )
    RETURN
      'Regions'[Territory Directors] IN _CurrentUser

)

// 按 TRUE() 到 FALSE() 的顺序排序
// 为 TRUE() 的行将显示数据
ORDER BY [@RLS-Validation] DESC

5。 为角色添加新的表格权限

要添加新的表格权限:

  1. 右键单击角色: 选择“添加表格权限……”
Data Security Create Role
图 6:在 Tabular Editor 中,RLS 的表格权限显示在角色下。 通过右键单击角色并选择 “添加表分区...” 即可创建新的表格权限。
  1. 选择表并点击“确定”: 选择要为其创建权限的表。
  2. 编写 FILTER 筛选表达式 / RLS 表格权限: 为 FILTER 筛选表达式编写 DAX。 同上,你需要验证此筛选表达式(见 图 5):
  • 将 FILTER 筛选表达式复制到新的 DAX 查询窗口,并放在 EVALUATE 语句下。
  • 将其作为 ADDCOLUMNS 语句的表达式,并对表或表的一部分进行迭代。
  • 执行并查看结果。
  • 将动态 RLS 中的 USERNAME()USERPRINCIPALNAME() 替换为安全表中的已知值。
  • 重新运行 DAX 查询,并验证结果是否符合预期。 重复以上步骤,直到满意为止。

6。 为角色分配或移除用户

你可以在 Tabular Editor 中为角色分配或移除用户/组。

  1. 右键单击__角色__,选择__编辑成员__……
Data Security Create Role
图 7:通过右键单击某个角色并选择“编辑成员……”即可将用户分配到该角色
  1. 在“添加 Windows AD 成员”按钮上单击__下拉按钮__,然后选择__Azure AD 成员__:
Data Security Create Role
图 8:对于 AAS/SSAS 模型,可以通过 “编辑成员...” 对话框添加用户。
  1. 在__成员名称__属性中指定 Azure AD 用户标识(通常是用户电子邮件地址)。
  2. 单击__确定__。
  3. __保存__模型。
Important

如果您的组织在 SQL Server Analysis Services 中使用本地 Active Directory,则需要使用__Windows AD 成员__选项,而不是__Azure AD 成员__。

Note

将 Power BI Dataset 发布到 Power BI 服务后,您还可以通过Dataset 安全设置来管理角色成员。 此外,您还可以通过 SQL Server Management Studio 来管理角色成员(除 Power BI Dataset 外,这也适用于 AAS/SSAS 模型)。