PowerTools SPREAD for ASP.NET 8.0J
Medium 信頼レベル環境への配置

ホスティング環境や共有サーバー環境では、ASP.NET Web アプリケーションを Medium 信頼レベル環境に配置しなければならない場合があります。

Medium 信頼レベル環境では、デフォルトでは逆シリアル化やリフレクションなどのアクセスは制限されます。さらに、Medium 信頼レベル環境で厳密な名前を持つアセンブリを利用するためには、アセンブリが AllowPartiallyTrustedCallers 属性を持つ必要があります。

本製品は AllowPartiallyTrustedCallers アセンブリ属性を持っていますが、アクセス制限されているシリアル化やリフレクションなどの処理を行っているため、Medium 信頼レベルで実行するためには信頼レベルのポリシーファイルを変更してアクセス許可を追加する必要があります。

  • 信頼レベルのポリシーファイルを変更する方法は、MSDN の「ASP.NET 信頼レベルとポリシー ファイル」でも説明されていますので、こちらも参照してください。
  • アプリケーションを配置する前に、ホスティング環境で信頼レベルのポリシーファイルを変更する権限があることを確認してください。

信頼レベルポリシーファイルの変更

アクセス権限を設定するためには、既存の信頼レベルのポリシーファイルを変更するか、Medium 信頼レベルをベースにしたカスタムポリシーファイルを作成します。既存の信頼レベルのポリシーファイルを変更すると、すべての Web アプリケーションは変更された権限と同じ信頼レベルで実行されます。Medium 信頼レベルのポリシーをベースにしたカスタムポリシーファイルを作成すると、個々のアプリケーションに異なる権限を設定することができます。

既存のポリシーファイルの変更

既存の信頼レベルのポリシーファイルにアクセス許可を追加するには、以下の手順に従います。

  1. Medium 信頼レベルのポリシーファイル「web_mediumtrust.config」を検索します。デフォルトでこのファイルは <% windir % Microsoft.NETFramework{ASP.NET のバージョン}CONFIG> ディレクトリに格納されています。
  2. web_mediumtrust.config ファイルを開きます。
  3. 任意のアクセス許可を追加します。詳細については、「アクセス許可の追加」を参照してください。

カスタムポリシーファイルの作成

Medium 信頼レベルのポリシーをベースにしたカスタムポリシーファイルを作成してからアクセス許可を追加するには、以下の手順に従います。

  1. Medium 信頼レベルのポリシーファイル「web_mediumtrust.config」を検索します。デフォルトでこのファイルは < % windir %Microsoft.NETFramework{ASP.NET のバージョン}CONFIG> ディレクトリに格納されています。
  2. web_mediumtrust.config をアプリケーションと同じディレクトリ内にコピーして、新しいポリシーファイルを作成します。 新しいポリシーファイルを既存のMedium 信頼レベルのポリシーファイルと区別するために、ファイル名を変更します(例:web_mediumtrust_custom.config)。
  3. アプリケーションの web.config ファイルの <system.web> ノードを以下のように変更して、カスタムポリシーファイルを有効にします。
    <system.web>
        <trust level="CustomMedium" originUrl=""/>
                        :
             <securityPolicy>
               <trustLevel name="CustomMedium" policyFile="web_mediumtrust_custom.config"/>
                  </securityPolicy>
                     :
           </system.web>
    
  4. 任意のアクセス許可を追加します。詳細については、「アクセス許可の追加」を参照してください。

アクセス許可の追加

本製品をMedium 信頼レベル環境で実行するためには、信頼レベルのポリシーファイルにいくつかのアクセス許可を追加する必要があります。必要なアクセス許可は、次に示す通りです。

必要なアクセス許可
シリアル化の許可
リフレクションの許可
アンマネージコード実行の許可

また、OLE DB データプロバイダを利用する場合、ファイルアクセスを行う場合には、それぞれ OleDbPermission および FileIOPermission のアクセス権限も追加する必要があります。

メモ: 信頼レベルのポリシーファイルファイルを変更する前に、「信頼レベルポリシーファイルの変更」トピックの手順を実行してください。

シリアル化の許可

本製品は、ViewStateのシリアル化処理を行っています。シリアル化のアクセス許可を追加するには、以下の手順に従います。

  1. web_mediumtrust.config ファイルまたは web_mediumtrust.config ファイルをベースとして作成したファイルを開きます。
  2. <IPermission class="SecurityPermission"> タグ内に SerializationFormatter フラグを追加します。
    <NamedPermissionSets>
        <PermissionSet class="NamedPermissionSet" version="1" Name="ASP.Net">
           <IPermission class="SecurityPermission" version="1"
                 Flags="Assertion, Execution, ControlThread, ControlPrincipal,
                   RemotingConfiguration, SerializationFormatter"/>
                  :
               </PermissionSet>
        </NamedPermissionSets>
    

リフレクションの許可

本製品は、リフレクションを使用しています。リフレクションのアクセス許可を追加するには、以下の手順に従います。

  1. web_mediumtrust.config ファイルまたは web_mediumtrust.config ファイルをベースとして作成したファイルを開きます。
  2. <IPermission class="ReflectionPermission"> を編集し Unrestricted="true" を指定します。
    <NamedPermissionSets>
        <PermissionSet class="NamedPermissionSet" version="1" Name="ASP.Net">
           <IPermission class="ReflectionPermission" version="1" 
              Unrestricted="true"/>
                 :
               </PermissionSet>
        </NamedPermissionSets>
    

アンマネージコード実行の許可

本製品は、Excelファイルのインポート/エクスポート処理にアンマネージドコードを使用しています。アンマネージコード実行のアクセス許可を追加するには、以下の手順に従います。

  1. web_mediumtrust.config ファイルまたは web_mediumtrust.config ファイルをベースとして作成したファイルを開きます。
  2. <IPermission class="SecurityPermission"> タグ内に UnmanagedCode フラグを追加します。
    <NamedPermissionSets>
        <PermissionSet class="NamedPermissionSet" version="1" Name="ASP.Net">
           <IPermission class="SecurityPermission" version="1" 
             Flags="Assertion, Execution, ControlThread, ControlPrincipal,
                RemotingConfiguration, SerializationFormatter, UnmanagedCode"/>
                 :
               </PermissionSet>
        </NamedPermissionSets>
    

OLE DB データプロバイダの許可

Medium 信頼レベル環境ではデフォルトで OleDbPermission アクセスが制限されています。つまり、ADO.NET の OLE DB データプロバイダを使用してデータベースにアクセスできません。

OLE DB データプロバイダのアクセス許可を追加するには、以下の手順に従います。

  1. web_mediumtrust.config ファイルまたは web_mediumtrust.config ファイルをベースとして作成したファイルを開きます。
  2. <SecurityClasses> タグ内に <SecurityClass> タグを追加します。
    <SecurityClasses>
    <SecurityClass Name="OleDbPermission" Description="System.Data.OleDb.OleDbPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> : </SecurityClasses>
  3. <NamedPermissionSets> タグ内に <IPermission class="OleDbPermission"> タグを追加します。
                  <NamedPermissionSets>
                            <PermissionSet class="NamedPermissionSet" version="1" Name="ASP.Net">
                            <IPermission class="OleDbPermission" version="1" Unrestricted="true"/>
                                       :
                     </PermissionSet>
               </NamedPermissionSets>
    

ファイルアクセスの許可

Medium 信頼レベル環境ではデフォルトで FileIOPermission アクセスが制限されています。つまり、アプリケーションの仮想ディレクトリ階層にあるファイルにしかアクセスできません。アプリケーションの仮想ディレクトリの階層外のディレクトリへのファイルアクセス許可を追加するには、以下の手順に従います。

  1. web_mediumtrust.config ファイルまたは web_mediumtrust.config ファイルをベースとして作成したファイルを開きます。
  2. <IPermission class="FileIOPermission"> タグ内にディレクトリ名を追加します。
    <NamedPermissionSets>
           <PermissionSet class="NamedPermissionSet" version="1" Name="ASP.Net">
            <IPermission class="FileIOPermission" version="1"
             Read="$AppDir$;C:MyFolder"
             Write="$AppDir$"
             Append="$AppDir$"
             PathDiscovery="$AppDir$"
           />
            :
        </PermissionSet>
        </NamedPermissionSets>
    
関連トピック

 

 


© 2003-2015, GrapeCity inc. All rights reserved.