Active directory SSAS角色-或而不是和

Active directory SSAS角色-或而不是和,active-directory,ssas,roles,dimensions,Active Directory,Ssas,Roles,Dimensions,我们正在使用SSAS 2008。我们有一个与数据相关的权限问题。我们能够成功地将SSAS角色应用于传入用户的(Active Directory[AD])上下文。i、 e.返回的结果基于用户的SSAS角色,并根据角色限制从维度返回的数据 据我所知,您可以对一个用户应用多个角色,以便维度采用相关角色并限制其结果-然而,此条件作为交叉点(即and)应用-它是否可以作为联合(即OR)应用 有几件事需要注意。 -我们通过Excel访问多维数据集,因此在某些MDX中依赖上述智能不一定能够实现,因为用户可以查

我们正在使用SSAS 2008。我们有一个与数据相关的权限问题。我们能够成功地将SSAS角色应用于传入用户的(Active Directory[AD])上下文。i、 e.返回的结果基于用户的SSAS角色,并根据角色限制从维度返回的数据

据我所知,您可以对一个用户应用多个角色,以便维度采用相关角色并限制其结果-然而,此条件作为交叉点(即and)应用-它是否可以作为联合(即OR)应用

有几件事需要注意。
-我们通过Excel访问多维数据集,因此在某些MDX中依赖上述智能不一定能够实现,因为用户可以查询任何维度(一些维度可能受角色限制,而其他维度则不受限制)
-我们曾经玩弄过这样一个想法:每个用户有两个立方体和两个不同的用户ID(在不同的广告组中);用户将根据他们希望看到的数据(以及他们将要查询的多维数据集)从Excel中提取数据;这很混乱,因为我们希望用户的结果都包含在一个结果集中,而不是两个单独的结果集中


是否有人经历过和/或解决了上述问题?是否可能?是否有其他选择?

您可以将
角色属性添加到SSAS连接字符串中,该字符串包含以逗号分隔的待评估数据库角色列表。服务器将仅应用该列表中应用的角色

Data Source=localhost;Initial Catalog=MySSASDb;Roles=RoleA,RoleB

如果需要对两个维度设置或条件,可以添加另一个维度,其中两个级别与两个初始维度的级别相同:

例如,您希望将角色限制为[Country].[France]或[Currency].[USD],然后可以添加[CountryThenCurrency]维度并允许以下两种路径:[CountryThenCurrency].[France].[*]和[CountryThenCurrency].*.[USD]


换言之:添加维度,以便能够在单个维度中处理所有问题或条件。

我一直在寻找解决此问题的方法,并找到了Chris Webb的一篇优秀文章

其想法是创建一个名为DIM_Security的垃圾维度,并将这两个维度的所有不同组合放在其中。现在,通过一个MDX表达式,您可以获得具有维度1='allowedvalue'或维度2='allowedvalue'的所有成员的并集,因此您具有或权限

此外,Webb解释了如何使用动态安全性来实现这一点


没有复制所有MDX,因为原始帖子有好几页长,有很多截图,并且在网络上链接了很多次。

我喜欢这种方法——非常干净——但从安全角度来看,我只需要能够公开适当的数据,而不管通过连接字符串传递的角色是什么。这种方法可能会起作用。下面将介绍如何实现更改