威脅與弱點的降低 (Reporting Services)

本主題描述可針對 Reporting Services 部署降低威脅的技術和策略。

概觀

報表伺服器是在外部儲存內容和應用程式資料的無狀態伺服器。對於報表伺服器安裝而言,其中一項最大的威脅就是未經授權存取或竄改報表伺服器資料庫和組態檔。另一個較不明顯但同樣重要的威脅在於您建立報表的方式,以及有權將內容發行至報表伺服器的人員。報表定義是在伺服器電腦上以完全信任狀態執行的組件。報表定義可能會包含也在伺服器上執行的其他自訂組件。如果報表或自訂組件包含惡意程式碼,該程式碼將利用要求報表之使用者的認證在報表伺服器電腦上執行。其他難以察覺的威脅可能會透過不小心公開機密資料的報表設計而累積。例如,如果某位員工執行使用員工識別碼當做參數的報表,該位員工就不能透過將隨機識別碼插入報表 URL,檢視另一位員工的相關資訊。最後,請考慮組織內的報表散發作法。您可以將報表伺服器設定成盡可能減少在組織外部傳遞報表的可能性。此外,您也可以使用檔案系統的權限和報表伺服器權限來確保只有經授權的使用者能夠開啟報表。

本主題中的下列各節將描述其他威脅,以及您如何盡可能減少實際利用的風險。

減少報表伺服器所受到的攻擊

下表將描述影響伺服器元件和組態設定的威脅與降低。

功能或作業

威脅

降低

組態設定會儲存在報表伺服器電腦的 Web.config 和應用程式組態檔中。

攻擊者可能會取得電腦的存取權、找出未加密或未受保護的組態檔,然後竄改該檔案。

設定檔案的權限。根據預設,權限會授與在安裝期間建立的 Reporting Services 安全性群組。

報表伺服器 Web 服務會處理經由 TCP/IP 連接傳送的視需要要求。

攻擊者可能會啟動採取下列形式的阻斷服務攻擊:

將多個未驗證的要求導向目標伺服器。

將未完成的要求導向目標伺服器,但永遠不會完成。

要求過大。攻擊者會啟動要求,然後將大型裝載傳送至伺服器。

報表伺服器會在兩分鐘之內卸除所有未驗證的要求,而這樣做可以盡可能減少阻斷服務攻擊的某些影響。兩分鐘的間隔是固定的,無法縮短。

如果攻擊是以報表伺服器的上傳作業為基礎,您就可以在 Machine.config 檔案中減少 maxRequestLength 元素的值。根據預設,ASP.NET 會針對可上傳至伺服器應用程式的項目加上 MB 限制。請注意,降低 maxRequestLength 的值應該是暫時的措施。如果上傳大型檔案 (例如模型) 是常見作法,您就應該將此值變更回先前的值。如需有關在 Reporting Services 安裝中設定 maxRequestLength 的詳細資訊,請參閱<報表和快照集的大小限制>。

Reporting Services 支援一種可延伸的架構,可讓您部署協力廠商資料處理、轉譯和傳遞延伸模組。您也可以部署自訂查詢設計工具。延伸模組必須以完全信任狀態執行。

攻擊者可能會在自訂延伸模組中加入惡意程式碼。

只部署來自您所信任之使用者或組織的延伸模組。

針對報表定義和報表模型降低威脅

下表將描述影響報表定義和模型檔案的威脅與降低。

功能或作業

威脅

降低

將報表、模型和共用資料來源發行至報表伺服器。

報表和模型會連接並查詢外部資料來源。

在發行作業期間,攔截報表、模型和共用資料來源。

攔截傳輸至外部電腦的要求。

使用安全且加密的通道 (例如 SSL/TLS/IPSec) 進行連接。您必須使用加密技術來保護通道。

傳送之前,請通知使用者此通道未受保護。

使用驗證 Token 或認證來連接至遠端電腦和資料來源。

處理要求時,攔截驗證資料。

使用安全且加密的通道。

如果此通道未受保護,請通知使用者。

遵循最低權限的原則。擷取報表所使用的資料需要資料來源的唯讀權限。

報表 URL 在瀏覽器視窗的位址列中顯示參數值。

如果報表包含機密資料,請勿在 URL 上加入可能會遭竄改的參數值。例如,如果某份參數化報表包含員工識別碼,使用者就可以在 URL 上插入隨機員工識別碼來檢視其他使用者所使用的資料。

針對最終散發作業發行報表之前,請先檢查其 URL,以便確認參數值是否能夠取代成隨機值。

當您設計報表時,請記住,沒有任何與設定參數相關聯的權限。因此,我們提供了一些降低威脅的可能作法:

  • 重新設計報表並使用使用者識別碼來蒐集使用者特有的資訊。

  • 使用連結報表並鎖定主報表。然後,讓特定參數成為連結報表的內部參數。設定成使用 SharePoint 整合模式的報表伺服器不支援這種作法,因為這種模式不支援連結報表。

報表和模型包含資料來源資訊與查詢。

洩漏資料來源或其結構的相關資訊會提供攻擊者可利用的內部資訊。

讓使用者修改報表模型之前,請先將模型項目安全性設定為限制存取您不想讓使用者在模型設計師中看見的模型項目。

設定檔案的權限。這些檔案包括 .rdl、.rds、.smdl、.ds、.dsv 和 .smgl 檔案。

根據預設,如果作業系統是 Windows XP 或更新版本,就只有在本機電腦上定義的使用者群組和帳戶能夠存取儲存在使用者資料夾本機內部的檔案。

報表定義和共用資料來源包含資料來源連接字串。連接字串可能會包含認證。

如果報表檔案遭破壞,攻擊者可能會存取儲存在資料庫連接字串中的資料庫認證。

請個別儲存認證與連接字串。您可以使用資料來源屬性頁面中的 [預存認證] 選項來加密和儲存使用者帳戶與密碼。

視需要處理報表和模型。

報表可能會參考或包含自訂組件。

報表可能會包含自訂報表項目或協力廠商控制項。自訂報表項目控制項需要完全信任。

攻擊者說服使用者執行利用內嵌 Visual Basic 程式碼或資料庫查詢的報表,以便使用該使用者的權限來執行任意程式碼。

執行已經遭竄改的報表或模型可能會導致緩衝區滿溢、伺服器當機,或更糟的情況。

限制有權發行報表和模型的使用者數目。

確定只有經過驗證的使用者有權上傳檔案。

確定撰寫報表的使用者了解如何建立可抵禦 SQL 資料隱碼、指令碼資料隱碼和 HTML 資料隱碼攻擊的指令碼。

只上傳或發行來自您所信任之人員的報表和模型。

只安裝或使用來自您所信任之人員的自訂報表項目控制項。

上傳檔案之前,請先檢閱它們,以便確認自訂組件的任何參考是否都有效。

設定組件的檔案權限,如此惡意使用者便無法覆寫這些組件。

在報表設計師的 [預覽] 索引標籤中預覽報表或模型時,系統會建立使用作者認證所擷取的快取資料。

在報表作者電腦上預覽報表的其他使用者可能可以檢視無法以其他方式查看的報表資料。

完成報表設計時,請將報表部署至測試伺服器或某個位置。

如需詳細資訊,請參閱<保護報表和資源的安全>。

降低威脅與弱點的一般步驟

若要強化任何報表伺服器部署的整體安全性,請套用下列最佳作法建議:

  • 關閉不使用的功能,以便減少受攻擊的介面區。如需詳細資訊,請參閱<如何:開啟或關閉 Reporting Services 功能>。

  • 使用 SSL 進行報表伺服器連接。如需詳細資訊,請參閱<設定安全通訊端層 (SSL) 連接的報表伺服器>。

  • 建立支援健全權限原則的資料夾階層,方法是在一組有限使用者可存取的資料夾中,將敏感性或機密報表放置於資料夾階層最遠分支的資料夾中。您發行至報表伺服器的報表、模型、共用資料來源和資源都透過在報表伺服器站台上針對資料夾和特定項目所建立的角色指派加以保護。由於資料夾階層是完全由使用者定義的,所以您必須自行建立將具有類似使用者存取權限之任何項目組成群組的資料夾階層。如需詳細資訊,請參閱<保護資料夾的安全>。

  • 了解視需要報表就是使用開啟報表之使用者的認證在報表伺服器上以完全信任狀態執行的已編譯組件。使用本機或網域管理員認證登入,然後開啟包含惡意指令碼之報表的報表使用者將不小心以管理員權限執行該指令碼。建議使用者在檢視報表時使用最低權限的帳戶。如需詳細資訊,請參閱<整合式安全性和更高的權限>。

  • 了解報表的資料擷取和使用方式。如果報表包含機密資料,請考慮使用模型當做資料來源,如此您就可以套用安全性篩選和模型項目安全性。如需詳細資訊,請參閱<教學課程:將安全性篩選套用到報表模型項目>。

  • 了解報表的散發方式。雖然訂閱與傳遞功能是將報表處理和散發產生報表自動化的強大技術,但是為了避免未經授權的存取行為,您會想要監視對於網路資料夾擁有共用權限的使用者,以及評估報表伺服器電子郵件組態設定來判斷是否需要限制電子郵件散發。如需詳細資訊,請參閱<控制報表散發>。