3

我的問題更多地涉及其實施的安全性,而不僅僅是技術問題。通過參數+安全的數據源

我已經開發了所有的報告,並在報告服務器上。它們由應用程序使用ASP.NET中的ReportViewer控件使用。

鑑於這些報告可能具有不同的數據源,我在報告中爲數據源創建了一個參數,並將connectionString應用程序作爲參數發送給報告。

到目前爲止一切都很好,但是,這是我的問題出現的地方。由於我花費了一個ConnectionString,它具有參數的用戶名和密碼,我不會在這裏遇到安全漏洞?

我想徵求你的意見,如果有人有更好的實施方式,告訴我。

回答

7

也許Expression-Based Connection Strings會有幫助嗎?

的文檔有一個很清楚的例子,即類似於連接字符串:

="data source=" & Parameters!ServerName.Value & ";initial catalog=AdventureWorks 

這允許你仍然可以通過參數來定義數據源,但它也可以讓你單獨存儲憑據,以便這種方式在調用報告時不一定要通過任何安全細節。

添加評論後:

下面是一個例子報告與基於表達式的連接字符串。

enter image description here

你可以看到連接字符串使用一個參數來確定究竟在何處的連接;這可以根據需要進行更新。

憑證存儲在數據源中;您可以存儲憑證(請參閱上面的屏幕截圖),或者您可以選擇任何適合的其他選項,例如Windows集成安全性。

因此,它可能不適合你,但這是內置的SSRS功能,用於這種可配置的數據源要求。

第二個編輯:

在上面的例子中,Parameters!ServerName.Value確實是一個報表參數,你只需創建它像任何其他。根據報告的啓動方式,您可以將其設置爲隱藏參數並處理代碼中發送的實際值;這只是一個實施問題,真的取決於你。

對於基於表達式的連接字符串,數據源必須存儲在報表中,並且其連接字符串在運行時確定。

因此,您可以根據一個或多個參數來構建您需要的任何內容 - 這只是您構建的字符串值,因此您可以根據自己的目的製作任何內容;您可以將其指向所需的任何服務器/數據庫組合。請澄清,如果這不能回答你的問題。

+0

但是,我把憑據? – PookPook 2013-02-11 12:51:10

+0

這些存儲在數據源級別;看到上面的編輯。 – 2013-02-11 13:02:12

+0

好,很好。但是「Parameters!ServerName.Value」必須在報告中聲明?我該如何設置報表的數據源,以便獲取serverreport上的數據源?兩者之間的聯繫,我不明白。 – PookPook 2013-02-11 13:21:47