我碰巧正在从头开始设置一个报告服务器。几乎没有 sql server 管理经验,我发现为报告管理器配置安全设置真的很困难。
我确实了解所有将访问报告管理器的用户都需要两个级别的权限
1 – 从 sql server 访问数据的权限。(为此,经过一些研究,我决定使用 datareader 角色。
2- 访问 Reports Manager 的权限,我可以从中选择 Reports Manager 角色,例如(浏览器、内容管理器等)
对于报告经理,我创建了一个仅具有查看报告权限的新角色。
问题
当我将域用户帐户添加到报告管理器时,所有这些安全过滤器都已到位,用户可以在报告管理器上的任何位置导航(可以访问他们没有权限的文件夹、数据源和报告)。
我不希望用户查看他们没有权限的数据源或任何其他文件夹或报告。
到目前为止我已经尝试过什么
1- 将用户添加到报告管理器上的一个文件夹,但他们可以导航到报告管理器上的任何其他文件夹。
2-将用户添加到一个报告中,他们可以再次导航到报告管理器上的任何其他文件夹。
3-我使用的是 SSRS 服务帐户的虚拟帐户,将其删除并尝试了服务帐户、LocalService、LocalNetwork 和 LocalSystem 的所有其他 3 个内置帐户。(不确定这是否会有所作为)。
所有这些努力都是徒劳的,只要将用户添加到任何一个报表或文件夹,他们就可以导航到所有其他文件夹和报表,并且可以实际执行报表。
用户在 Sql Server 中分配了 datareader 角色,并在 Reports Manager 上具有自定义角色,该角色仅具有查看报告的权限。
我已将报告服务设置为使用默认的 Windows 身份验证。它是 Sql
服务器 2008 R2 报告服务。数据中心版。
请任何建议或任何方向都会有很大帮助。我一直在阅读 BOL,但目前还没有任何帮助。
通常在 SSRS 中,您将使用 SSRS 管理界面 (/ReportsManager IIRC) 按文件夹设置用户角色/权限。它们通常由子文件夹继承,尽管您可以覆盖它。“浏览器”角色最适合最终用户,因为它允许他们运行/查看报告,但仅此而已。如果您授予用户对文件夹而不是 B 的“浏览器”访问权限,那么他们将无法访问文件夹 B,除非它是 A 的子文件夹(默认情况下授予与 A 相同的权限)或除非 B 是子文件夹- 用户具有“浏览器”访问权限的另一个文件夹的文件夹。
您可能不应该在 SQL Server 中直接授予域用户任何权限。SQL Server 本身使用的各种帐户以及管理帐户都应在 SQL Server 中进行配置。最终用户对 SSRS 的访问由 SSRS 根据输入 SSRS 的规则进行控制。
当您在 SSRS 中创建报告时,您希望使用在数据库中具有足够权限的帐户来设置数据源以运行报告(在凭据下的数据源中)。通常我们会为此使用服务帐户,除非需要更高的安全性。在将报表部署到报表服务器后,我已经看到了这种情况的下降,因此检查报表服务器中的数据源并确保帐户仍然存在总是好的。
那么,您是否正在向根文件夹本身添加浏览器访问权限?如果是这样,这就是该帐户可以查看报表服务器中所有文件夹的原因,如果报表管理器中的每个文件夹都继承了权限,那么这就是他们可以进一步访问的原因。我会从根文件夹中删除该用户,并尝试将该用户添加到您希望他们查看的文件夹中的浏览器权限。
我有时在更改用户的权限时看到,除非我将其完全删除,然后仅使用浏览器访问权限将其备份,否则新设置不会进入帐户。
这不是一个完整的答案,但我不建议让实时报告将用户凭据传递给 SQL Server。
假设恶意报告开发人员构建了某种报告,该报告执行需要系统管理员权限(破坏、授予权限等)的令人讨厌的事情。只需部署报告,并欺骗系统管理员运行它(CSRF 可能足以运行“报告”,尽管我从未尝试过),然后你的代码正在以系统管理员权限运行。
我们使用的方法是在 Visual Studio 中的数据源上选择 Windows 身份验证。因此,开发人员可以针对他们有权访问的任何内容构建报告。所有数据源都部署到一个位置(自然是“/Data Sources”),并且这些数据源的副本配置有静态凭据。由于默认情况下 Visual Studio 在部署报表项目时不会覆盖数据源,因此一切正常,假设我们没有忘记授予访问数据的帐户的权限,就像我一直做的那样。
现在,回到权限过多的问题。默认情况下,您在 Reporting Services 中创建的任何对象(文件夹、报表等)都将设置为从其父对象继承权限。它类似于 Windows 文件权限,但总体上更简单一些 - 对象的权限必须全部继承或全部显式设置。开箱即用,Reporting Services 具有一些您可以授予对象的标准角色。如果您想要更细化并自定义角色,请使用 Management Studio:从对象资源管理器中连接到 Reporting Services,然后将报表服务器 Web 服务 URL 指定为服务器名称。深入到安全、角色,您可以根据需要自定义或添加角色。