SSAS角色 - 或者而不是AND

时间:2012-08-02 23:03:55

标签: active-directory ssas roles dimensions

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

据我所知,您可以将多个角色应用于用户,以便维度具有相关角色并限制其结果 - 但是此条件作为交集应用(即AND) - 是否可以应用作为联盟(即OR)

有几点需要注意 - 我们通过Excel访问我们的多维数据集,因此在某些MDX中依赖上述智能不一定是可以实现的,因为用户可以查询任何维度(一些可能受角色限制,而另一些维度不受影响)
- 我们已经玩弄了两个立方体与每个用户的两个不同userIds(在不同的AD组中)相结合的想法;用户将根据他们想要查看的数据从Excel中提取数据(因此他们将查询的多维数据集);这是混乱的,因为我们希望用户结果全部包含在一个结果集中而不是两个单独的结果

有没有人经历和/或解决上述问题 - 是否有可能 - 还有其他选择吗?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

如果您需要2个维度的OR条件,则可以添加另一个维度,其中2个级别与2个初始维度的级别相同:

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

换句话说:添加维度以便能够在单个维度中使用所有OR条件。

答案 2 :(得分:0)

我一直在寻找这个问题的解决方案,并找到了一篇很棒的文章Chris Webb。

http://cwebbbi.wordpress.com/2011/12/22/replacing-cell-security-with-dimension-security/

我们的想法是创建一个名为DIM_Security的垃圾维度,并将两个维度的所有不同组合放在那里。现在通过MDX表达式,你得到所有成员的UNION,其中dimension1 ='allowedvalue'或dimension2 ='allowedvalue',因此你有OR权限。

此外,Webb解释了如何通过动态安全性来实现这一目标。

不会复制所有MDX,因为原始帖子有几页长,有许多屏幕,并且在网络上多次链接。