DataSource通过参数+安全性

时间:2013-02-11 12:22:52

标签: security reporting-services ssrs-2008 connection-string database-security

我的问题更多地涉及其实施的安全性,而不仅仅是技术问题。

我已经开发了所有报告并且在Reporting Server上。应用程序使用ASP.NET中的ReportViewer Control来使用它们。

鉴于这些报告可能有不同的DataSource,我在报告中为DataSource创建了一个参数,并将connectionString应用程序作为参数发送给报告。

到目前为止一切都很好,然而,这就是我的问题出现的地方。由于我花了一个具有参数用户和密码的ConnectionString,我在这里不会有安全漏洞吗?

我希望得到您的意见,如果有人有更好的实施方式,请告诉我。

1 个答案:

答案 0 :(得分:7)

也许Expression-Based Connection Strings会对此有所帮助吗?

文档有一个非常明确的例子,即类似于:

的连接字符串
="data source=" & Parameters!ServerName.Value & ";initial catalog=AdventureWorks

这些允许您仍然传递参数来定义数据源,但它也允许您单独存储凭据,以便您在调用报告时不必传递任何安全性详细信息。

评论后添加:

这是一个带有基于表达式的连接字符串的示例报告。

enter image description here

您可以看到连接字符串使用参数来确定其连接的确切位置;这可以根据需要更新。

凭据存储在数据源中;您可以存储凭据(请参阅上面的屏幕截图),或者您可以选择任何其他适合的选项,例如: Windows集成安全性。

因此它可能不适合您,但这是针对此类可配置数据源要求的内置SSRS功能。

第二次修改:

在上面的示例中,Parameters!ServerName.Value确实是一个报表参数,您只需创建它就像任何其他参数一样。根据报表的启动方式,您可以将其设置为隐藏参数并处理代码中发送的实际值;这只是一个实施问题而且非常适合你。

对于基于表达式的连接字符串,数据源必须存储在报表中,并且其连接字符串在运行时确定。

因此,您可以根据一个或多个参数构建您需要的任何内容 - 它只是您正在构建的字符串值,因此您可以根据自己的目的制作任何内容;您可以将其指向所需的任何服务器/数据库组合。请澄清这是否不能回答您的问题。