セキュリティ ポリシーの概要

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

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

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

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

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

ms154466.note(ja-jp,SQL.90).gif重要 :
Reporting Services ポリシー構成ファイルを修正して、サード パーティ拡張機能に FullTrust を許可する必要があります。FullTrust を使用してカスタム拡張機能にコード グループを追加しない場合は、レポート サーバーで拡張機能を使用できません。

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

レポートで使用される式

レポートの式は、インライン コード式またはレポート定義言語ファイルの Code 要素に含まれるユーザー定義メソッドです。ポリシー ファイルには、既定でこれらの式に Execution 権限セットを付与する構成済みのコード グループがあります。コード グループは次のようになります。

<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 権限のみです。既定では、Reporting Services の Code 要素のユーザー定義メソッドとカスタム アセンブリには、Execution 権限が付与されます。したがって、現在の構成では、ほとんどの式に対してセキュリティ ポリシー ファイルを修正する必要がありません。式のホスト アセンブリに追加権限を付与するには、管理者がレポート サーバーとレポート デザイナのポリシー構成ファイルを修正し、レポート式のコード グループを変更する必要があります。グローバル設定であるため、式のホストの既定の権限を変更すると、すべてのレポートに影響します。この理由から、追加セキュリティを必要とするすべてのコードをカスタム アセンブリ内に配置することを強くお勧めします。必要な権限は、このアセンブリにのみ付与します。

ms154466.security(ja-jp,SQL.90).gifセキュリティ メモ :
外部のアセンブリや保護されたリソースを呼び出すコードは、レポートで使用するカスタム アセンブリに組み込んでください。これにより、コードが要求し、表明した権限の制御が向上します。Code 要素内には、セキュリティで保護されたメソッドの呼び出しを作成しないでください。作成した場合、レポート式のホストに FullTrust を付与する必要があり、すべてのカスタム コードに CLR への完全なアクセス権が付与されます。
ms154466.Caution(ja-jp,SQL.90).gif注意 :
レポート式のホストのコード グループに FullTrust を付与しないでください。付与した場合は、すべてのレポート式で保護されたシステム呼び出しを作成できます。

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

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

状況によっては、レポート式の特定のコード権限を必要とする操作を実行することがあります。これは、一般的にはセキュリティで保護された CLR ライブラリ メソッド (ファイルやシステム レジストリにアクセスするもの) への呼び出しをレポート式が作成する必要があることを意味します。.NET Framework のドキュメントには、このようなセキュリティで保護された呼び出し作成に必要なコード権限が記載されています。呼び出しを実行するには、セキュリティで保護された特定の権限を呼び出し元コードに付与する必要があります。レポートの式または Code 要素から呼び出しを作成する場合は、式のホスト アセンブリに適切な権限を付与する必要があります。ただし、式のホストに権限を付与すると、あらゆる式とレポートで実行するすべてのコードに特定の権限が付与されます。カスタム アセンブリから呼び出しを作成し、カスタム アセンブリに特定の権限を付与する方が、安全性は高くなります。

参照

概念

Reporting Services のコード アクセス セキュリティの導入

その他の技術情報

Reporting Services のコード アクセス セキュリティの理解

ヘルプおよび情報

SQL Server 2005 の参考資料の入手