【问题标题】:SSAS roles - OR rather than ANDSSAS 角色 - OR 而不是 AND
【发布时间】:2012-08-02 23:03:55
【问题描述】:

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

据我所知,您可以为用户应用多个角色,以便维度承担相关角色并限制其结果 - 但是此条件作为交集应用(即 AND) - 是否能够应用作为联合体(即 OR)

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

有没有人经历和/或解决上述问题 - 是否可能 - 是否有替代方案?

【问题讨论】:

    标签: active-directory ssas roles dimensions


    【解决方案1】:

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

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

    【讨论】:

    • 我喜欢这种方法——它很干净——但从安全角度来看,我只需要能够公开适当的数据,而不管连接字符串传递的角色是什么
    【解决方案2】:

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

    例如,您要将角色限制为 [Country].[France] 或 [Currency].[USD],则可以添加 [CountryThenCurrency] 维度并允许以下 2 条路径:[CountryThenCurrency].[法国].[*] 和 [CountryThenCurrency].[*].[USD]

    换句话说:添加维度以便在一个维度中实现所有 OR 条件。

    【讨论】:

    • 这种方法可能有效 - 将着眼于实施更改
    【解决方案3】:

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

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

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

    此外,Webb 还解释了如何使用动态安全性来做到这一点。

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

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      相关资源
      最近更新 更多