共用方式為


安全報表和資源

您可以設定個別報表和資源的安全性,以控制使用者對這些專案的存取程度。 根據預設,只有 屬於系統管理員 內建群組成員的使用者才能執行報表、檢視資源、修改屬性,以及刪除專案。 所有其他使用者都必須為其建立角色指派,以允許存取報表或資源。

報表和資源的角色型存取

若要授與報表和資源存取權,您可以允許使用者從父資料夾繼承現有的角色指派,或在專案本身上建立新的角色指派。

在大部分情況下,您可能想要使用繼承自父資料夾的許可權。 只有當您想要隱藏報表或資源的使用者不需要知道報表或資源存在,或增加報表或專案的存取層級時,才需要設定個別報表和資源的安全性。 這些目標並非互斥。 您可以將報表的存取限制為較小的一組使用者,並提供所有或部分使用者管理報表的額外許可權。

您可能需要建立多個角色指派,以達成您的目標。 例如,假設您有一份報表,您想要讓兩個使用者 Ann 和 Fernando 存取,以及人力資源管理員群組。 Ann 和 Fernando 必須能夠管理報告,但人力資源經理成員只需要執行報表。 為了容納所有這些使用者,您會建立三個不同的角色指派:一個是讓 Ann 成為報表的內容管理員、一個讓 Fernando 成為報表的內容管理員,另一個是支援人力資源管理員群組的僅限檢視工作。

在報表或資源上設定安全性之後,即使您將專案移至新位置,這些設定仍會與專案保持一起。 例如,如果您移動只有少數人有權存取的報表,即使您將報表移至具有相對開啟安全策略的資料夾,報表仍可供這些使用者使用。

降低已發佈報表或檔中的 HTML 插入式攻擊

在 Reporting Services 中,報表和資源會以執行報表之使用者的安全性身分識別進行處理。 如果報表包含表達式、腳本、自定義報表專案或自定義元件,程式代碼就會在使用者的認證下執行。 如果資源是包含文稿的 HTML 檔,當使用者在報表伺服器上開啟檔時,腳本將會執行。 在報表中執行腳本或程序代碼的能力,是一項具有特定風險層級的強大功能。 如果程式代碼是惡意的,報表伺服器和執行報表的使用者很容易受到攻擊。

在授予報表和以 HTML 處理的資源存取權時,請務必記住,報表是在完全信任的環境下處理的,並且可能會向用戶端傳送具有潛在危害的腳本。 視瀏覽器設定而定,用戶端會在瀏覽器中指定的信任層級執行 HTML。

您可以採取下列預防措施,降低執行惡意腳本的風險:

  • 決定誰可以將內容發佈至報表伺服器時,請有選擇性。 由於可能會發佈惡意內容,因此您應該將能夠發佈內容的使用者限制在少數受信任的用戶當中。

  • 所有發行者都應該避免發佈來自未知或未受信任來源的報表和資源。 如有必要,請在文本編輯器中開啟檔案,並尋找可疑的腳本和 URL。

報表參數和腳本注入

報表參數為整體報表設計和執行提供彈性。 不過,在某些情況下,攻擊者可以使用相同的彈性來吸引攻擊。 若要降低不小心執行惡意腳本的風險,請只開啟來自受信任來源的轉譯報表。 建議您考慮下列案例,這是潛在的 HTML 轉譯器腳本插入式攻擊:

  1. 報表包含一個文本框,其中超鏈接動作設定為可能包含惡意文字的參數值。

  2. 報表會發佈到報表伺服器,或以其他方式提供,使得報表參數值可以透過網頁的 URL 來控制。

  3. 攻擊者會建立網頁或報表伺服器的連結,以 「javascript:<malicious script here>」 格式指定參數的值,並將該連結傳送給引誘攻擊中的其他人。

報表可以在報表專案或報表專案的一部分的 Action 屬性值中包含內嵌超連結。 超連結可以系結至處理報表時從外部數據源擷取的數據。 如果惡意使用者修改基礎數據,超連結可能會面臨腳本惡意探索的風險。 如果使用者按下已發佈或匯出報表中的連結,惡意腳本可能會執行。

若要降低在報表中不小心執行惡意腳本的連結,請只將超連結系結至來自受信任來源的數據。 確認來自查詢結果的數據,以及將數據系結至超連結的表達式不會建立可惡意探索的連結。 例如,請勿在串連多個數據集欄位數據的表達式上建立超連結。 如有必要,請瀏覽至報表並使用「檢視來源」來檢查可疑的腳本和 URL。

降低參數化報表中的 SQL 插入式攻擊

在任何包含 類型 String參數的報表中,請務必使用可用的值清單(也稱為有效值清單),並確保任何執行報表的使用者只有檢視報表中數據所需的許可權。 當您定義 類型的 String參數時,使用者會看到可接受任何值的文字框。 可用的值清單會限制可輸入的值。 如果報表參數係結至查詢參數,而且您未使用可用的值清單,報表使用者可能會將 SQL 語法輸入到文本框中,而可能會開啟報表和您的伺服器進入 SQL 插入式攻擊。 如果使用者有足夠的許可權可執行新的 SQL 語句,它可能會在伺服器上產生不必要的結果。

如果報表參數未係結至查詢參數,而且參數值會包含在報表中,報表使用者可以將表達式語法或 URL 輸入至參數值,並將報表轉譯為 Excel 或 HTML。 如果另一位使用者接著檢視報表並按一下轉譯的參數內容,則使用者可能會不小心執行惡意腳本或連結。

若要降低不小心執行惡意腳本的風險,請只從信任的來源開啟轉譯報表。

備註

在舊版的檔中,包含建立動態查詢做為表達式的範例。 這種類型的查詢會造成 SQL 插入式攻擊的弱點,因此不建議使用。

保護機密報告

包含機密資訊的報表應藉由要求使用者提供認證來存取敏感數據,來保護數據存取層級。 如需詳細資訊,請參閱 指定報表資料來源的認證及連接資訊。 您也可以保護資料夾,使其無法存取未經授權的使用者。 如需詳細資訊,請參閱 保護資料夾

另請參閱

【create-and-manage-role-assignments.md】
設定報表產生器存取
賦予原生模式報表伺服器權限
保護共享數據源專案
將認證儲存在 Reporting Services 數據源中