通过模拟测试数据安全

DAX 查询、Pivot Grid 或 预览数据 可用于在 Tabular Editor 中测试数据安全。建议每次更改配置后都务必测试数据安全,以降低 RLS/OLS 实施不当及其后果带来的风险。
Important
在 Tabular Editor 3 中使用模拟来测试数据安全,仅适用于托管在 Analysis Services 实例或 Power BI 服务中的 Dataset。 Tabular Editor 3 Desktop 许可证无法使用此功能。
- 关于数据安全和 RLS/OLS: RLS 与 OLS 的功能概览。
- 修改/设置 RLS 配置: 如何在 Dataset 中配置 RLS。
- 修改/设置 OLS 配置: 如何在 Dataset 中配置 OLS。
- 使用模拟测试 RLS/OLS(本文): 如何使用 Tabular Editor 轻松验证数据安全。
使用模拟进行测试
在 Tabular Editor 3 中使用 模拟 功能即可轻松测试数据安全。 “模拟”是一项功能,可让你以模型角色或用户的身份查看查询结果。这与 Power BI 服务中的 “以角色身份查看...” 功能类似,但有两个关键区别:
- 除角色分配和 Dataset 读取访问权限外,被模拟的最终用户还需要具备 Dataset Build 权限。
- 在 Tabular Editor 3 中可以执行任何查询;不像 Power BI 服务那样,仅限于 Report 中现有的 Visual。
这很有价值,因为它让你可以运行预定义的测试,看看任何拥有构建权限的最终用户会如何看到结果。这有助于确保即使面对复杂查询和 DAX 表达式,数据安全也能按预期工作,并且用户只能看到他们应该看到的内容。
Important
请确保不要通过为最终用户分配 Workspace 角色(Contributor、Member、Admin)来授予 Build 权限,因为这些角色对 Dataset 具有 Write 权限,从而会绕过数据安全;即使配置正确,测试也会看起来像没有生效一样。

如何使用模拟身份进行测试
要使用模拟身份进行测试,按以下步骤操作:
- 确保 Dataset 配置和访问权限正确: 被模拟的最终用户……
- ...已分配至相应的 角色。
- ...已被授予 Dataset 读取访问权限。
- ...已被授予 Dataset 生成访问权限。 (Power BI)
- ...不是 Workspace 的 Contributor、Member 或 Admin(Power BI)。
- 新建一个 DAX 查询、Pivot Grid 或“预览数据”窗口:
- 建议先从 预览数据 开始,以观察对模型表的影响
- 然后,使用 DAX 查询 执行第二次验证。这是因为 DAX 查询可以保存,用于文档记录和后续参考;当模型发生变更需要重新测试时会很有用。
选择 'Impersonation' 并输入用户电子邮件: 如果你已实施 Static RLS,也可以改为测试该角色。
浏览数据,验证结果是否符合预期:(根据安全规则)。
测试技巧
测试多个用户: 建议每个角色至少测试 3 到 10 个不同用户。你也可以将测试自动化,遍历安全表中的每个 UPN(例如使用 C# Script 和宏)。
测试每个角色和表格权限: 由于每个表格权限对应不同的 DAX 筛选表达式,因此必须分别测试。确保每个角色都经过测试,并且每次测试都包含已配置筛选表达式的相关表。例如,如果某个角色在 'Customers' 和 'Products' 表上定义了表表达式,请确保你的查询包含这两张表中的属性,以便进行验证。
测试多种查询/度量值: 尽量找一些复杂的查询或度量值来测试,尤其是那些在数据安全场景下可能出问题的查询或度量值。例如,如果计算需要与未过滤的总体平均值(即占总计的百分比)进行比较,并且预期 该总计 在 RLS 中不会被过滤,那么开发者可能需要结合模型重新审视数据安全的实现方案。