0

我为公司A公司工作有一个姊妹公司B.这两家公司A和B使用相同的ERP数据库。我创建了可供两家公司使用的SSRS 2005报告。它有决定是否显示公司A或B公司SSRS 2005基于参数的安全

数据对于大多数报表,这将是OK了CompanyID参数,但对于公司的敏感信息(如工资),这将是自公司在任何人的问题A可以将CompanyID参数更改为公司B的ID,反之亦然。

我最初的想法是为每个公司在其各自的文件夹A和B中创建一个linked repor t,其中文件夹A的安全性只允许公司A用户和文件夹B安全性只允许B用户使用。然后,我会为每个链接的报告添加默认的CompanyID参数,并隐藏用户的参数。到现在为止还挺好。问题在于,您仍然可以使用URL查询字符串更改参数值。例如,在公司A的用户可能会改变从报告网址:

http://server/ReportServer/ReportViewer.aspx?/Payroll/一个 & RS:命令=渲染

到:

http://server/ReportServer/ReportViewer.aspx?/Payroll/一个 & RS:命令=渲染& CompanyID =

现在他们已经完全绕过隐藏DEFA超参数。

什么是解决这个问题的好办法?如果可能,我想分享两家公司之间的报告。

更新: 我们也有具体的公司已经通过限制AD域基于公司访问ASP.NET内部网。我想我可以使用内部网页上的ReportViewer控件在运行时应用适当的参数。我可以将这个逻辑合并到一个可用于任何报告的通用报告页面中,对吗? (请原谅我的无知,我是一个总的SSRS的n00b)

回答

1

什么是您的安全设备,在这里?在我看来,一个可靠而安全的解决方案将是根据用户帐户驱动对数据的访问。报告数据如何收集?它是否直接在你的数据集中选择?你打电话过程吗?选择一个视图?

编辑:由于您选择的视图是联合各自的公司数据,如果您授予权限的用户或有权访问的角色的视图,您可能能够创建一个场景数据返回到用户基于他们的权利。

+0

这是一个从来自两个公司的表与工会选择所有的视图选择。 – jrummell 2009-10-08 20:06:51

+0

如果我们将联合视图拆分为两个单独的视图,那么我们可能会使用数据库角色仅在适当的公司视图上授予select。这就是你所指的? – jrummell 2009-10-08 20:13:23

+0

是的,这应该创建一个获取适当数据的透明方法。 – keithwarren7 2009-10-08 20:38:03

0

您可以使用Expression Based Connection Strings为了不必使用链接的报告,但它仍然意味着将信息作为参数传递,这些参数将暴露在GET请求中。

有没有得到身边,你必须区分对他们来说,该报告将显示/运行。