通过模拟测试数据安全

DAX 查询、Pivot Grid 或 预览数据 可用于在 Tabular Editor 中测试数据安全。 建议每次更改配置后都_务必_测试数据安全,以降低 RLS/OLS 实施不当及其后果带来的风险。
Important
在 Tabular Editor 3 中使用模拟来测试数据安全,仅适用于托管在 Analysis Services 实例或 Power BI 服务中的 Dataset。 Tabular Editor 3 桌面版许可证无法使用此功能。
- 关于数据安全和 RLS/OLS: RLS 与 OLS 的功能概览。
- 修改/设置 RLS 配置: 如何在 Dataset 中配置 RLS。
- 修改/设置 OLS 配置: 如何在 Dataset 中配置 OLS。
- 使用模拟测试 RLS/OLS(本文): 如何使用 Tabular Editor 轻松验证数据安全。
使用模拟进行测试
在 Tabular Editor 3 中使用 模拟 功能即可轻松测试数据安全。 “模拟”是一项功能,可让你以模型角色或用户的身份查看查询结果。 它类似于 Power BI 服务中的 “以角色查看...” 功能,但有两个关键区别:
- 被模拟的最终用户除了要分配角色并有 Dataset 读取权限外,还必须拥有 Dataset 构建权限。
- 在 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 中不会被过滤,那么开发者可能需要结合模型重新审视数据安全的实现方案。