如何解决基于SSAS表格中的安全性,是否可以为不同的用户使用不同的明细行表达式?
我试图基于当前使用该模型的用户帐户,以相同的度量实现不同的明细行表达式(DRE)。例如: 我有一个基于患者信息表的度量。允许用户X查看DRE中的所有列。允许用户Y查看除Patient_ID和Patient_name之外的所有列。
是否可以实现这样的事情?最好基于角色而不是特定的用户帐户。我在网上搜索过,似乎找不到任何这样的功能。
我正在使用Visual Studio 2017 SSAS表格,其兼容性级别为:SQL Server 2017 / Azure分析服务(1400)
解决方法
在角色级别上,您可以在设置中指示用户有权访问哪些数据,但是它可以在整个行的级别上工作,而不是在单个列上。
我还没有测试过,但是也许您可以使用USERNAME()或USERPRINCIPALNAME()获得正确的结果;我想您可以创建一个包含用户名的附加“授权”表。
在计算本身中,根据IF(“授权” [USERNAME]中的“ USERNAME()”,“完全访问权限”,“有限访问权限”)进行引用
编辑: 在2017年,引入了对象级安全性。
类似于表级安全性,使用列级安全性,您不仅可以限制对列数据的访问,还可以限制敏感的列名,从而有助于防止恶意用户发现列。
在Model.bim,表格模型脚本语言(TMSL)或表格对象模型(TOM)中基于JSON的元数据中设置了列级安全性。将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"
}
]
}
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。