我有一個ASP.NET Web應用程序,它使用對SSRS Web服務ReportService2005.asmx和ReportExecution2005.asmx的調用。SSRS Web服務安全
所使用的技術是ASP.NET 3.5,Visual Studio 2008和SQL Server 2008 R2的
用戶登錄到(因爲我使用的是使用這個,而不是ReportService2010一個代碼庫我使用ReportService2005)該系統使用表單身份驗證。用戶然後導航到報告頁面。用戶可以屬於任意數量的報告組(每個組可以包含任意數量的報告)。報告組及其相關報告以及分配給報告組的用戶由Web應用程序內的頁面控制,並存儲在Web應用程序數據庫(不是SSRS數據庫)中的一系列表中。
當前使用服務器的默認憑據可以訪問ReportService2005.asmx和ReportExecution2005.asmx。這是安全的嗎?服務器上的所有報告都可以通過這一個默認憑證訪問。對用戶可以看到的報告的唯一限制將由前端應用程序強制執行,該應用程序可能會被使用例如黑客入侵。 JavaScript的?
我想要的是一種方法,我可以取消Web應用程序數據庫中的一系列報告/用戶/組表,並使用SSRS模式。例如:
用戶A(公司A的員工)屬於財務報告組和營銷報告組。 「財務」組包含「財務報告1」和「財務報告2」。營銷組包含市場營銷報告1.
上述報告將放置在報告服務器上的財務和營銷文件夾中(使用報告管理器)。
然後,我可以在報表服務器上創建一個Windows用戶(我們稱之爲MarketingFinance),併爲該用戶在Marketing和Finance文件夾上提供適當的權限。用戶A然後必須在他/她的.net membershipprovider配置文件中具有某種標誌以鏈接到MarketingFinance用戶。
這個問題雖然是我想象一個新的Windows用戶不得不在創建/修改自定義報告組時創建報表服務器。使用上面的例子說一個銷售報告組被創建並且用戶B被添加到它。現在,報表服務器上必須有一個Windows用戶(銷售),並且具有適當的權限才能訪問Sales文件夾。此外,Web應用程序的多個客戶端也希望他們自己的銷售/營銷等組可能會將Windows用戶數量增加到數千人!
我是SSRS的新手,所以可能會看到這種錯誤的方式 - 我可以使用角色來簡化這個問題嗎?
此外,各公司的報告可能基本相同(我的公司是指應用程序的客戶端),但每家公司可能都希望將報告設置在不同的文件夾中。即公司A財務文件夾中有報告A,報告B和報告C,但公司B財務文件夾中只有報告A.據推測報告鏈接將阻止我必須在兩個文件夾中有兩份報告A的物理副本?
感謝您的回覆。 Javascript安全問題是一個小問題 - 真的只是一個想法。這些報告都有一個數字ID,我認爲有可能欺騙一個ID到服務器,因爲有一個報告服務器用戶可以訪問所有報告,這可能會危及安全。如果每個Web用戶只能訪問報告的一個子集,並且此Web用戶與報告服務器用戶綁定,那麼即使通過了僞造的ID,系統也會更安全(假設報告服務器用戶憑證很難僞造就像他們被綁定到網絡用戶一樣)。 –
我的真實觀點是,如果SSRS有一個建立報告組和相關權限的系統,我會更好地使用這個系統而不是滾動自己的系統嗎?我認爲使用我自己的方式可能會更好地減少報告服務器用戶的激增,但由於我是新手,我可能會以錯誤的方式來看待這個問題。所有評論贊賞。 –
還有其他意見嗎?我將結束這個問題,並在幾天內接受傑米F的回答。 –