Select the product you need help with
ASP.NET のアクセス許可およびセキュリティに関連する一般的な問題のトラブルシューティング文書番号: 910449 - 対象製品 ASP.NET Support Voice コラムASP.NET のアクセス許可およびセキュリティに関連する一般的な問題のトラブルシューティングマイクロソフトは、ユーザーの要望に応じたコラムを作成したいと考えています。興味のあるトピック、「サポート技術情報」 (Microsoft Knowledge Base) や「Support Voice コラム」でこれから取り上げてほしいテーマについてのご意見をお待ちしています。Ask For It
(http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=)
のフォームを使用して、ご意見やご感想をお寄せください。このコラムの末尾にも、このフォームへのリンクを掲載しています。
目次
こんにちは。ASP.NET チームの Vignesh A.G です。ASP.NET Support Voice コラムへようこそ。簡単に自己紹介します。私は、マイクロソフトで 2 年にわたり、ASP.NET および Microsoft インターネット インフォメーション サービス (IIS) 専門の開発者サポート エンジニアとして勤務しています。
このコラムの目的は、ASP.NET のセキュリティを説明することではありません。ここ PSS で経験するアクセス許可やセキュリティに関連する一般的な問題を切り分けて解決するのに役立つ、いつくかのトラブルシューティングの方法やヒントについて概要を説明します。ASP.NET のアクセス許可およびセキュリティに関連する問題は、多くの資料に掲載されています。実際、これまでに多くの人が同じ問題に遭遇していると推測されます。このため、このコラムは、ASP.NET のセキュリティに関連するすべての情報を見つけるのに最適な場所を提供することを目的としています。問題を自分自身で解決するのが最もよい方法です。 役立つツール何か壊れたものを修理する場合には、その問題を絞り込むのに役立つツールを使いこなせるようになる必要があります。ASP.NET のセキュリティの問題に関しては、FileMon、RegMon、Security Auditing などのツールが利用できます。FileMon の詳細については、次のマイクロソフト Web サイトを参照してください。http://www.microsoft.com/technet/sysinternals/FileAndDisk/Filemon.mspx
RegMon の詳細については、次のマイクロソフト Web サイトを参照してください。
(http://www.microsoft.com/technet/sysinternals/FileAndDisk/Filemon.mspx)
http://www.microsoft.com/technet/sysinternals/SystemInformation/Regmon.mspx
(http://www.microsoft.com/technet/sysinternals/SystemInformation/Regmon.mspx)
ドリルダウンによる問題の切り分け
正確なエラー メッセージを確認する私たちがユーザーにたずねる最初の質問は、「正確なエラー メッセージは何ですか」です。Microsoft .NET Framework によってスローされたエラー メッセージの正確な記述がわかっている場合は、このセクションを省略できます。アプリケーションで実際のエラー メッセージが表示されず、代わりに、「予期しないエラーが発生しました。詳細については、Web サイトの管理者にお問い合わせください」などの簡易エラー メッセージが表示される場合、このメッセージは役に立ちません。実際のエラー メッセージを確認するのに役立ついくつかの手順を次に示します。
ヒント : 実際のエラー メッセージを表示する方法を開発者に問い合わせることもできます。開発者は、実際のエラー メッセージをファイルに記録したり、電子メール通知で取得したりしている可能性があります。変更するすべてのファイルのバックアップを必ず作成してください。バックアップを使用すると、いずれの変更も常にロールバックできます。 ASP.NET アプリケーションがアクセスするローカル リソースに対するアクセス許可が不足しているために問題が発生する独自のエラー メッセージが表示されるために問題の正確な記述が得られない場合は、FileMon を実行して問題を再現します。FileMon を停止し、キャプチャしたデータを FileMon.xls として保存します。このファイルを Microsoft Excel で開きます。[データ] メニューの [フィルタ] をポイントし、[オートフィルタ] をクリックして、Excel のフィルタ機能を使用します。F 列のドロップダウン リストで [ACCESS DENIED] エラーをクリックします。FileMon の出力例を次に示します。 10381 1:01:11 PM w3wp.exe:2320 OPEN C:\winnt\microsoft.net\framework\v1.1.4322\Temporary ASP.NET Files\sessiontest\8832e585\275ec327\global.asax.xml ACCESS DENIED NT AUTHORITY\NETWORK SERVICE 890960 ヒント : ASP.NET プロセス アカウントを管理者アカウントに変更して、問題が解決するかどうかを確認する方法もあります。IIS 5.x では machine.config ファイルのプロセス モデル セクションで userName を "SYSTEM" に変更し、IIS 6.0 では IIS AppPool 識別子を "Local System" に変更して、アプリケーションが動作するかどうかを確認します。
(http://support.microsoft.com/kb/890960/
)
FileMon を使用した ASP.NET のトラブルシューティング
注 : これは解決策としてではなく、トラブルシューティングの 1 つの手順としてのみ使用してください。 多くの人が Microsoft .NET Framework を再インストールしたり、オペレーティング システムさえも再インストールしたりしますが、この方法は推奨されるトラブルシューティングの手順ではありません。また、それによって問題が再現しなくなる保証もありません。一例を挙げて説明します。断続的に問題が発生する場合、問題の切り分けやトラブルシューティングが困難なことがよくあります。この例では、ユーザーのアプリケーションは数時間正常に動作した後に、突然エラーが発生して、以下のメッセージが表示されます。ユーザーは既に .NET Framework およびオペレーティング システムを再インストールしており、これにより問題が解決されたように見えますが、数日後に問題は再現します。 元に戻す ![]() FileMon を実行しても、ACCESS DENIED エラーは表示されません。ASPNET アカウントには、必要なアクセス許可はすべて付与されています。この問題から復旧する唯一の方法は、コンピュータを再起動することです。IIS をリセットしても、復旧しません。このような場合ユーザーは、「マイクロソフトのソフトウェアを復旧するには、必ず再起動が必要なのだろうか」と考えますが、これは間違いです。 ここで重要なことは、エラー メッセージを正しく読み取ることです。エラー メッセージには、通常の ACCESS DENIED エラーではなく、"cannot open <file> for writing" (書き込みモードで <file> を開けません) と明確に表示されています。つまり、ファイルまたはフォルダをロックしているのは他のプロセスであり、それによって ASP.NET は書き込みができなくなっていると考えられます。問題が一時的に解消したのは、そのプロセスが再起動により停止し、再びファイルをロックするまで、ASP.NET アプリケーションが正常に動作したためと考えられます。論理的に考察して、サーバー上で実行しているすべてのウイルス対策プログラム、サードパーティ製のスパイウェア対策プログラム、または他のファイル監視ソフトウェアを停止することが必要です。特定のサードパーティ製のソフトウェアを示すことは控えますが、一般的に、ウイルス対策ソフトウェアは、IIS および ASP.NET アプリケーションに対して、多くの面で悪影響を及ぼすことが知られています。ウイルス対策ソフトウェアが引き起こす別の既知の問題として、Bin フォルダまたは .config ファイルにアクセスすると AppDomain がリサイクルされることによりセッションが喪失する問題が挙げられます。 ヒント : 最も簡単にサードパーティのサービスを停止するには、次の手順を実行します。
注 : 同じエラーが常に再現する場合は、ウイルス対策ソフトウェアではなく、他の原因により問題が発生している可能性があります。簡単な ASP.NET テスト アプリケーション (Test) を作成して、Test.aspx ページでも同じ問題が発生するかどうかを切り分けます。問題が発生する場合は、必要なアクセス制御リスト (ACL) のすべてが ASP.NET に対して設定されていることを確認します。 「ASP.NET の必須アクセス制御リスト (ACL)」 (http://msdn2.microsoft.com/ja-jp/library/kwzs111e(VS.80).aspx
(http://msdn2.microsoft.com/ja-jp/library/kwzs111e(VS.80).aspx)
) を参照してください。
ヒント : %SystemRoot%\Assembly フォルダは、グローバル アセンブリ キャッシュです。エクスプローラを使用して、このフォルダの ACL を直接編集することはできません。代わりに、コマンド プロンプトを使用して、次のコマンドを実行します。
cacls %windir%\assembly /e /t /p domain\useraccount:r 別の方法として、次のコマンドを使用して Shfusion.dll を登録解除した後で、エクスプローラを使用して GUI でアクセス許可を付与します。
C:\WINDOWS\Microsoft.NET\Framework\VersionNumber>regsvr32 ?u shfusion.dll エクスプローラでアクセス許可を付与した後、次のコマンドを使用して Shfusion.dll を再登録します。
C:\WINDOWS\Microsoft.NET\Framework\VersionNumber>regsvr32 shfusion.dll ASP.NET アプリケーションがアクセスするリモート リソースに対するアクセス許可が不足しているために問題が発生するASP.NET アプリケーションで Microsoft SQL Server または汎用名前付け規則 (UNC) 共有などのリモート リソースにアクセスする場合、多くの問題が発生する可能性があります。また、リモート リソースで多くの設定が不適切である場合もあります。リソースに適切にアクセスするために、これらの問題をトラブルシューティングする必要があります。 詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。891031
最初に、エクスプローラを使用して、リモート サーバーに接続できるかどうかを確認します。
(http://support.microsoft.com/kb/891031/
)
ASP.NET アプリケーションからリモート リソースにアクセスする場合の一般的なセキュリティの問題
907272
(http://support.microsoft.com/kb/907272/
)
Kerberos 認証および委任問題のトラブルシューティング
326985
IIS 認証方法の詳細については、次の Microsoft Developer Network (MSDN) Web サイトを参照してください。
(http://support.microsoft.com/kb/326985/
)
[HOWTO] IIS の Kerberos に関する問題のトラブルシューティング
http://msdn2.microsoft.com/en-us/library/aa292114(VS.71).aspx
(http://msdn2.microsoft.com/en-us/library/aa292114(VS.71).aspx)
ヒント : ASP.NET アプリケーションからリモート UNC 共有には接続でき、SQL Server を実行しているリモート サーバーには接続できない場合、SQL Server のサービス プリンシパル名 (SPN) のチェックまたは設定が必要な場合があります。IIS でアプリケーションの基本認証だけを有効にして、SQL Server を実行しているリモート サーバーに接続できるかどうかを確認します。 詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。 319723
(http://support.microsoft.com/kb/319723/
)
SQL Server で Kerberos 認証を使用する方法
316989 ヒント : マップされたドライブを使用してリモート リソースに接続しないでください。これは、ドライブのマッピングが net use コマンドの拡張であり、ユーザー単位で作成されるためです。リモート コンピュータ上に存在する Web サーバーのコンテンツにアクセスする場合は、UNC 共有を使用することをお勧めします。
詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
(http://support.microsoft.com/kb/316989/
)
ASP.NET から SQL Server への信頼されたデータ接続を作成するとエラー メッセージ "ユーザー 'AccountName' はログインできませんでした" が表示される
257174
(http://support.microsoft.com/kb/257174/
)
マップされたドライブを IIS で使用する方法
コード アクセス セキュリティ (CAS) 関連の問題ASP.NET のエラー メッセージは詳細に記述されており、ほとんどの場合、問題が何であるかを正確に示しています。場合によっては、FileMon または RegMon を使用しても有用な情報が得られないことがあります。そうした場合について考察します。状況ASP.NET アプリケーションを参照しようとするとエラーが発生し、次のような汎用的なエラー メッセージが表示されます。元に戻す ![]()
種類 : エラー
ソース : ASP.NET 1.1.4322.0 分類 : なし イベント ID : 1088 日付 : 2006/10/11 時刻 : 22:54:04 ユーザー : N/A コンピュータ : ComputerName 説明 : App-Domain が作成されなかったため、要求を実行できませんでした。エラー: 0x8013150a http://msdn2.microsoft.com/ja-jp/library/wyts434y(VS.80).aspx
この問題を解決するには、「ASP.NET アプリケーションがアクセスするローカル リソースに対するアクセス許可が不足しているために問題が発生する」に記載されているヒントを実行します。ただし、管理者アカウントまたは SYSTEM アカウントを使用しても、アプリケーションが動作しないことがあります。その場合、問題がコード アクセス セキュリティが原因で発生しているかどうかを確認する必要があります。これは、Caspol.exe を使用してコード アクセス セキュリティを無効にすることで簡単に確認できます。
(http://msdn2.microsoft.com/ja-jp/library/wyts434y(VS.80).aspx)
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322>caspol -s off caspol ?s off を実行したら、IIS をリセットし、アプリケーションを参照してみます。これにより問題が解決する場合は、コード グループのアクセス許可セットをチェックする必要があります。コード グループにアクセスするには、[管理ツール] の [Microsoft .NET Framework VersionNumber 構成] ツールを使用します。
Microsoft(R) .NET Framework CasPol 1.1.4322.573 Copyright (C) Microsoft Corporation 1998-2002. All rights reserved. 正常に完了 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322> この場合、[My_Computer_Zone] コード グループのアクセス許可セットが [Nothing] に設定されています。問題を解決するには、これを [Full Trust] に変更します。 注 : [My_Computer_Zone] コード グループにアクセスするには、次の手順を実行します。
詳細については、「ASP.NET コード アクセス セキュリティ」 (http://msdn2.microsoft.com/ja-jp/library/87x8e4d1(VS.80).aspx
(http://msdn2.microsoft.com/ja-jp/library/87x8e4d1(VS.80).aspx)
) を参照してください。
"Server Application Unavailable" (サーバー アプリケーションは使用できません) エラー メッセージは、さまざまな原因で表示されます。問題の原因に関する詳細な情報を得るには、イベント ログが最適です。 IIS 関連のエラーIIS 認証に関連するエラーの場合は、IIS ログが非常に役立ちます。一般的には、次のメッセージが表示されます。元に戻す ![]()
2006-10-12 22:47:28 W3SVC1 65.52.18.230 GET /MyAPP/login.aspx - 80 MyDomain\UserID_91 65.52.22.58 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+InfoPath.1) 401 3 5
これは、ファイルまたはフォルダに対して NTFS アクセス許可が不足していることを示しています。このエラーは、アクセスしようとしているファイルに対するアクセス許可が適切である場合でも、別の SYSTEM フォルダおよび IIS フォルダに対するデフォルトのアクセス許可およびユーザー権利が不足している場合に発生することがあります。たとえば、IUSR_ComputerName アカウントに C:\Winnt\System32\Inetsrv ディレクトリに対するアクセス許可が付与されていない場合に、このエラーが表示されることがあります。 IIS 状態コードの詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。 318380
(http://support.microsoft.com/kb/318380/
)
IIS 状態コード
812614
(http://support.microsoft.com/kb/812614/
)
[INFO] IIS 6.0 でのデフォルトのアクセス許可とユーザー権利
271071 ヒント : [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。logfiles と入力して、IIS ログを含むフォルダを開きます。別の方法として、IIS の [Web サイトのプロパティ] ページで [Web サイト] タブをクリックします。[アクティブ ログ形式] の下の [プロパティ] をクリックして、ログ ファイルのディレクトリと名前を確認します。
(http://support.microsoft.com/kb/271071/
)
IIS 5.0 Web サーバーに必要な NTFS アクセス許可とユーザー権利の設定方法
注目すべき別の項目として、状態コード 5 があります。net helpmsg コマンドを使用すると、この状態コードの詳細な情報を得ることができます。
C:\Documents and Settings\User>net helpmsg 5 アクセスが拒否されました。
C:\Documents and Settings\User>net helpmsg 50
HTTP エラー メッセージの簡易表示を無効にする方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
この要求はサポートされていません。 294807
記録されている情報をすべて使用して、発生している問題の詳細を最大限に得ることが大切です。
(http://support.microsoft.com/kb/294807/
)
[HOWTO] Internet Explorer 5.x および 6.x の "HTTP エラー メッセージの簡易表示" 機能をサーバー側で無効にする方法
リソース詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。306590
(http://support.microsoft.com/kb/306590/
)
ASP.NET のセキュリティの概要
317012
(http://support.microsoft.com/kb/317012/
)
ASP.NET のプロセス ID と要求 ID
How To: ASP.NET 2.0 アプリケーション用のサービス アカウントを作成する方法
これらの簡単な方法を、セキュリティやアクセス許可に関連する問題を解決する際に役立ててください。Support Voice コラム をご活用ください。今後このコラムや「サポート技術情報」 (Microsoft Knowledge Base) で取り上げてほしいテーマについてのご意見をお待ちしています。Ask For Ithttp://www.microsoft.com/japan/msdn/enterprise/pag/securityguidance/paght000009.aspx
(http://www.microsoft.com/japan/msdn/enterprise/pag/securityguidance/paght000009.aspx)
ASP.NET 識別子マトリクス http://msdn2.microsoft.com/en-us/library/aa302377.aspx
(http://msdn2.microsoft.com/en-us/library/aa302377.aspx)
以前の ASP.NET Support Voice コラム http://support.microsoft.com/aspnetpsvc
(http://support.microsoft.com/aspnetpsvc)
(http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=)
フォームを使用して、ご意見やご感想をお寄せください。
プロパティ文書番号: 910449 - 最終更新日: 2007年11月20日 - リビジョン: 1.3
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。" | サポート技術情報の翻訳 |













