我正在SQL Server2008 R2上开发SQL Server Reporting Services (SSRS)报表,并使用报表管理器作为演示和测试报表的方法。我正在寻找一种方法,允许相同域的用户连接到报表管理器并通过浏览器(而不是SharePoint)运行报表,而不会让用户对数据源有太多的访问权限。对于与数据集和数据源相关联的数据库,我当前将每个用户列为db_owner。我想限制这个访问,并且我已经尝试了db_datareader,但是这个级别不允许用户运行报告,并给用户一个错误:“无法创建到数据源'DBname‘的连接。(RsErrorOpeningConnection)“。
将用户添加到报表管理器站点的方法是:选择“站点设置”下的“安全”选项卡,然后选择“新建角色分配”,将用户添加为“系统用户”。然后,我选择工具栏上的“文件夹设置”,并再次选择“新角色分配”,将用户添加为“浏览器”。我已经尝试将用户添加为“内容管理员”,但当涉及到数据源时,它们仍然会出现相同的错误。
我将用户添加到数据源的方法是:从服务器的Security选项卡中选择新的登录,将domain\username添加到‘login name:’中,使用Windows身份验证,并将默认数据库从master更改为报表数据源的数据库。然后,我选择‘User Mapping’,并选中作为数据源的数据库旁边的复选框。在“数据库角色成员资格:DBname”部分中,我选择了db_owner,并且已经选择了public。我已经包含了下面的截图。我的问题是,我可以为SSRS和报表管理器使用什么样的“数据库角色成员资格”,它不会像db_owner那样广泛,并且具有最好的安全性?我已经尝试过db_datareader,但用户在运行报告时无法连接到数据源。
我已经研究了这个问题,但我还没有找到我所描述的将用户添加为db_owner的任何细节。MSDN的作用就像报表管理器中的设置是用户/报表访问数据源所需的全部设置一样。我尝试过仅使用报表管理器设置,同时对共享和嵌入的数据源使用这两种设置,但没有成功。
提前谢谢你
发布于 2012-02-10 11:37:51
通常,SSRS中的数据源将设置为使用固定帐户,可以是Windows帐户,也可以是SQL身份验证。应该为该帐户提供对数据库的最小权限: db_datareader是常见的。
然后,如上所述,通过报表管理器控制报表的安全性。这样就不需要随着用户权限的更改而更改数据库本身的安全性。
但是你上面描述的方法也应该是可行的。如果您的查询是从表中选择的标准db_datareader查询,那么当用户拥有selecting时看到的错误是令人惊讶的。如果您正在使用存储过程,则还需要授予对这些存储过程的访问权限。使用设置为db_datareader的测试用户帐户;查看是否可以通过SQL Server Management Studio连接和执行查询。
根据您的安全需求,我将使用一个专用帐户来访问报告中的数据库,比如“ReportReader”。开发和测试以此用户身份访问数据库的报表,并确保该用户具有最低访问权限、只读和/或仅限于他们需要执行的表或过程。
用于访问数据库的凭据在数据源的属性中设置。这是经常使用共享数据源,并且报告链接到共享数据源的原因之一:

此屏幕截图显示正在使用的SQL server身份验证帐户。这也很容易成为一个固定的Active Directory帐户;检查"Use as Windows credentials when...“那样的话。
https://stackoverflow.com/questions/9221499
复制相似问题