共用方式為


Reporting Services 中的程式碼存取安全性

程式代碼存取安全性會以這些核心概念為中心:辨識項、程式代碼群組和具名許可權集合。 在 Reporting Services 中,報表管理員、報表設計師和報表伺服器元件各有一個原則檔案,可設定自定義元件的程式代碼存取安全性,以及數據、傳遞、轉譯和安全性延伸模組。 下列各節提供程式代碼存取安全性的概觀。 如需本節所涵蓋主題的詳細資訊,請參閱Microsoft .NET Framework SDK 檔中的。

Reporting Services 使用程式碼存取安全性,因為雖然報表伺服器是以 ASP.NET 技術為基礎,但一般 ASP.NET 應用程式和報表伺服器之間有很大的差異。 典型的 ASP.NET 應用程式不會執行用戶程序代碼。 相反地,Reporting Services 會使用開放且可延伸的架構,讓用戶能夠使用報表定義語言的 Code 元素來針對報表定義檔案進行程式設計,並將特殊功能開發成自定義元件以供報表使用。 此外,開發人員可以設計和部署強大的擴充功能,以增強報表伺服器的功能。 有了這種能力與彈性,需要盡可能多地提供保護和安全性。

Reporting Services 開發人員可以在報表中使用任何 .NET Framework 元件,並原生呼叫部署至全域程式集緩存之元件的所有功能。 報表伺服器唯一可以控制的許可權是針對報表表達式和載入的自定義元件提供哪些許可權。 在 Reporting Services 中,自定義元件預設會收到僅限 執行的許可權。

證據

辨識項是 Common Language Runtime (CLR) 用來判斷程式代碼元件安全策略的資訊。 辨識項會向運行時間指出程序代碼具有特定特性。 常見的辨識項形式包括數位簽名和元件的位置。 辨識項也可以自定義為代表對應用程式有意義的其他資訊。

元件和應用程式域都會根據辨識項接收許可權。 例如,Reporting Services 嘗試存取的元件位置,是弱名稱元件的一種常見辨識項形式。 這稱為 URL 辨識項。 部署至報表伺服器之自定義數據處理延伸模組的URL辨識項可能是“C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll”。 元件的強名稱或數位簽名是另一種常見的辨識項形式。 在此情況下,辨識項是元件的公鑰資訊。

程式代碼群組

程式代碼群組是程式代碼的邏輯群組,其具有成員資格的指定條件。 符合成員資格條件的任何程式代碼都包含在群組中。 系統管理員會藉由管理程式碼群組及其相關聯的許可權集合來設定安全策略。

程序代碼群組的成員資格條件是以辨識項為基礎。 例如,程式代碼群組的 URL 成員資格是以 URL 辨識項為基礎。 Common Language Runtime (CLR) 會使用識別特性,例如 URL 辨識項來描述程式碼,以及判斷是否已符合群組的成員資格條件。 例如,如果程式代碼群組的成員資格條件是「元件中的程式碼 C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll」,運行時間會檢查辨識項,以判斷程式代碼是否來自該位置。 此類型程式代碼群組的組態專案範例可能如下所示:

<CodeGroup class="UnionCodeGroup"  
   version="1"  
   PermissionSetName="FullTrust"  
   Name="MyCodeGroup"  
   Description="Code group for my data processing extension">  
      <IMembershipCondition class="UrlMembershipCondition"  
         version="1"  
         Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll"  
       />  
</CodeGroup>  

您應該與系統管理員或應用程式部署專家合作,以判斷自定義元件或 Reporting Services 擴充功能所需的程式代碼存取安全性和程式代碼群組類型。

具名許可權集合

具名許可權集合是一組系統管理員可以與程式代碼群組建立關聯的許可權。 大部分具名的許可權集合至少包含一個許可權、名稱和許可權集合的描述。 系統管理員可以使用具名許可權集合來建立或修改程式代碼群組的安全策略。 多個程式代碼群組可以與相同的具名許可權集合相關聯。 CLR 提供內建的具名許可權集合;其中包括 NothingExecutionInternetLocalIntranetEverythingFullTrust

備註

Reporting Services 中的自定義數據、傳遞、轉譯和安全性延伸模組必須在 FullTrust 許可權集合下執行。 請與您的系統管理員合作,為您的 Reporting Services 延伸模組新增適當的程式代碼群組和成員資格條件。

您可以關聯您自己的自定義層級許可權,以用於報表的自定義元件。 例如,如果您想要允許元件存取特定檔案,您可以建立具有特定檔案 I/O 存取權的新具名許可權集合,然後將許可權集合指派給程式碼群組。 下列許可權集合會將唯讀存取權授與檔案 MyFile.xml:

<PermissionSet class="NamedPermissionSet"  
   version="1"  
   Name="MyNewFilePermissionSet"  
   Description="A special permission set that grants read access to my file.">  
    <IPermission class="FileIOPermission"  
       version="1"  
       Read="C:\MyFile.xml"/>  
    <IPermission class="SecurityPermission"  
       version="1"  
       Flags="Assertion, Execution"/>  
</PermissionSet>  

您授與此權限集合的程式代碼群組看起來可能如下所示:

<CodeGroup class="UnionCodeGroup"  
   version="1"  
   PermissionSetName="MyNewFilePermissionSet"  
   Name="MyNewCodeGroup"  
   Description="A special code group for my custom assembly.">  
   <IMembershipCondition class="UrlMembershipCondition"  
      version="1"  
      Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\MyCustomAssembly.dll"/>  
</CodeGroup>  

另請參閱

安全開發 (Reporting Services)