0

我对 ssas 比较陌生,并且遇到了一些问题。

场景:

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

问题:

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

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

我尝试过的想法/事情:

  • 尝试查看设置默认成员是否对您可以看到的层次结构的级别有任何影响(它没有)
  • 为他们使用的公司层次结构实施了多个相同的视角;每个视角都使用一个层次结构,该层次结构从一个越来越低的层次开始。

    • 这在一定程度上可行,但我看不出如何将用户限制在一个角度
  • HideMemberIf - 据我所知,这用于创建参差不齐的层次结构并隐藏较低成员而不是层次结构的顶层。

所以,总之,嗯。

4

1 回答 1

2

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

去做这个:

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

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

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

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

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

于 2009-06-22T13:41:36.803 回答