对象级安全性
适用于: 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 之间配置单独的关系。
行级安全性和对象级安全性不能与不同的角色组合,因为它可能会引入对受保护数据的意外访问。 对于属于此类角色组合成员的用户,查询时会生成错误。
如果度量值、KPI、DetailRows) 引用受保护的表或列,则动态计算 (度量值、KPI、DetailRows) 会自动受到限制。 虽然没有显式保护度量值的机制,但可以通过更新表达式来引用受保护的表或列来隐式保护度量值。
引用受保护列工作的关系,前提是该列位于的表 未 受到保护。
Power BI
引用配置 OLS 的数据集对象的可视化效果显示与已删除或非现有对象的相同消息。
限制
这些Power BI功能不支持为一个或多个表或列对象配置的 OLS 数据集:
- QA& 可视化效果
- 快速见解可视化效果
- 智能叙事可视化效果
- Excel数据类型库