对象级安全性

适用于: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

数据模型安全性从有效实现 角色 和行级筛选器开始,以定义用户对数据模型对象和数据的权限。 对于表格 1400 及更高版本的模型,还可以定义对象级安全性 (OLS) ,其中包括 Roles 对象中的表级安全性和列级安全性。 配置后,表和列数据以及元数据都会受到保护,以帮助防止恶意用户发现此类对象的存在。

可以使用开源 表格编辑器表格模型脚本语言 (TMSL) 或表格 对象模型 (TOM) 来配置 OLS。

表级别安全性

使用表级安全性,不仅可以限制对表数据的访问,还可以限制对敏感表名称元数据的访问。 将 Roles 对象tablePermissions 类的 metadataPermission 属性设置为 none

在此示例中,Product 表的 tablePermissions 类的 metadataPermission 属性设置为 none:

"roles": [
  {
    "name": "Users",
    "description": "All allowed users to query the model",
    "modelPermission": "read",
    "tablePermissions": [
      {
        "name": "Product",
        "metadataPermission": "none"
      }
    ]
  }

行级别安全性

与表级安全性类似,使用列级安全性不仅可以限制对列数据的访问,还可以限制对敏感列名称元数据的访问。 将 Roles 对象columnPermissions 类的 metadataPermission 属性设置为 none

在此示例中,Employees 表中“基本费率”列的 columnPermissions 类的 metadataPermission 属性设置为 none:

"roles": [
  {
    "name": "Users",
    "description": "All allowed users to query the model",
    "modelPermission": "read",
    "tablePermissions": [
      {
        "name": "Employee",
        "columnPermissions": [
          {
            "name": "Base Rate",
            "metadataPermission": "none"
          }
        ]
      }
    ]
  }

限制

  • 如果模型中断关系链,则无法为模型设置表级安全性。 在设计时生成错误。 例如,如果表 A 和 B 以及 B 和 C 之间存在关系,则无法保护表 B。如果表 B 受到保护,则表 A 上的查询无法传输表 A 与 B 以及 B 和 C 之间的关系。在这种情况下,可以在表 A 和表 C 之间配置单独的关系。

    表级别安全性

  • 行级别安全性和对象级安全性不能从不同的角色组合在一起,因为它可能会引入对安全数据的意外访问。 对于属于此类角色组合的成员的用户,在查询时会生成错误。

  • 如果动态计算 (度量值、KPI、DetailRows) 引用受保护的表或列,则它们将自动受到限制。 虽然没有显式保护度量值的机制,但可以通过更新表达式以引用受保护的表或列来隐式保护度量值。

  • 引用受保护列的关系工作,前提是该列的表 受保护。

Power BI

引用配置了 OLS 的语义模型对象的可视化效果显示与已删除或不存在对象的相同消息。

Power BI 可视化效果中的 OLS 消息

限制

以下 Power BI 功能不支持为一个或多个表或列对象配置 OLS 的模型:

  • Q&A 可视化效果
  • 快速见解可视化效果
  • 智能叙述可视化效果
  • Excel 数据类型库

另请参阅

角色
Roles 对象 (TMSL)
表格模型脚本语言 (TMSL)
表格对象模型 (TOM)