ASP.NET 信頼レベルとポリシー ファイル

信頼レベルは、<securityPolicy> 構成要素を使用してポリシー ファイルと関連付けられます。この要素は、サイトレベルの構成ファイル (Web.config) だけで有効です。信頼レベルを追加または削除するには、信頼レベルの名前と使用するポリシー ファイルを指定するエントリを構成セクションに追加します。既定の信頼ファイルは、Aspnet_isapi.dll ファイルを含むフォルダの下の Config ディレクトリにインストールされます。これは、Machine.config 構成ファイルとランタイム セキュリティ ポリシー ファイルが格納されているのと同じ場所です。

信頼レベルの Full は特殊なケースです。これは、ローカル マシン ゾーンで完全な信頼度を持つのとまったく同じことになるため、ASP.NET ホストはこれらのアプリケーションには追加ポリシーを適用しません。したがって、Full 信頼レベルは内部のハンドラに割り当てられ、ASP.NET は完全に信頼されたアプリケーションのアプリケーション ドメインにポリシーを追加しません。

信頼レベルを異なるポリシー ファイルに割り当てる構成ファイルの securityPolicy セクションの例を次に示します。

<system.web>
    <securityPolicy>
    <trustLevel name="Full"    policyFile="internal"/>
    <trustLevel name="High"    policyFile="web_hightrust.config"/>
    <trustLevel name="Medium"  policyFile="web_mediumtrust.config"/>
    <trustLevel name="Low"     policyFile="web_lowtrust.config"/>
    <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
    </securityPolicy>
</system.web>

アプリケーションが自身の信頼レベルを指定できないようにするには、<location> ディレクティブを指定し、allowOverride 属性を false に設定します。この設定は、信頼レベルを制限する必要がある複数のアプリケーションをホストするサーバーなどで必要になります。

信頼レベル ファイルの変更

ポリシー ファイルを変更することもできますし、カスタム アクセス許可セットで新しいポリシー ファイルを作成することもできます。たとえば、Web_hightrust.config ファイルの内容をコピーして、次のコード例に示されているように、OleDbPermission クラスを最初にポリシー ファイルの SecurityClasses セクションに追加することによって、OLEDB 接続を作成するためのアクセス許可を割り当てることができます。

<SecurityClass Name="OleDbPermission" 
    Description="System.Data.OleDb.OleDbPermission, System.Data, Version=2.0.0.0, 
    Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

それから、指定した OleDbPermission に対して、OLEDB 接続文字列に対する制限などのパラメータを指定できます。次に、IPermission 要素を ASP.NET という名前で信頼ポリシー ファイル内の PermissionSet 要素に追加することにより、OleDbPermission セキュリティ クラスを含むアクセス許可セットを指定できます。たとえば、以下のコード例では、許可された OLEDB 接続だけが Catalog.mdb Access データベースに無制限にアクセスができるように指定されています。

<PermissionSet
  class="NamedPermissionSet"
  version="1"
  Name="ASP.Net">
  <IPermission
    class="OleDbPermission"
    version="1"
    Unrestricted="true" />
</PermissionSet>

OleDbPermission アクセス許可など、許可または拒否するアクセスを絞り込むために制限を追加できるアクセス許可もあります。たとえば、OleDbPermission アクセス許可は、OLE DB .NET Framework データ プロバイダを使用して接続するアクセスを許可しますが、同時に、許可する OLEDB 接続文字列の制限も指定できます。許可された Access データベースへの OLEDB 接続のみにアクセスを許可するコード例を次に示します。

<IPermission class="OleDbPermission" version="1">
    <add ConnectionString=
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\access_data\catalog.mdb""
        KeyRestrictions=""data source=;user id=;password=;" 
        KeyRestrictionBehavior="AllowOnly"/>
</IPermission>

更新された信頼ポリシー ファイルを保存して、現在の Web_hightrust.config ファイルの代わりにこのファイルを配置することもできます。また、新しい信頼ポリシー ファイルを作成して、High 信頼レベルのポリシー ファイルとしてこのファイルを設定したり、次のコード例で示されているように新しい信頼レベルを作成したりできます。

    <trustLevel name="HighCustom"
    policyFile="web_highcustom.config"/>

ASP.NET には、既定の設定を保存するために、信頼レベルの設定を含むファイルの 2 つのコピーが含まれています。1 つ目のファイルの名前には、前述の構成セクションにあるように拡張子 .config が付けられています。.config ファイルには、システムが使用する各信頼レベルの設定が含まれます。2 つ目のファイルの名前には拡張子 .config.default が付けられ、関連する信頼レベルの既定の設定が含まれます。現在の信頼レベルの設定を変更した後に既定の設定を復元する必要がある場合は、.config ファイルの内容を .config.default ファイルの内容で置き換えます。

信頼ポリシー ファイルを管理する方法の詳細については、「patterns & practices Security Guidance for Applications」の「How To: Use Medium Trust in ASP.NET 2.0」を参照してください。

参照

概念

ASP.NET ポリシー機構

その他の技術情報

ASP.NET Web アプリケーションのセキュリティ