次の方法で共有


<processModel> 要素

Microsoft Internet Information Services (IIS) Web サーバーでの ASP.NET プロセス モデルの設定値を構成します。<processModel> セクションは Machine.config ファイル内だけで設定でき、サーバー上で実行されるすべての ASP.NET アプリケーションに適用されます。

**注意   **この要素については、解説を参照してください。

<configuration>
   <system.web>
      <processModel>

<processModelenable="true|false"              timeout="hrs:mins:secs|Infinite"               idleTimeout="hrs:mins:secs|Infinite"              shutdownTimeout="hrs:mins:secs|Infinite"              requestLimit="hrs:mins:secs|Infinite"              requestQueueLimit="num|Infinite"              restartQueueLimit="num|Infinite"              memoryLimit="percent"              cpuMask="num"              webGarden="true|false"              userName="username"              password="password"              logLevel="All|None|Errors"              clientConnectedCheck="hrs:mins:secs|Infinite"              responseDeadlockInterval="hrs:mins:secs|Infinite"              responseRestartDeadlockInterval="hrs:mins:secs|Infinite"              comAuthenticationLevel="Default|None|Connect|Call|                                       Pkt|PktIntegrity|PktPrivacy"              comImpersonationLevel="Default|Anonymous|Identify|                                     Impersonate|Delegate"              maxWorkerThreads="num"              maxIoThreads="num"/>

省略可能属性

属性 オプション 説明
clientConnectedCheck     ASP.NET がクライアント接続チェックを実行するまでに要求がキューに置かれている時間を指定します。
comAuthenticationLevel     DCOM セキュリティの認証のレベルを指定します。既定値は Connect です。
    Default DCOM が通常のセキュリティ ネゴシエーション アルゴリズムを使用して認証レベルを決定することを指定します。
    None 認証を指定しません。
    Connect クライアントがサーバーとの関係を確立したときだけ DCOM がクライアントの資格情報を認証することを指定します。
    Call サーバーが各リモート プロシージャ コールの開始時に要求を受信したときに、DCOM がクライアントの資格情報を認証することを指定します。
    Pkt 受信したデータがすべて予測されたクライアントからのデータであることを DCOM が認証することを指定します。データグラム トランスポートでは、常に Pkt 認証を使用します。
    PktIntegrity クライアントとサーバーの間で転送されたデータがまったく変更されていないことを DCOM が認証および検査することを指定します。
    PktPrivacy DCOM が先行するレベルをすべて認証し、各リモート プロシージャ コールの引数値を暗号化することを指定します。
comImpersonationLevel     COM セキュリティの認証レベルを指定します。
    Default DCOM が通常のセキュリティ ネゴシエーション アルゴリズムを使用して偽装レベルを決定することを指定します。
    Anonymous クライアントがサーバーに対して匿名であることを指定します。サーバーはクライアントを偽装できますが、偽装トークンに格納される情報はありません。Anonymous は、バージョン 1.1 ではサポートされていません。
    Identify サーバーがクライアントの ID を取得できることを指定します。サーバーは ACL (アクセス制御リスト) チェックのためにクライアントを偽装できますが、システム オブジェクトにクライアントとしてアクセスすることはできません。
    Impersonate サーバー プロセスがクライアントの代わりに動作しているときに、クライアントのセキュリティ コンテキストを偽装できることを指定します。このレベルの偽装は、ファイルなどのローカル リソースにアクセスするために使用できます。このレベルで偽装する場合は、1 つのマシン境界だけを通過して偽装トークンを渡すことができます。
    Delegate サーバー プロセスがクライアントの代わりに動作しているときに、クライアントのセキュリティ コンテキストを偽装できることを指定します。サーバー プロセスがクライアントの代わりに動作しているときに、クローク設定を使用して、他のサーバーへ発信する呼び出しを作成することもできます。サーバーは、他のコンピュータ上でクライアントのセキュリティ コンテキストを使用して、ローカル リソースおよびリモート リソースにクライアントとしてアクセスできます。このレベルで偽装する場合は、任意の数のマシン境界を通過して偽装トークンを渡すことができます。
cpuMask     マルチプロセッサ サーバー上で ASP.NET プロセスを実行するプロセッサを指定します。cpuMask 値は、ASP.NET スレッドを実行する CPU を示すビット パターンを指定します。たとえば、cpuMask の 16 進値 0x0d は、ビット パターン 1101 を表します。4 個の CPU のあるコンピュータでは、この値は、CPU 0、2、および 3 上では ASP.NET プロセスをスケジュールできるけれども、CPU 1 上ではスケジュールできないことを示します。ASP.NET は、実行する各 CPU に対して 1 つのワーカー プロセスを起動します。webGarden 属性 (下記参照) が true に設定されている場合、cpuMask は、ワーカー プロセス数を、実行する CPU の数以下に制限します。許可されるワーカー プロセスの最大数は、CPU の数と同じです。既定では、すべての CPU が有効になり、ASP.NET は各 CPU に対して 1 つのプロセスを起動します。webGardenfalse に設定されている場合、cpuMask 属性は無視され、1 つのワーカー プロセスだけが実行されます。
enable     プロセス モデルが有効かどうかを指定します。
    true プロセス モデルが有効であることを示します。
    false プロセス モデルが有効でないことを示します。
idleTimeout     ASP.NET がワーカー プロセスを自動的に終了するまでに動作のない状態を持続できる時間を、hr:min:sec の文字列形式で指定します。既定値は Infinite です。
logLevel     イベント ログに記録されるイベントの種類を指定します。
    All すべてのプロセス イベントのログを記録することを指定します。
    None イベントのログを記録しないことを指定します。
    Errors 予測不可能なシャットダウン、メモリ制限シャットダウン、およびデッドロック シャットダウンのログだけを記録することを指定します。Errors は、既定の設定です。
maxWorkerThreads 5 から 100 プロセスで使用される、CPU ごとのワーカー スレッドの最大数を設定します。たとえば、プロセッサが 1 個のサーバー上でこの値が 25 である場合、ASP.NET はランタイム API を使用してプロセス制限値を 25 に設定します。プロセッサが 2 個のサーバー上では、制限値は 50 に設定されます。既定値は 20 です。maxWorkerThreads の値は、<httpRuntime> 構成セクションの minFreeThread 属性の値以上であることが必要です。
maxIoThreads 5 から 100 プロセスで使用される、CPU ごとの I/O スレッドの最大数を設定します。たとえば、プロセッサが 1 個のサーバー上でこの値が 25 である場合、ASP.NET はランタイム API を使用してプロセス制限値を 25 に設定します。プロセッサが 2 個のサーバー上では、制限値は 50 に設定されます。既定値は 20 です。maxIoThreads の値は、<httpRuntime> 構成セクションの minFreeThread 属性の値以上であることが必要です。
memoryLimit     ASP.NET が新しいプロセスを起動して既存の要求を再割り当てするまでにワーカー スレッドが消費できる最大メモリ サイズを、システム メモリ全体に対する割合として指定します。既定値は 60% です。
password     この属性および userName が存在する場合は、この 2 つの属性の組み合わせにより、設定された Windows ID を使用してワーカー プロセスが実行されます。既定値は AutoGenerate です。パスワードを必要としない特殊なユーザー名 System および Machine と、レジストリ内の暗号化されたワーカー プロセスの資格情報の詳細については、userName の説明を参照してください。
pingFrequency     ワーカー プロセスが実行されているかどうかを確認するために ISAPI 拡張機能がワーカー プロセスを ping する時間間隔を標準プロセス モデル形式 (hr:min:sec) で指定します。ワーカー プロセスが pingTimeout 間隔内で実行されていない場合は、ワーカー プロセスが再起動されます。既定値は 30 秒です。
pingTimeout     非応答型ワーカー プロセスが再起動されるまでの時間間隔を標準プロセス モデル形式 (hr:min:sec) で指定します。ISAPI 拡張機能は、ワーカー プロセスを pingFrequency 間隔ごとに ping します。ワーカー プロセスが pingTimeout 間隔内に応答しない場合は、ワーカー プロセスが再起動されます。既定値は 5 秒です。
requestLimit     ASP.NET が現在のワーカー プロセスに代わる新しいワーカー プロセスを起動するまでに許可される要求の数を指定します。既定値は Infinite です。
requestQueueLimit     ASP.NET が "503 - サーバーがビジー状態です" というエラーを新しい要求に返し始めるまでに、キューに置くことができる要求の数を示します。既定値は 5000 です。
responseDeadlockInterval     次に示す条件と一致した場合にワーカー プロセスが再起動されるまでの時間間隔を標準プロセス モデル形式 (hr:min:sec) で指定します。
  • キューに置かれた要求が存在する。
  • この間隔内で応答がない。

既定値は 3 分です。

responseRestartDeadlockInterval     この属性は ASP.NET では現在使用されておらず、下位互換性のためだけに用意されています。この属性が構成ファイルに存在する場合でも、構成エラーは発生しません。デッドロック状態のイベントでのすべてのリサイクルは、現在 responseDeadlockInterval 属性によって制御されています。
serverErrorMessageFile     この属性が存在する場合は、致命的なエラーが発生したときに既定の "サーバーを使用できません" というメッセージの代わりに使用するファイルの内容を指定します。ファイルの位置は、Machine.config を基準にした相対ファイル パスまたは絶対ファイル パスで指定できます。この属性が存在しない場合は、既定の "サーバーを使用できません" というメッセージが使用されます。
shutdownTimeout     ワーカー プロセスが自動的にシャットダウンするまでの時間 (分の値) を指定します。タイムアウトの時間が経過すると、ASP.NET はワーカー プロセスをシャットダウンします。時間は、hr:min:sec 文字列形式で表されます。既定値は 5 秒 (0:00:05) です。
timeout     ASP.NET が現在のワーカー プロセスに代わる新しいワーカー プロセスを起動するまでの時間 (分の値) を指定します。既定値は Infinite です。
userName     userName 属性が存在する場合は、既定のプロセスの Windows ID とは異なる Windows ID を使用してワーカー プロセスが実行されます。既定では、userName には特殊な値 Machine が設定され、プロセスは、ASP.NET のインストール時に自動的に作成された ASPNET というユーザー アカウント名で実行されます。ASPNET アカウントのパスワードは、インストール時に暗号化されて生成されます。userName 属性と password 属性に有効な資格情報が存在する場合は、指定されたアカウントを使用してプロセスが実行されます。userName の他の特殊な値として、AutoGenerate というパスワードを持つ System があります。この値を設定すると、プロセスが管理者アカウントとして実行され、プロセスで実行されるすべての ASP.NET ユーザー コードに完全な管理者権限を割り当てることができます。ドメイン コントローラになっているサーバーでの ASP.NET の使用については、下記の解説を参照してください。

userNamepassword は、クリア テキストで構成ファイルに格納されます。インターネット インフォメーション サービス (IIS: Internet Information Services) では、ユーザー エージェントの要求に対する応答として構成ファイルが送信されませんが、別の手段で構成ファイルを読み取ることができます。たとえば、サーバーが参加しているドメイン上で適切な資格情報を持つ認証されたユーザーなどは構成ファイルを読み取ることができます。セキュリティの向上のために、processModel セクションは、暗号化された userName 属性と password 属性をレジストリに格納することをサポートします。資格情報は、Windows 2000 および Windows XP のデータ保護 API 暗号化関数によって REG_BINARY 形式で暗号化されている必要があります。詳細については、下記の解説と例を参照してください。

webGarden     cpuMask 属性と共に使用された場合に CPU アフィニティを制御します。マルチプロセッサ Web サーバーのことを Web ガーデンと呼びます。
    true ASP.NET プロセスを実行する許可をどの CPU に与えるかを指定するために、cpuMask 属性を使用することを指定します。
    false CPU の使用が Windows オペレーティング システムによってスケジュールされていることを示します。cpuMask 属性は無視され、1 つのワーカー プロセスだけが実行されます。既定値は false です。

解説

マネージ コード構成システムは、<processModel> 構成設定を読み取りません。<processModel> 構成設定は、aspnet_isapi.dll アンマネージ DLL によって直接読み取られます。このセクションへの変更は、IIS の再起動後に適用されます。

ASP.NET をドメイン コントローラにインストールする場合は、インストールを正しく行うために特別な手順に従う必要があります。詳細については、https://support.microsoft.com にある Microsoft サポート技術情報の文書 Q315158、「ドメイン コントローラで管理者以外のドメイン アカウントを使用すると ASP.NET が動作しない」を参照してください。

ASP.NET が IIS バージョン 6 でネイティブ モードで実行されている場合は、IIS 6 プロセス モデルが使用され、<processModel> セクションでの設定は無視されます。プロセス ID、サイクル、または他のプロセス モデルの値を構成するには、インターネット サービス マネージャのユーザー インターフェイスを使用して、アプリケーションの IIS ワーカー プロセスを構成します。

時間の値は "時:分:秒" の形式で入力します。コロンのない単一の数値が入力されると、その値は分と見なされます。このため、timeout="4" は timeout="00:04:00" と等価になります。

ASP.NET アプリケーションが原因で、デッドロック状態と考えられるため再起動が必要なことを示すメッセージが表示され、ASP.NET ワーカー プロセス (Windows 2000 および Windows XP Professional の aspnet_wp.exe、Windows Server 2003 の w3wp.exe) を再起動する必要がある場合は、responseDeadlockInterval 設定値を増加させてください。

ユーザー名とパスワードのレジストリへの格納

ユーザー名とパスワードを暗号化し、レジストリに格納するには、userNamepassword を次のように設定します。

   userName="registry:HKLM\Software\AspNetProcess,Name"
   password="registry:HKLM\Software\AspNetProcess,Pwd"

キーワード registry とコンマの間の文字列は ASP.NET が開くレジストリ キーの名前を示します。コンマの後ろの部分には ASP.NET が資格情報を読み取る文字列値の名前が 1 つ含まれます。コンマが必要であり、資格情報が HKLM ハイブに格納されている必要があります。構成形式が不正な場合、ASP.NET ではワーカー プロセスが起動されず、現在のアカウント作成エラー コード パスが表示されます。

資格情報は REG_BINARY 形式で、Windows API 関数 CryptProtectData の呼び出しの出力を含んでいる必要があります。ASP.NET レジストリ設定コンソール アプリケーション (Aspnet_setreg.exe) を使用して、暗号化された資格情報を作成し、レジストリに格納できます。ASP.NET レジストリ設定コンソール アプリケーションでは、暗号化を実行するために CryptProtectData が使用されます。Visual C++ ソース コードおよびドキュメントと共に Aspnet_setreg.exe をダウンロードするには、www.asp.net の Web サイトで "aspnet_setreg" を検索してください。

暗号化された資格情報を格納するキーに対するアクセス権を設定して、Administrators および SYSTEM だけがアクセス権を持つようにしてください。キーは SYSTEM として実行されている ASP.NET プロセスによって読み取られるため、次のアクセス許可を設定してください。

Administrators:F

SYSTEM:F

CREATOR OWNER:F

ProcessAccount:R

これにより、データを保護するために二重の防御手段が取られることになります。

  • ACL アクセス許可では、データにアクセスする ID が Administrator である必要があります。
  • アカウントの資格情報を復元するには、攻撃者はサーバー上で CryptUnprotectData コードを実行する必要があります。

いくつかの <processModel> 構成設定を指定する例を次に示します。

<configuration>
   <system.web>
      <processModel
         enable="true"
         timeout="15" 
         idleTimeout="25"
         shutdownTimeout="5"
         requestLimit="1000"
         requestQueueLimit="500"
         responseDeadlockInterval="00:03:00"              
         responseRestartDeadlockInterval="Infinite"
         memoryLimit="20"
         webGarden="true"
         maxWorkerThreads="25"
         maxIoThreads="25"/>
   </system.web>
</configuration>

暗号化したユーザー名とパスワードをレジストリのユーザー定義のキー AspNetProcess に格納する例を次に示します。

<configuration>
   <system.web>
      <processModel>
         userName="registry:HKLM\Software\AspNetProcess,Name"
         password="registry:HKLM\Software\AspNetProcess,Pwd"
      </processModel>
   </system.web>
</configuration>

必要条件

格納されている場所 : <system.web>

Web プラットフォーム**** : IIS 5.0、IIS 5.1、IIS 6.0

構成ファイル : Web.config、Machine.config

構成セクション ハンドラ : System.Web.Configuration.ProcessModelConfigurationHandler

参照

ASP.NET の構成 | ASP.NET 設定スキーマ