ASP.NET プロセス ID の構成

ASP.NET ページはプロセスまたは Windows プログラムの中で実行されます。すべての Windows プログラムは、特定のセキュリティ ID を使用して実行されます。既定では、ASP.NET プロセスは定義済みの Windows ID によって実行されます。または、アプリケーションで偽装を使用するように構成すると、別の ID または要求元のユーザーの Windows ID で実行するように ASP.NET を設定できます。

ASP.NET アプリケーションのセキュリティを強化するには、アプリケーションに必要な最小限のアクセス許可を付与された ID を使用して ASP.NET プロセスを実行する必要があります。これによって、セキュリティ侵害が発生した場合に ASP.NET が公開するリソースが受ける被害を抑えることができます。

Microsoft Windows Server 2003 とインターネット インフォメーション サービス (IIS: Internet Information Services) 6.0 を実行する Web サーバーでは、ASP.NET プロセスは Web アプリケーションのアプリケーション プールで実行されます。アプリケーション プールは、ASP.NET を実行する ID を定義します (既定では NETWORK SERVICE アカウント)。IIS の以前のバージョンでは (Windows 2000 および Windows XP Professional の各オペレーティング システム)、ASP.NET は ASP.NET ワーカー プロセス (Aspnet_wp.exe) で実行されます。ASP.NET を実行する ID は、Aspnet_wp.exe プロセスの ID によって定義されます (既定では ASPNET アカウント)。

Windows Server 2003 を実行するサーバーで ASP.NET アプリケーションの ID を指定するには、IIS マネージャを使用して ASP.NET アプリケーションのアプリケーション プールの ID を構成します。アプリケーション プール ID は、サーバー コンピュータの IIS_WPG グループに追加する必要があります。

ASP.NET ワーカー プロセスを Windows 2000 および Windows XP Professional の固有のアカウントで実行するには、Web サーバー コンピュータの Machine.config ファイルの <processModel> 構成要素に、次の 2 つの属性を追加します。

  • userName   プロセスを実行する Windows アカウント名。

  • password   アカウントのクリア テキストのパスワード。構成ファイルにクリア テキストのパスワードを格納する場合は、セキュリティ リスクが伴います。構成ファイルの資格情報を保持する場合は、保護された構成を使用して <processModel> 構成要素の内容を暗号化する必要があります。詳細については、「保護された構成を使用した構成情報の暗号化」を参照してください。インターネットに公開されるアプリケーションでは、IIS が提供する匿名の ID で偽装するなどの特定の ID でアプリケーションを実行するための代替手段を使用する必要があります。詳細については、「ASP.NET の偽装と IIS 認証の使用」を参照してください。

これらの属性を構成ファイルの <processModel> 要素で設定し、ワーカー プロセスをローカル ユーザーのアカウントで実行する例を次に示します。

<system.web>
  <processModel enable="true"
    userName="LOCALMACHINE\IUSR_ProcessUser"
    password="%Hco94*#QW12"/>
</system.web>

既存の Windows ID の名前に userName 属性を設定することに加えて、定義済みの名前 ( System または Machine) に設定することもできます。System アカウントは、IIS 自身と同じ ID (通常は SYSTEM) でワーカー プロセスを実行します。

Security noteセキュリティに関するメモ :

System アカウントは権限を格上げしているために ASP.NET プロセスが侵害された場合にセキュリティ リスクがあるため、アプリケーションをアカウントで実行することはお勧めできません。

Machine アカウントは、アクセス許可が制限された ASPNET という特別のアカウントを使用してワーカー プロセスを実行します。どちらの ID を使用する場合も、プロセスはオペレーティング システムに資格情報を提供する必要はありません。

Noteメモ :

ASP.NET アプリケーションが適切に動作するには、プロセス ID が ASP.NET の必須アクセス制御リスト (ACL) で示されているアクセス制御リスト (ACL: Access Control List) にアクセスできることが必要です。また、IIS 5.0 を実行するサーバー上で、プロセス ID は、IIS メタデータに対する読み取りアクセス権を持っている必要があります。このアクセス権は Aspnet_regiis.exe ツールを使用して、該当する -ga オプションを指定することにより設定できます (たとえば、aspnet_regiis -ga "UserDomain\ApplicationUser")。

参照

その他の技術情報

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