如何将SSAS层次结构级别限制为用户?

时间:2009-06-22 10:55:40

标签: security ssas hierarchy dimensions

我对ssas相对较新,并且遇到了麻烦。

情景:

  • 具有公司层次结构的多维数据集(区域,子区域,国家/地区,公司)
  • 通过将用户名链接到允许公司列表来过滤公司维度来应用维度安全性。
  • 启用Visual Total已启用,因此您只能查看您有权访问的公司的层次结构的每个级别的总计。

问题:

已经要求如果用户只能看到一个国家的公司(例如),那么他们就不应该能够看到层次结构中的更高级别(因为总数将是相同的)。也就是说,如果您只能看到英国公司,您应该只看到层次结构的国家和公司级别,而不是子区域(欧洲)和地区(EMEA)级别。

有没有人对如何实现这一点有任何想法,或者即使可以做到这一点?我们可以管理在报告层中工作的解决方案,但要求是应在多维数据集中处理,以允许未来的临时报告/备选报告解决方案。

我尝试的想法/事情:

  • 试图查看设置默认成员是否对您可以看到的层次结构的级别有任何影响(它没有)
  • 实施多个视角 这是完全相同的 他们使用的公司层级;每 perspective使用具有的层次结构 从较低和较低的水平开始。

    • 这可以解决问题,但我看不出如何将用户限制为只有一个视角
  • HideMemberIf - 据我所见,这用于创建一个参差不齐的层次结构,并隐藏较低的成员而不是层次结构的顶层。

所以,总之,嗯。

1 个答案:

答案 0 :(得分:2)

您可以通过删除角色在关联层次结构中查看成员的权限来执行此操作。

要做到这一点:

  • 打开角色设计器
  • 选择“维度数据”标签
  • 选择适当的维度(确保它是多维数据集维度,而不是数据库维度)
  • 为要隐藏的每个属性层次结构:
    • 从下拉列表中选择适当的属性层次结构
    • 选择“取消选择所有成员”

然后确保他们使用的视角不会尝试显示层次结构;任何这样做的尝试都会导致客户端错误,因为毫无疑问,您的多维数据集具有引用这些成员的各种互连查询。

此外,任何引用这些成员的计算都会引起摇摆不定;权限在计算之前进行评估,因此您应该删除这些计算,或者采用在生产中将多维数据集的ScriptErrorHandlingMode属性设置为IgnoreAll的次优解决方案。

小方注意:视角不是用于安全性,而是用于演示。因此,如果您不希望您的用户在某个视角中看到您已被屏蔽的内容,请记住他们可以通过其他方式查看它们,例如通过使用MDX,或使用忽略透视图的客户端功能。

其他一点注意事项:有些人认为这种程度的安全性是客户端问题。我不同意。