SSAS表格模型的行级安全性(RLS)

SSAS表格模型的行级安全性(RLS),ssas,ssas-tabular,row-level-security,Ssas,Ssas Tabular,Row Level Security,我是SSAS技术开发分析模型的新手。我必须为一个安全性非常相关的大型应用程序构建几个表格模型。我想做的是重用多维数据集中源中现有的行级安全性,并将其应用于多维数据集本身 例如,如果我从一个模式的两个表构建一个表格模型,并且这两个表启用了RLS,我希望多维数据集考虑到这种安全性,这样当我访问报表并以用户身份登录时,我将仅根据我拥有的权限查看聚合数据 通过网络搜索,我找到了在多维数据集中实现RLS的方法,但没有找到从源代码继承RLS的方法。不过,我对这项技术还是新手,所以我更愿意在这里提问。 谢谢对

我是SSAS技术开发分析模型的新手。我必须为一个安全性非常相关的大型应用程序构建几个表格模型。我想做的是重用多维数据集中源中现有的行级安全性,并将其应用于多维数据集本身

例如,如果我从一个模式的两个表构建一个表格模型,并且这两个表启用了RLS,我希望多维数据集考虑到这种安全性,这样当我访问报表并以用户身份登录时,我将仅根据我拥有的权限查看聚合数据

通过网络搜索,我找到了在多维数据集中实现RLS的方法,但没有找到从源代码继承RLS的方法。不过,我对这项技术还是新手,所以我更愿意在这里提问。
谢谢

对于您的请求,最明显的解决方案是在精简模式(称为模式)下运行SSAS表格。只要在Visual Studio中的“现有连接”对话框中设置了ImpersonateCurrentUser,当用户查询SSAS模型时,SSAS将根据最终用户的凭据向数据库发送一个或多个SQL查询。SQL数据库中的RLS将在这里发挥作用

一个警告是,我只建议在SSAS 2016中使用DirectQuery,而不是之前使用。另一个警告是,与SSAS中的缓存模型相比,性能会很慢。因此,如果性能不可接受,则关闭DirectQuery并在SSA内重新实现RLS。此外,DirectQuery当前使用零缓存结果,因此SQL负载根本不会卸载到SSA。最后,如果使用DirectQuery和ImpersonateCurrentUser,则可能必须设置SQL server是否与SSA位于同一服务器上,以便用户凭据可以双跳