0

我坚持在SSAS维度级别实现安全性的问题。这是我做过什么 - 1.定义在SSAS作用,并在尺寸级别上应用的安全性(不勾选,我不想要这个角色访问多维数据集维度和设定可以让&否认套)。 2.使用多维数据集浏览器进行测试,它工作正常。 3.使用SSRS进行测试,没有变化,我仍然能够查询尺寸&获得我不想要的结果。维度安全性在SSAS和SSRS

的问题 - 是否有可能传播我在魔方水平SSRS定义安全?我想相信是的。

如果是的话那么这里就是我所需要的 -

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

我已经提到这个相当多的博客,甚至找到了一个 - http://www.sqlmag.com/Article/ArticleID/96763/sql_server_96763.html

但是这一次似乎对如何内SSAS设置它的更多信息,而而不是如何在SSRS中使用它。

任何人谁对这种方法的工作还是有这样的一个认识,请让我知道。

回答

3

我认为你需要在报表服务器上的SSRS中查看你的数据源,并确保它被设置为使用登录的用户windows cred的身份验证,这可能是你正在寻找的。

0

我没有在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() 

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

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

+0

感谢您的回应Brent!目前我有一个维度没有公开给用户1.我已经设置了用户名函数来获取Windows身份。当我部署多维数据集并运行报告时,用户1仍然可以访问受限维度。也尝试允许/拒绝集不工作 - 任何建议? – Vineet 2009-02-23 15:04:46

2

所有你需要做的是:

在SSRS报表的数据源,指定SSAS数据库这样创建的角色名称:

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

谢谢 Sameer

+0

谢谢大家,我已经意识到我的Reporting Services配置不正确,无法使用windows用户,这可能是所有安全问题的原因。我会正确设置它,然后再尝试一次。干杯!! – Vineet 2009-03-17 10:55:52