2

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

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

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

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

先感谢您

4

1 回答 1

2

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

然后,报告的安全性通过上面描述的报告管理器进行控制。这避免了通过更改用户权限来更改数据库本身的安全性的需要。

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

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

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

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

于 2012-02-10T03:37:50.797 回答