【发布时间】:2010-12-05 03:07:39
【问题描述】:
我在 A 公司工作。A 公司有一个姊妹公司 B。A 公司和 B 公司都使用相同的 ERP 数据库。我创建了一份可供两家公司使用的SSRS 2005 报告。它有一个 CompanyID 参数,用于确定是显示公司 A 还是公司 B 的数据。
对于大多数报告来说,这是可以的,但对于公司敏感信息(例如工资单),这将是一个问题,因为公司 A 的任何人都可以将 CompanyID 参数更改为公司 B 的 ID,反之亦然。
我最初的想法是在各自的文件夹 A 和 B 中为每个公司创建一个 linked report,其中文件夹 A 的安全性仅允许公司 A 用户和文件夹 B 安全性仅允许 B 用户。然后我会为每个链接的报表添加一个默认的 CompanyID 参数,并对用户隐藏这些参数。到目前为止,一切都很好。这样做的问题是您仍然可以使用 URL 查询字符串更改参数值。例如,公司 A 的用户可以将报告 url 更改为:
http://server/ReportServer/ReportViewer.aspx?/Payroll/A&rs:Command=Render
到:
http://server/ReportServer/ReportViewer.aspx?/Payroll/A&rs:Command=Render&CompanyID=B
现在他们已经完全绕过了隐藏的默认参数。
有什么好的方法可以解决这个问题?如果可能的话,我想在两家公司之间共享报告。
更新: 我们还有公司特定的 ASP.NET 内部网,它们已经通过 AD 域限制了基于公司的访问。我想我可以使用 Intranet 页面上的ReportViewer 控件在运行时应用适当的参数。我可能可以将此逻辑合并到可用于任何报告的通用报告页面中,对吗? (请原谅我的无知,我完全是SSRS n00b)
【问题讨论】:
标签: asp.net security reporting-services reportingservices-2005