是否可以根据SSAS表格中的安全性为不同的用户提供不同的详细行表达式



我正试图根据当前使用该模型的用户帐户,在同一度量上实现不同的细节行表达式(DRE(。例如:我有一个基于包含患者信息的表格的测量。允许用户X查看DRE中的所有列。用户Y可以查看除patient_ID和patient_name之外的所有列。

有可能实现这样的东西吗?最好是基于角色而不是特定的用户帐户。我在网上搜索过,似乎找不到任何类似的功能。

我正在使用兼容级别为SQL Server 2017/AAzure Analysis Services(1400(的Visual Studio 2017 SSAS表格

在角色级别,您可以在设置中指示用户可以访问哪些数据,但它适用于整行的级别,而不是单个列的级别。

我还没有测试过,但也许你可以使用USERNAME((或USERPRINCIPALNAME((得到正确的结果;我想你可以创建一个额外的";授权的";包含用户名的表。

在计算本身中,根据"Authorized"[用户名]中的IF(用户名((,";"完全访问"有限访问"(

编辑:2017年,引入了对象级安全。

https://learn.microsoft.com/en-us/analysis-services/tabular-models/object-level-security?view=asallproducts-allversions#列级安全

与表级安全性类似,使用列级安全性,您不仅可以限制对列数据的访问,还可以限制对敏感列名的访问,有助于防止恶意用户发现列。

列级安全性在Model.bim、表格模型脚本语言(TMSL(或表格对象模型(TOM(中基于JSON的元数据中设置。将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"
}
]
}
]
}

最新更新