ASP.NET のプロセス ID と要求 ID

文書翻訳 文書翻訳
文書番号: 317012 - 対象製品
この記事は、以前は次の ID で公開されていました: JP317012
すべて展開する | すべて折りたたむ

目次

概要

この資料では、デフォルトのプロセス アカウントに許可されているアクセス許可の概要と、デフォルトのアクセス許可ではタスクの実行に必要な権限が不足する状況について説明します。

Microsoft Windows 2000 または Microsoft Windows XP に ASP.NET をインストールした場合、デフォルトでは、ASP.NET はワーカー プロセスで Web アプリケーション コードを実行します。このプロセスの ID には、ASPNET アカウント (このアカウントの完全な名前は aspnet_wp です) というローカル アカウントがデフォルトで使用されます。ASP.NET ベータ版でのプロセス ID は System ですが、この ID はコンピュータに対して多くのアクセス許可を持つ強力な管理者アカウントです。ASP.NET 製品版では、デフォルトのインストールで提供される権限を制限するために、大部分の Web アプリケーションに適した、権限の少ない ASPNET アカウントが使用されます。

: Microsoft インターネット インフォメーション サービス (IIS) 6.0 を使用している場合、デフォルトでは、ASP.NET Web アプリケーションは NetworkService アカウントのセキュリティ コンテキストで実行されます。

詳細

プロセス ID の構成

プロセス ID の構成は、インストールのルート ディレクトリの Config サブディレクトリにある Machine.config ファイルの <processModel> セクションで行うことができます。userName 属性と password 属性でプロセス ID を管理します。2 つの属性のデフォルト値は以下のとおりです。
			<processModel  userName="machine" password="AutoGenerate" />
			
machine および AutoGenerate という値を指定すると、ASP.NET で、組み込みの ASPNET アカウントが使用され、そのアカウントのローカル セキュリティ機関 (LSA) に格納されている、暗号で強化されたランダムなパスワードが使用されます。

より多くのアクセス許可を持つプロセスを使用する場合は、userName 属性を System に設定します。この設定を行うと、ASP.NET ワーカー プロセスが Inetinfo.exe プロセスと同一の ID で実行されます。Inetinfo.exe プロセスは、デフォルトで System ID として実行されます。System ID を使用するように ASP.NET ワーカー プロセスを構成すると、このワーカー プロセスはローカル コンピュータのほぼすべてのリソースにアクセスできます。Windows 2000、Windows XP、または Windows Server 2003 を実行しているコンピュータでは、System アカウントにはネットワーク資格情報もあるため、コンピュータ アカウントとしてネットワーク リソースにアクセスできます。 プロセスが System ID として実行されるように構成するには、<processModel> セクションの userName 属性を以下のように変更します。
			<processModel  userName="SYSTEM" password="AutoGenerate" />
			

ASPNET アカウントのデフォルトのアクセス許可

ASP.NET をインストールすると、ローカル アカウントとして ASPNET アカウントが作成されます。ASPNET アカウントはインストールを行ったコンピュータの Users グループにのみ属しています。そのため、ASPNET アカウントには Users グループに関連付けられているすべての権限が付与されており、Users グループがアクセスを許可されているすべてのリソースにアクセスできます。ASPNET アカウントは Users グループから以下のユーザー権利を継承しています。
  • SeChangeNotifyPrivilege
  • SeUndockPrivilege
  • SeInteractiveLogonRight
  • SeNetworkLogonRight
上記の権限以外に、ASPNET アカウントには、デフォルトで以下の権限も許可されています。
  • SeServiceLogonRight
  • SeBatchLogonRight
  • SeDenyInteractiveLogonRight
ASP.NET により、以下のフォルダに対する固有のフル コントロールのアクセス許可が ASPNET アカウントに付与されます。
  • Temporary ASP.NET Files
  • %windir%\temp
この他、ASP.NET により、Microsoft .NET Framework のインストール ディレクトリに対する読み取りのアクセス許可が付与されます。

次の一覧は、ASPNET アカウントに必要なアクセス制御リスト (ACL) の概要を示したものです。Windows 2000 および Microsoft .NET Framework のインストールには、デフォルトで、これらの ACL が含まれています。
  • 場所 : %installroot%\ASP.NET Temporary Files
    必要なアクセスの種類 : フォルダの読み取りと書き込み、およびドライブのルート フォルダの [フォルダの内容の一覧表示]
    アカウント : プロセス アカウントと構成済みの偽装アカウント
    説明 : ASP.NET 動的コンパイルを実行する場所です。ここでは、アプリケーション コードがアプリケーションごとに別のディレクトリに生成されます。ルートになる場所を構成するには、<compilation> セクションの tempDir 属性を使用します。

    : machine.config を変更して ASP.NET の一時ファイルを別の場所に保存する場合は、ASPNET アカウントに、そのドライブのルート レベルに対する [フォルダの内容の一覧表示] のアクセス許可が必要です。
  • 場所 : %windir%\temp
    必要なアクセスの種類 : 読み取りと書き込み
    アカウント : プロセス アカウント
    説明 : XML (Extensible Markup Language) Web サービスで、シリアル化プロキシの作成に使用される場所です。
  • 場所 : アプリケーション ディレクトリ
    必要なアクセスの種類 : 読み取り
    アカウント : プロセス アカウントと構成済みの偽装アカウント
    説明 : アプリケーションのコンテンツが格納される場所です (読み取りのアクセス許可のみが必要です)。
    詳細については、次のマイクロソフト Web サイトを参照してください。
    http://www.microsoft.com/japan/msdn/net/security/SecNetHT01.asp
  • 場所 : Web サイトのルート (%systemdrive%\inetpub\wwwroot、または既定の Web サイトで指定されているパス)
    必要なアクセスの種類 : 読み取り
    アカウント : プロセス アカウントと構成済みの偽装アカウント
    説明 : ASP.NET では、drive:\inetpub\wwwroot\web.config の構成ファイルの読み取りと、変更の監視が行われます。
  • 場所 : %installroot% 階層
    必要なアクセスの種類 : 読み取り
    アカウント : プロセス アカウントと構成済みの偽装アカウント
    説明 : ASP.NET は、Machine.config ファイルの .NET Framework アセンブリにアクセスできる必要があります (machine.config ファイルは %installroot% の \Config サブディレクトリにあります)。
  • 場所 : %windir%\assembly
    必要なアクセスの種類 : 読み取り
    アカウント : プロセス アカウントまたは構成済みの偽装アカウント
    説明 : 共有アセンブリが格納されるグローバル アセンブリ キャッシュです。
Windows 2000 ベースのコンピュータのデフォルトの ACL の詳細については、「関連情報」に記載されているホワイト ペーパー『既定のアクセス制御設定』を参照してください。

: この資料に記載されている作業の中には、その作業を実行するのに必要なアクセス許可が、デフォルトでは ASPNET アカウントに付与されていないものもあります。

リソースへのアクセス

以下では、さまざまなリソースの使用方法について説明します。偽装を有効にし、偽装アカウントにリソースへのアクセスを許可している場合、これらのリソースの多くにローカルでアクセスすることができます。ただし、アプリケーションで Kerberos や基本認証などの委任可能な認証機構を使用していないと、ほとんどの場合、偽装アカウントを使用してリモートのリソースにアクセスすることはできません。また、「固定 ID でのコードの実行」で概略を示すように、COM+ サービスを使用してリソースにアクセスする方法もあります。

ファイル リソースの使用

ASPNET アカウントで実行されるアプリケーションからファイルへの書き込みができるように、ファイルへの書き込みの前に特定のユーザーをコードで偽装するか、ASPNET アカウントに書き込みのアクセス許可を与えることができます。書き込みのアクセス許可は個別のファイルに対して与えることも、ディレクトリ階層に対して与えることもできます。

重要 : 個別のファイルまたはディレクトリ階層に対して書き込みのアクセス許可を付与すると、サーバー上の ASPNET アカウントで実行されているすべての ASP.NET Web アプリケーションが、該当のファイルまたはディレクトリ階層に対して書き込みを行うことができます。 コード内で特定のユーザーを偽装する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
306158 ASP.NET アプリケーションに偽装を実装する方法
ファイルのアクセス制御リスト (ACL) を変更するには、以下の手順を実行します。
  1. エクスプローラを起動します。
  2. アクセス許可を変更するファイルまたはフォルダをクリックします。
  3. [ファイル] メニューの [プロパティ] をクリックします。
  4. [セキュリティ] タブをクリックします。ACL アクセス許可の該当するチェック ボックスをオンにします。
スクリプトまたは Windows に含まれている Cacls.exe コマンド ライン ツールを使用して、ファイルの ACL を変更することもできます。

ASP.NET 1.1 では、プロセス ファイルの格納には <DriveName>\Documents and Settings\<MachineName>\ASPNET フォルダが使用されます (<DriveName> は ASP.NET がインストールされているコンピュータ上のドライブ、<MachineName> はコンピュータ名を示します)。

偽装の有効化

偽装を使用すると、認証済みのユーザーまたは匿名ユーザーのどちらかの、要求したエンティティのセキュリティ コンテキストで実行されます。ASP.NET では、偽装を有効にするかどうかは任意に選択でき、デフォルトでは有効になっていません。コンピュータ レベルまたはアプリケーション レベルで偽装を有効にするには、machine.config ファイルまたは web.config ファイルの <system.web> セクションに次の構成ディレクティブを追加します。
			<identity impersonate="true"/>
			

データベースの使用

SQL 認証を使用してデータベースに接続するアプリケーションは、ASPNET アカウントに切り替えても通常は影響を受けません。これは、統合認証と偽装を使用するアプリケーションの場合も同様です。ただし、偽装を行わずに Windows 認証を使用しているアプリケーションの場合は、ASPNET アカウントにデータベースへのアクセスを許可する必要があります。

名前付きパイプを介して、統合 Windows 認証を使用して Microsoft SQL Server への認証を行う場合は、ASPNET アカウントを使用できません。しかし、TCP (Transmission Control Protocol) トランスポートを介して統合 Windows 認証を使用する場合、ASPNET アカウントを使用することができます。

アプリケーションで Microsoft Access データベースを使用する必要がある場合、ASPNET アカウントでデータベース ファイルへの書き込みができる必要があります。管理者は適切にファイルのアクセス許可を調整する必要があります。

イベント ログの使用

ASPNET アカウントでアプリケーションを実行中、必要に応じて、アプリケーション イベント ログへの書き込みを行うことができます。アプリケーションで新しいイベント ログの分類を作成する必要がある場合、HKEY_LOCAL_MACHINE レジストリ ハイブの下にレジストリ キーを作成する必要があります。ただし ASPNET アカウントでは分類を作成できません。

実行時に分類を作成するには、偽装を有効にして、より多くのアクセス許可を持つアカウントを偽装する必要があります。または、管理者が分類を作成してから、アプリケーションでその分類に対して実行時に書き込みを行う方法もあります。

アプリケーションで新しいイベント ログの分類を作成する必要がある場合は、インストール時に分類を作成します。分類が作成されていれば、ASPNET アカウントでアプリケーション イベント ログに書き込みを行うことができます。

System.DirectoryServices と Active Directory の使用

Web アプリケーションで Active Directory にアクセスする必要がある場合、委任をサポートする環境で偽装を使用することができます。この他にも、System.DirectoryServices 名前空間の DirectoryEntry コンストラクタに明示的な資格情報を指定して、Active Directory にアクセスする方法があります。アプリケーションで明示的な資格情報を使用する場合、COM+ のコンストラクタ文字列などの技法や、Windows データ保護 API (アプリケーション プログラミング インターフェイス) など、適切な方法を使用して資格情報を格納する必要があります。

パフォーマンス カウンタの使用

ASPNET アカウントには、パフォーマンス カウンタのデータへの書き込みを行うのに十分なアクセス許可が付与されています (ただし読み取りのアクセス許可はありません)。アプリケーションでパフォーマンス カウンタのデータを読み取る必要や、パフォーマンス カウンタのカテゴリを作成する必要がある場合、Administrator または Power Users のアクセス許可が必要です。

アプリケーションでパフォーマンス カウンタのカテゴリを新しく作成する必要がある場合、そのカテゴリはインストール時に作成します。カテゴリが作成されていれば、ASPNET アカウントでカウンタに書き込みを行うことができます。

ASPNET アカウントを使用している場合でも、パフォーマンス モニタ ツール (Perfmon.exe) を使用して、ASP.NET パフォーマンス カウンタを監視できます。

Windows 2000 では、以下の手順を実行します。
  1. レジストリ エディタ (regedt32.exe) を起動します。
  2. 次のレジストリ キーを見つけます。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ASP.NET_1.1.4322\Names
  3. [セキュリティ] (または、[編集]) メニューの [アクセス許可] をクリックします。
  4. 以下のアクセス許可を持つワーカー プロセス ID を追加します。
    • 値の照会
    • 値の設定
    • サブキーの作成
    • サブキーの列挙
    • 通知、読み取り制御
Windows Server 2003 では、ID を IIS_WPG グループに追加します。

アウトプロセスの COM サーバーの起動

ASPNET アカウントで実行中にアウトプロセスの COM サーバーを起動する必要があるアプリケーションでは、Dcomcnfg.exe ツールを使用して、ASPNET アカウントに起動のアクセス許可を明示的に与えることができます。

デバッグの問題点

デフォルトでは、クライアント アプリケーションから XML Web サービス呼び出しにステップ インできません。XML Web サービスにステップ インするには、XML Web サービスを実行しているコンピュータの Debugger Users グループに、ASPNET アカウントを追加する必要があります。

固定 ID でのコードの実行

COM+ サービスでは、固定 ID でコードを実行できます。System.EnterpriseServices 名前空間の ServicedComponent クラスを使用して、COM+ サービスを使用するマネージ コード コンポーネントを記述できます。特権が与えられる機能を ServicedComponent から派生したクラスでラップすると、構成済みの ID を使用して COM+ サーバー アプリケーションとしてこのクラスを実行できます。

UNC 共有のコード ビハインド ファイルのコンパイル

ASP.NET でのアプリケーション ファイル開発には、複数の方法があります。
  • .aspx ファイル内で HTML (Hypertext Markup Language) を使用して、ページのコードを Bin ディレクトリのプリコンパイル済みアセンブリに格納します。これは Microsoft Visual Studio .NET モデルです。
  • 必要に応じてコンパイルされる単一のソース ファイルに、すべてのコードと HTML コンテンツをパッケージ化します。
  • ASP.NET ファイルに HTML プレゼンテーションを配置し、<%@ Assembly %> ディレクティブの src 属性を使用して、そのファイルに関連するソース コードを動的にコンパイルします。
: アプリケーションのコンテンツをネットワーク共有に配置した場合、コンパイラは ASPNET アカウントで起動されるため、ファイルにアクセスするためのネットワーク資格情報がありません。ネットワーク共有を使用する場合、src 属性を使用してファイルを指定することはできません。src 属性を使用するのではなく、他のいずれかの方法を使用する必要があります。

プライマリ ドメイン コントローラまたはバックアップ ドメイン コントローラでの ASP.NET の使用


デフォルトでは、ドメイン コントローラ上で ASP.NET 1.1 を使用している場合、ASP.NET Web アプリケーションは IWAM_<ComputerName> アカウントのセキュリティ コンテキストで実行されます (<ComputerName> はコンピュータ名を示します)。

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
315158 [FIX] ドメイン コントローラでデフォルトの ASPNET アカウントを使用すると ASP.NET が動作しない

IIS メタベースの読み取り

ASPNET アカウントでは、Microsoft インターネット インフォメーション サービス (IIS) メタベースを読み取ることはできません。アプリケーションでメタベースの設定にアクセスする必要がある場合、Metaacl.exe ユーティリティを使用して、メタベース ノードに対する読み取りのアクセス許可を選択的に付与できます。

アプリケーションで .disco ファイルを使用する必要がある場合、ASPNET アカウントに対してメタベースへの読み取りのアクセス許可を付与する必要があります。.disco ファイルでは、探索サービスを提供するために、IIS メタベースの読み取りが可能である必要があります。

System.Management および WMI の使用

WMI (Windows Management Instrumentation) は、Windows ベースのコンピュータの管理および監視に使用できる強力な管理機能です。ただし、ASPNET アカウントで ASP.NET アプリケーションを実行する場合、デフォルトでは、このアカウントには Everyone と同じアクセス許可しかありません。これらのアクセス許可には、ローカル コンピュータでの、WMI データの読み取り、プロバイダ データの書き込み、およびプロバイダのメソッドの実行があります。WMI のセキュリティ機構の詳細については、WMI Platform SDK のドキュメントまたは MSDN を参照してください。

: Service Pack 3 (SP3) 以降がインストールされていない Windows 2000、または、Service Pack 1 (SP1) 以降がインストールされていない Windows XP では、ASPNET アカウントで実行される ASP.NET Web アプリケーションは機能せず、"アクセス拒否 (0x80041003)" のエラー メッセージが出力される場合があります。これは、特定の WMI 名前空間のアクセスに必要な権限が、アカウントにないために発生します。この問題を解決するには、Windows XP SP1 以降、または、Windows 2000 SP3 以降をインストールします。この問題を回避するには、次の手順を実行します。
  1. コンピュータの管理 Microsoft 管理コンソール (MMC) スナップインを開きます。
  2. [サービスとアプリケーション] を展開し、[WMI コントロール] をクリックします。
  3. [WMI コントロール] を右クリックし、[プロパティ] をクリックします。
  4. [WMI コントロールのプロパティ] ダイアログ ボックスの [セキュリティ] タブをクリックします。
  5. [Root] を展開して [CIMV2] をクリックし、[セキュリティ] をクリックします。
  6. [セキュリティ] ダイアログ ボックスで、[詳細] (または [詳細設定]) をクリックします。
  7. [CIMV2 のアクセス制御の詳細設定] ダイアログ ボックスで、[追加] をクリックします。localMachineName\ASPNET をクリックし、[OK] をクリックします。
  8. [CIMV2 のアクセス許可のエントリ] ダイアログ ボックスで、[適用先] ボックスに [この名前空間と副名前空間] が設定されていることを確認します。
  9. [アカウントの有効化] と [リモートの有効化] の [許可] 列のチェック ボックスがオンになっていることを確認します。
  10. [WMI コントロールのプロパティ] ダイアログ ボックスに戻るまで、各ダイアログ ボックスの [OK] をクリックします。
  11. アプリケーションからアクセスするその他の WMI 名前空間について、手順 5. 〜 10. を実行します。
  12. IIS を再起動します。再起動するには、コマンド ラインから IISRESET を実行します。
デフォルトでは、ASP.NET によって ASPNET アカウント用に暗号化強度の高いパスワードが生成されます。このため、ASPNET アカウントのパスワードがコンピュータ間で共有されている場合およびデフォルト以外の値に再設定されている場合を除いて、この回避策は安全です。

デスクトップとの対話処理

デスクトップとの対話処理を許可するように IIS サービスを構成しても、ASPNET アカウントにはデスクトップにアクセスするための適切な権限がありません。これは、デフォルトのウィンドウ ステーションおよびデスクトップの DACL (随意アクセス制御リスト) が原因です。管理者がこれらの DACL を変更するか、またはこれらのオブジェクトへのアクセス許可を持つアカウントでプロセスを実行します。

ASP.NET の削除

ASP.NET を削除すると、ASPNET アカウントは無効に設定されますが、システムからは削除されません。ASP.NET を再インストールする予定がない場合は、ASPNET アカウントを削除しても問題ありません。

ASPNET アカウントを明示的に削除した後で ASP.NET を再インストールすると、新しい ASPNET アカウントが作成され、新しいセキュリティ識別子 (SID) が割り当てられます。その結果、以前の ASPNET アカウントを参照している ACL は、新しい ASPNET アカウントには適用されません。

関連情報

Windows 2000 のデフォルトのアクセス制御リストの詳細については、次のマイクロソフト ホワイト ペーパー『既定のアクセス制御設定』を参照してください。
http://www.microsoft.com/japan/windows2000/techinfo/planning/security/secdefs.asp
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
329290 ASP.NET ユーティリティを使用して資格情報およびセッション状態の接続文字列を暗号化する方法
315158 [FIX] ドメイン コントローラでデフォルトの ASPNET アカウントを使用すると ASP.NET が動作しない

プロパティ

文書番号: 317012 - 最終更新日: 2005年11月2日 - リビジョン: 12.3
この資料は以下の製品について記述したものです。
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
キーワード:?
kbconfig kbhttpruntime kbinfo kbsecurity KB317012
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com