Report Manager数据源的数据库角色成员资格设置

时间:2012-02-10 01:24:39

标签: reporting-services ssrs-2008 ssms sql-server-2008 reportmanager

我正在开发SQL Server 2008 R2上的SQL Server Reporting Services(SSRS)报告,并使用Report Manager作为演示和测试报告的方法。我正在寻找一种方法,允许同一域的用户连接到报表管理器并通过浏览器(而不是SharePoint)运行报表,而不会让用户有太多的数据源访问权限。我目前将每个用户列为db_owner,用于与数据集和数据源关联的数据库。我想限制此访问权限,我尝试了db_datareader,但此级别不允许用户运行报告并向用户提供此错误:“无法创建与数据源'DBname'的连接。 (rsErrorOpeningConnection)”。

我将用户添加到报表管理器站点的方法:选择“站点设置”下的“安全”选项卡,然后选择“新角色分配”,将用户添加为“系统用户”。然后,我在工具栏上选择“文件夹设置”,然后再次选择“新角色分配”,将用户添加为“浏览器”。我尝试将用户添加为“内容管理器”,但在数据源方面仍然存在相同的错误。

我将用户添加到数据源的方法:从服务器的“安全”选项卡中选择新登录,将domain \ username添加到“登录名:”,使用Windows身份验证并将默认数据库从master更改为数据库是报告数据源。然后,我选择“用户映射”并在数据库的数据源旁边进行检查。在'数据库角色成员资格:DBname'部分中,我选择了db_owner,并且已经选择了public。我在下面列出了截图。 我的问题是我可以使用哪些“数据库角色成员资格”用于SSRS和报表管理器,它不会像db_owner那样广泛并且具有最佳安全性?我尝试过db_datareader但是用户在运行报告时无法连接到数据源。

我已经研究过这个问题,但我没有发现任何细节接受将用户添加为我所描述的db_owner。 MSDN的行为就好像您需要为报表管理器中的设置设置用户/报表才能访问数据源。我曾尝试仅将报表管理器设置与数据源的两个设置一起使用,共享和嵌入,没有运气。

提前谢谢

1 个答案:

答案 0 :(得分:2)

通常,SSRS中的数据源将设置为使用固定帐户,Windows帐户或SQL身份验证。应该为此帐户授予对数据库的最小权限:db_datareader很常见。

然后,如上所述,通过报表管理器控制报表的安全性。这样就不需要通过更改用户权限来更改数据库本身的安全性。

但您上面描述的方法也应该有效。如果您的查询是从表中选择的标准SQL查询,那么当用户具有db_datareader访问权时看到的错误是令人惊讶的。如果您使用的是存储过程,则还需要授予对这些存储过程的访问权限。使用设置为db_datareader的测试用户帐户;看看您是否可以通过SQL Server Management Studio连接并执行查询。

根据您的安全要求,我会使用专用帐户从报告中进行数据库访问,例如“ReportReader”。开发和测试以此用户身份访问数据库的报表,并确保用户具有最小的访问权限,只读权限和/或仅限于他们需要执行的表或过程。

用于访问数据库的凭据在数据源的属性中设置。这是经常使用共享数据源的一个原因,并且报告链接到共享数据源: Data source properties

屏幕截图显示了正在使用的SQL Server身份验证帐户。这可以很容易地成为固定的Active Directory帐户;在这种情况下,请选中“在...时用作Windows凭据”。