セキュリティ ポリシーについて

レポート サーバーが実行するコードは、特定のコード アクセス セキュリティ ポリシーの一部である必要があります。 これらのセキュリティ ポリシーは、証拠と名前付き権限セットとを対応付けるコード グループで構成されます。 多くの場合、コード グループは、そのグループ内のコードに対して与えることのできる権限が指定された名前付き権限セットに関連付けられます。 ランタイムは、信頼されるホストまたはローダーが提供した証拠を使用して、コードが属するコード グループ、およびコードに付与された権限を確認します。 Reporting Services は、Microsoft .NET Framework の共通言語ランタイム (CLR) に定義されている、このセキュリティ ポリシー アーキテクチャに準拠しています。 ここでは、Reporting Services の各種コードおよび関連付けられたポリシー ルールについて説明します。

レポート サーバー アセンブリ

レポート サーバー アセンブリには、Reporting Services 製品の一部であるコードが含まれています。 Reporting Services はマネージド コード アセンブリを使用して記述されています。これらのアセンブリにはすべて厳密な名前が付けられています。つまり、デジタル署名されています。 これらのアセンブリのコード グループは、アセンブリの厳密な名前の公開キー情報に基づいて証拠を提供する StrongNameMembershipCondition を使用して定義されます。 コード グループには、FullTrust アクセス許可セットが付与されます。

レポート サーバー拡張機能 (表示、データ、配信、セキュリティ)

レポート サーバーの拡張機能はカスタムのデータ、配信、表示、およびセキュリティ拡張機能であり、ユーザーまたは他のサード パーティが Reporting Services の機能を強化するために作成します。 拡張する Reporting Services コンポーネントに関連付けられているポリシー構成ファイルで、これらの拡張機能またはアセンブリ コードに FullTrust を付与する必要があります。 Reporting Services の一部として出荷される拡張機能は、レポート サーバーの公開キーで署名され、FullTrust アクセス許可セットが付与されます。

重要

サード パーティの拡張機能では、Reporting Services のポリシー構成ファイルを修正して FullTrust を許可する必要があります。 カスタム拡張機能用に FullTrust を持ったコード グループを追加しない限り、それらをレポート サーバーで使用することはできません。

Reporting Services のポリシー構成ファイルの詳細については、「Reporting Services セキュリティ ポリシー ファイルの使用」を参照してください

レポートで使用される式

レポートの式は、インライン コード式またはレポート定義言語ファイルの Code 要素に含まれるユーザー定義メソッドです。 既定で設定された実行アクセス許可をこれらの式に付与するコード グループがポリシー ファイルに既に構成されています。 コード グループは次の例のようになります。

<CodeGroup  
   class="UnionCodeGroup"  
   version="1"  
   PermissionSetName="Execution"  
   Name="Report_Expressions_Default_Permissions"  
   Description="This code group grants default permissions for code in report expressions and Code element. ">  
    <IMembershipCondition  
       class="StrongNameMembershipCondition"  
       version="1"  
       PublicKeyBlob="002400..."  
    />  
</CodeGroup>  

Execution アクセス許可によってコードを実行できますが、保護されたリソースを使用することはできません。 レポート内のすべての式はアセンブリ ("式のホスト" アセンブリ) にコンパイルされます。アセンブリはコンパイルされたレポートの一部として格納されます。 レポートを実行すると、レポート サーバーが式のホスト アセンブリを読み込み、そのアセンブリに対して、式を実行するための呼び出しを行います。 式のホスト アセンブリは、式のホストすべてのコード グループの定義に使用される特定のキーで署名されます。

レポートの式はレポート オブジェクト モデル コレクション (フィールド、パラメーターなど) を参照し、算術演算や文字列操作などの単純なタスクを実行します。 これらの単純な操作を実行するコードに必要なのは、Execution アクセス許可のみです。 既定では、Code 要素のユーザー定義メソッドとカスタム アセンブリには、Reporting Services の Execution アクセス許可が付与されます。 したがって、ほとんどの式では、現在の構成では、セキュリティ ポリシー ファイルを変更する必要はありません。 式ホスト アセンブリに追加のアクセス許可を付与するには、管理者はレポート サーバーとレポート デザイナーのポリシー構成ファイルを変更し、レポート式コード グループを変更する必要があります。 これはグローバル設定であるため、式ホストの既定のアクセス許可を変更すると、すべてのレポートに影響します。 このため、追加のセキュリティを必要とするすべてのコードをカスタム アセンブリに配置する必要があります。 このアセンブリにのみ、必要なアクセス許可が付与されます。

重要

外部のアセンブリや保護されたリソースを呼び出すコードは、レポートで使用するカスタム アセンブリに組み込んでください。 そうすることで、コードが要求および表明する権限をより細かく制御できるようになります。 Code 要素内から、セキュリティで保護されたメソッドを呼び出すことは避けてください。 そのようにした場合、レポート式のホストに FullTrust を付与する必要があり、すべてのカスタム コードに CLR への完全なアクセス権が付与されます。

注意事項

レポート式のホストのコード グループに FullTrust を付与しないでください。 付与した場合は、すべてのレポート式に、保護されたシステム呼び出しを許すことになります。

レポートで参照されるカスタム アセンブリ

一部のレポート式では、Reporting Services でカスタム アセンブリとも呼ばれる他のコード アセンブリを呼び出すことができます。 レポート サーバーは、これらのアセンブリがポリシー構成ファイルに少なくとも Execution アクセス許可を持っていることを想定しています。 既定では、Reporting Services に付属のポリシー ファイルでは、"My Computer" ゾーンから起動されたすべてのアセンブリに Execution アクセス許可が付与されます。 必要に応じて、カスタム アセンブリに追加のアクセス許可を付与できます。

場合によっては、レポート式で特定のコード権限を必要とする操作を実行することが必要になる場合があります。 通常、このシナリオは、レポート式がセキュリティで保護された CLR ライブラリ メソッド (ファイルやシステム レジストリにアクセスするメソッドなど) を呼び出す必要があることを意味します。 .NET Framework のドキュメントでは、このセキュリティで保護された呼び出しを行うために必要なコードのアクセス許可について説明します。 呼び出しを実行するには、呼び出し元のコードに、これらの特定のセキュリティで保護されたアクセス許可が付与されている必要があります。 レポートの式または Code 要素から呼び出す場合は、式のホスト アセンブリに適切なアクセス許可を付与する必要があります。 ただし、式のホストに権限を付与すると、あらゆる式とレポートで実行するすべてのコードに特定の権限が付与されます。 カスタム アセンブリから呼び出しを行い、そのカスタム アセンブリに特定のアクセス許可を付与する方がはるかに安全です。