【问题标题】:Database role membership setting for a Report Manager data source报表管理器数据源的数据库角色成员资格设置
【发布时间】:2012-02-10 01:24:38
【问题描述】:

我正在 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 的作用就好像报表管理器中的设置就是您需要为用户/报表设置以访问数据源的全部设置一样。我曾尝试仅将报表管理器设置与数据源的两种设置一起使用,共享和嵌入都没有运气。

提前谢谢你

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 如何在 SQL Server DB 上启用专用帐户以供报表管理器使用?我确实为每个报告都有存储过程,并且根据您在此处的信息,我已将数据源的用户访问级别从 db_owner 更改为 db_executor 但这仍然为用户提供了太多访问权限,更不用说将每个用户添加到数据源的麻烦了.
    • 已编辑数据源详细信息。
    • 您的信息很好,但我仍然遇到困难。最值得注意的是 ReportReader 用户通过了测试连接。我通过 SQL Server Management Studio 添加用户所遵循的步骤:在安全下我创建一个新登录名,输入名称,选择 SQL Server 身份验证并输入一个与报表管理器匹配的简单密码,将默认数据库设置为 master 或 datasourceDB(尝试两个都)。在用户映射下:我将用户映射到 datasourceDB、ReportDB 和 ReportDBTemp,我尝试了 db_datareader、db_owner 和 db_executor 的不同组合。我不确定出了什么问题。
    • 我遇到了同样的问题。无论我做什么都没有让用户 db_owner 他在添加 SSRS 数据源时无法通过 Test Connection
    • 我不是“测试连接”按钮的忠实粉丝。我见过一些会失败的情况,但是数据源很好。如果使用 SQL Server 身份验证,我相信更好的测试是使用 SSMS 并以该用户身份登录。
    猜你喜欢
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    相关资源
    最近更新 更多