次の方法で共有


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 では、カスタム アセンブリは既定で 実行専用のアクセス許可を受け取ります。

証拠

証拠は、共通言語ランタイム (CLR) がコード アセンブリのセキュリティ ポリシーを決定するために使用する情報です。 証拠は、コードに特定の特性があることをランタイムに示します。 証拠の一般的な形式には、デジタル署名とアセンブリの場所が含まれます。 証拠は、アプリケーションにとって意味のある他の情報を表すためにカスタム設計することもできます。

アセンブリとアプリケーション ドメインの両方が、証拠に基づいてアクセス許可を受け取ります。 たとえば、Reporting Services がアクセスしようとしているアセンブリの場所は、弱い名前のアセンブリの一般的な証拠の 1 つです。 これは URL 証拠と呼ばれます。 レポート サーバーに展開されるカスタム データ処理拡張機能の URL 証拠は、"C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll" である可能性があります。 アセンブリの厳密な名前またはデジタル署名は、もう 1 つの一般的な形式の証拠です。 この場合、証拠はアセンブリの公開キー情報です。

コード グループ

コード グループは、メンバーシップに対して指定された条件を持つコードの論理グループです。 メンバーシップ条件を満たすすべてのコードがグループに含まれます。 管理者は、コード グループとそれに関連付けられているアクセス許可セットを管理することで、セキュリティ ポリシーを構成します。

コード グループのメンバーシップ条件は、証拠に基づいています。 たとえば、コード グループの URL メンバーシップは URL 証拠に基づいています。 共通言語ランタイム (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 拡張機能で必要なコード アクセス セキュリティとコード グループの種類を決定する必要があります。

名前付きアクセス許可セット

名前付きアクセス許可セットは、管理者がコード グループに関連付けることができる一連のアクセス許可です。 ほとんどの名前付きアクセス許可セットは、少なくとも 1 つのアクセス許可、名前、およびアクセス許可セットの説明で構成されます。 管理者は、名前付きアクセス許可セットを使用して、コード グループのセキュリティ ポリシーを確立または変更できます。 同じ名前付きアクセス許可セットに複数のコード グループを関連付けることができます。 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)