对象级安全性

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

数据模型安全性首先有效地实现 角色 和行级筛选器,以定义对数据模型对象和数据的用户权限。 对于表格 1400 及更高模型,还可以定义对象级安全性 (OLS) ,其中包括 角色对象中的表级安全性和列级安全性。 配置后,表和列数据以及元数据有助于防止恶意用户发现此类对象存在。

可以使用开源 表格编辑器表格模型脚本语言 (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 表中 Base Rate 列的 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 之间配置单独的关系。

    Table-level security

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

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

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

Power BI

引用配置 OLS 的数据集对象的可视化效果显示与已删除或非现有对象的相同消息。

OLS message in Power BI visualizations

限制

这些Power BI功能不支持为一个或多个表或列对象配置的 OLS 数据集:

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

另请参阅

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