【问题标题】:Dimension Security in SSAS & SSRSSSAS 和 SSRS 中的维度安全性
【发布时间】:2009-02-19 17:21:58
【问题描述】:

我遇到了在 SSAS 中实现维度级别安全性的问题。这是我所做的 - 1. 在 SSAS 中定义一个角色并在维度级别应用安全性(取消选中我不希望此角色访问的多维数据集维度并设置允许和拒绝集)。 2. 使用 Cube Browser 测试,运行良好。 3. 使用SSRS测试,没有变化,我仍然能够查询维度并得到我不想要的结果。

问题 - 是否可以将我在 Cube 级别定义的安全性传播到 SSRS?我愿意相信是的。

如果是,那么这就是我需要的 -

  1. 用户将使用 Windows 身份登录到报表管理器(IIS 上的集成身份验证已打开 - 完成)
  2. 捕获此身份以找出他们所属的 SSAS 角色 - 我想这将通过查询,似乎不会自动工作(如何做到这一点?)
  3. 用户在 SSRS(在 SSAS 级别应用基于角色的安全性)中此角色的限制范围内工作,即如果维度 X 对用户不可用,他/她应该无法查询它。 (怎么做?)

我已经参考了很多关于此的博客,甚至找到了一个 - http://www.sqlmag.com/Article/ArticleID/96763/sql_server_96763.html

但是这个似乎有更多关于如何在 SSAS 中设置它的信息,而不是如何在 SSRS 中使用它。

任何研究过这种方法或对此有所了解的人请告诉我。

【问题讨论】:

    标签: sql-server sql-server-2005 reporting-services ssas reportingservices-2005


    【解决方案1】:

    我认为您需要查看报表服务器上 SSRS 中的数据源,并确保将其设置为使用登录用户的 windows cred 身份验证后,这可能就是您要查找的内容。

    【讨论】:

      【解决方案2】:

      你需要做的就是:

      在 SSRS 报表的数据源中,指定在 SSAS 数据库中创建的角色名称,如下所示:

      数据源=LOCALHOST;初始目录=XXXXX;角色=角色名称

      谢谢 萨米尔

      【讨论】:

      • 谢谢各位,我意识到我的 Reporting Services 没有正确配置为使用 Windows 用户,这可能是所有安全故障的原因。我会正确设置它,然后可能会再试一次。干杯!!
      【解决方案3】:

      我还没有在 SSAS 中这样做,但我已经在引擎中这样做了。 Jeremiah Peschka 有一个blog about row-based security setup,如果您要使用集成的 Windows 安全性来执行此操作,那么您可以使用 user_name() 函数来获取当前登录名。您将为每个维度使用一个查找表,每个维度行都有一行加上用户名。查询时,像这样加入维度安全表:

      FROM dbo.Customers cs
      INNER JOIN dbo.CustomersSecurity css ON cs.CustomerId = css.CustomerId AND css.UserName = User_Name()
      

      这样,您的加入将只返回用户可以看到的客户的记录。

      缺点是,如果您使用分区,引擎将无法构建一个好的执行计划,仅根据您的用户可以看到的内容从正确的分区中提取正确的记录。例如,如果您以只能查看佛罗里达州记录的用户身份登录,并且您的数据按州进行了分区,这无关紧要 - 引擎仍会扫描所有分区,因为它无法预测构建计划时的用户信息。

      【讨论】:

      • 感谢您的回复布伦特!目前,我有一个未向用户 1 公开的维度。我已设置用户名功能来获取 Windows 身份。当我部署多维数据集并运行报告时,用户 1 仍然能够访问受限维度。还尝试了允许/拒绝设置不起作用 - 有什么建议吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      相关资源
      最近更新 更多