使用 Reporting Services 安全策略檔案

Reporting Services 會將元件安全性原則資訊儲存至在安裝過程中複製到檔案系統的三個組態檔。 這些組態檔可能會包含 Reporting Services 中的程式碼組件內部使用和使用者定義的安全性原則的組合。 這三個組態檔會對應至 Reporting Services 中的三個安全性實體元件:報表伺服器和 Windows 服務、報表管理員 Web 應用程式,以及報表設計師預覽視窗。

注意

報表設計師有兩個預覽模式:當在 DebugLocal 模式中啟動報表專案時,會啟動預覽索引標籤與快顯預覽視窗。 [預覽] 索引標籤並非安全性實體元件,而且不會套用安全性原則設定。 預覽視窗是用以模擬報表伺服器功能,因此具有原則組態檔,而且您或系統管理員必須修改該檔案,才能在報表設計師中使用自訂組件和自訂延伸模組。

這些安全性原則組態檔包含安全性類別資訊、某些預設的具名權限集合,以及 Reporting Services 中所含組件的程式碼群組。 Reporting Services 的原則組態檔類似於 Security.config 檔案;此檔案會決定與 .NET Framework 中的機器和企業層級原則相關聯的程式碼群組階層和權限集合。 這個檔案的位置是 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\security.config。

Reporting Services 中的原則檔案

下表將列出 Reporting Services 中的原則組態檔、其位置 (假設是預設安裝),及其各自的功能。

檔案名稱 位置 (預設安裝) 描述
rssrvpolicy.config C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer 報表伺服器原則組態檔。 一旦報表部署至報表伺服器時,這些安全性原則主要會影響報表運算式和自訂組件。 這個原則檔也會影響部署至報表伺服器的自訂資料、傳遞、轉譯和安全性延伸模組。
rsmgrpolicy.config C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager 報表管理員原則組態檔。 這些安全性原則會影響擴充報表管理員的所有組件。例如,自訂傳遞的訂閱使用者介面延伸模組。
rspreviewpolicy.config C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies 報表設計師獨立預覽原則組態檔。 這些安全性原則會影響預覽和部署期間用於報表中的自訂組件和報表運算式。 這些原則也會影響部署至 報表設計師 的自定義延伸模組,例如數據處理延伸模組。

修改組態檔

組態設定會指定為 XML 元素或屬性。 如果您了解 XML 和組態檔,就可以使用文字或程式碼編輯器來修改可由使用者定義的設定。 安全性組態檔包含與 Reporting Services 中的原則層級相關聯的程式碼群組階層和權限集合的相關資訊。 您應該先使用 .NET Framework 組態公用程式 (Mscorcfg.msc) 或程式碼存取安全策略公用程式 (Caspol.exe) 修改 Security.config 檔案中的安全策略。 此步驟可確保原則變更對應至原則檔案的有效 XML 組態專案。 完成此動作之後,您可以將新的程式碼群組和許可權集合從 Security.config 剪下並貼到您要新增程式代碼許可權之元件的原則檔。

重要

進行任何變更之前,您應該先備份原則組態檔。

使用這種方法可達成兩項目的。 首先,它可讓您使用視覺化工具來建置 Reporting Services 的程式碼群組和權限集合。 這個方法比從頭開始撰寫 XML 組態專案更容易。 其次,它會確保您不會損毀格式不正確的 XML 元素和屬性的安全策略組態檔。 如需有關程式碼存取安全性原則公用程式的詳細資訊,請參閱 MSDN 上的<使用 Reporting Services 安全性原則檔>。

修改原則組態檔之前,您應該先閱讀本節中所有可用的信息和相關文章。 修改 Reporting Services 的原則設定可能會對 Reporting Services 元件執行外部程式碼模組的方式產生重大安全性影響。

延伸模組的 CodeGroup 元素位置

CodeGroup 元素在安全性原則檔中的放置方式很重要。 針對您開發的延伸模組和自定義元件,您應該將自定義程式代碼群組放在 URL 成員資格 $CodeGen$/*的現有專案正下方,如下列範例所示:

<CodeGroup  
    class="UnionCodeGroup"  
    version="1"  
    PermissionSetName="FullTrust">  
    <IMembershipCondition   
        class="UrlMembershipCondition"  
        version="1"  
        Url="$CodeGen$/*"  
    />  
</CodeGroup>  
<CodeGroup   
    class="UnionCodeGroup"  
    version="1"  
    PermissionSetName="FullTrust"  
    Name="MyCustomCodeGroup"  
    Description="Code group for my custom extension">  
        <IMembershipCondition class="UrlMembershipCondition"  
        version="1"  
        Url="C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin\MyAssembly.dll"  
        />  
</CodeGroup>  

您可以逐一新增更多程式代碼群組。