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

时间:2017-03-31 08:46:30

标签: ssas ssas-tabular row-level-security

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

例如,如果我从架构的两个表构建表格模型,并且这两个表启用了RLS,我希望多维数据集考虑到此安全性,以便在我访问报表并以用户身份登录时,我只会根据我的权限看到汇总数据。

通过网络搜索我找到了在多维数据集中实现RLS的方法,但没有关于从源继承它的方法。但同样,我对这项技术不熟悉,所以我更愿意在这里问一下。 感谢

1 个答案:

答案 0 :(得分:0)

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

有一点需要注意的是,我只会在之前的SSAS 2016中推荐DirectQuery。另一个警告是,与SSAS中的缓存模型相比,性能会变慢。因此,如果性能不可接受,请关闭DirectQuery并在SSAS中重新实现RLS。此外,DirectQuery当前使用零缓存结果,因此SQL的负载根本不会卸载到SSAS。最后,如果您使用DirectQuery和ImpersonateCurrentUser,如果您的SQL服务器与SSAS不在同一服务器上,则可能必须设置Kerberos,以便用户凭据可以双跳。