IIS からネットワーク ファイルへのアクセス方法

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

目次

概要

ISAPI (Internet Server API) 拡張、ASP (Active Server Pages) ページ、または CGI (Common Gateway Interface) アプリケーションから Internet Information Server (IIS) サーバー以外のコンピュータにあるファイルにアクセスするときに問題が発生する場合があります。この資料では、これに関連する問題と、考えられる対処法について説明します。

この資料では、主にネットワーク共有のファイルにアクセスする状況を想定していますが、名前付きパイプの接続にも同じ概念を適用できます。名前付きパイプは、SQL Server 接続のほか、リモート プロシージャ コール (RPC) や COM (Component Object Model) の通信によく使用されます。特に、Windows NT 統合セキュリティを使用するように構成されたネットワークを経由して SQL Server に接続する場合、この資料に記載されている問題が原因で、接続できないことがあります。RPC と COM は、別の通信方式を用いていても同じようなネットワーク認証スキームを採用していることがあるため、この資料で説明している概念は、IIS アプリケーションから使用されているネットワーク通信方式に幅広く適用できます。


認証と偽装の種類

IIS は HTTP 要求に応答するとき偽装を行うため、要求を処理するためのリソースへのアクセスは適切に制限されます。偽装されるセキュリティ コンテキストは、要求に対して行われる認証に基づいています。次に、IIS 4.0 から使用可能な 5 種類の認証を示します。
認証の種類                          偽装の種類
  
匿名アクセス (認証なし)            ネットワーク
自動パスワード同期は
ON (ON がデフォルト)
 
匿名アクセス (認証なし)            IIS クリア テキスト
自動パスワード同期は OFF         

基本認証                            IIS クリア テキスト

NT チャレンジ/レスポンス認証         ネットワーク

クライアント SSL 証明書のマッピング  対話型
				

トークンの種類

ネットワーク リソースへのアクセスが許可されるかどうかは、要求が処理される偽装トークンの種類によって決定されます。
  • ネットワーク トークンには、ネットワーク リソースへのアクセスが許可されていません (ネットワーク トークンと呼ばれるのは、従来、ネットワーク経由でユーザーを認証するときにサーバーによってこの種類のトークンが作成されるためです。"委任" では、ネットワーク トークンを使用してネットワーク クライアントとして他のサーバーにアクセスすることをサーバーに許可します。これは、セキュリティ ホールになり得ると考えられています)。
  • 対話型トークンは、従来、コンピュータのローカル ユーザーを認証するときに使用されます。対話型トークンは、ネットワーク経由でリソースにアクセスすることができます。
  • バッチ トークンは、バッチ ジョブを実行するセキュリティ コンテキストを提供するように設計されており、ネットワーク アクセスが可能です。
IIS には、クリア テキスト ログオンという概念があります。IIS がユーザー名とパスワードの両方にクリア テキストでアクセスできるため、このような名前が付けられています。メタベースの LogonMethod プロパティを設定することにより、クリア テキスト ログオンによってネットワーク トークン、対話型トークン、バッチ トークンのどの種類のトークンを作成するかを制御できます。クリア テキスト ログオンでは、デフォルトで対話型トークンが取得され、ネットワーク リソースへのアクセス権を持ちます。LogonMethod はサーバー、サイト、仮想ディレクトリ、ディレクトリ、またはファイルの各レベルで設定することができます。

匿名アクセスでは、要求に対して、匿名ユーザーとして構成されたアカウントを偽装します。デフォルトで、IIS には IUSR_<machinename> と呼ばれる匿名ユーザー アカウントが 1 つだけあります。このアカウントは、認証されていない要求を処理するときに偽装されます。また、IIS 4.0 には、デフォルトでセキュリティ副機関を使用してトークンを作成する、"自動的なパスワード同期を有効にする" という構成可能な機能があります。この方法で作成されたトークンはネットワーク トークンであり、ネットワーク上の他のコンピュータへのアクセス権はありません。自動パスワード同期を無効にすると、IIS では前述のクリア テキスト ログオンと同じ方法でトークンが作成されます。自動パスワード同期は、IIS と同じコンピュータにあるアカウントに対してのみ使用できます。このため、匿名アカウントをドメイン アカウントに変更した場合、自動パスワード同期は使用できなくなり、クリア テキスト ログオンが実行されます。ただし、IIS がプライマリ ドメイン コントローラにインストールされている場合は例外です。この場合、ドメイン アカウントはローカル コンピュータ上にあります。匿名アカウントと自動パスワード同期オプションは、サーバー、サイト、仮想ディレクトリ、ディレクトリ、またはファイルの各レベルで構成することができます。

ネットワーク上のリソースにアクセスするには、まず適切な種類のトークンを使用する必要があります。また、ネットワーク経由でリソースにアクセスできるアカウントを偽装する必要もあります。匿名の要求に対して IIS が作成する IUSR_<machinename> アカウントは、デフォルトではローカル コンピュータにのみ存在します。自動パスワード同期を無効にしてネットワーク リソースにアクセス可能な対話型トークンを取得したとしても、通常、IUSR_<machinename> アカウントはネットワーク リソースのほとんどにアクセスできません。これは、IUSR_<machinename> アカウントが他のコンピュータで認識されないためです。匿名の要求でネットワーク リソースにアクセスする場合は、デフォルトのアカウントを、ネットワーク上のドメインに含まれる、すべてのコンピュータが認識可能なアカウントに置き換える必要があります。IIS をドメイン コントローラにインストールしている場合は、IUSR_<machinename> アカウントがドメイン アカウントであるため、特に操作を行わなくても、ネットワーク上の他のコンピュータに認識されます。


問題の回避

以下に示すのは、IIS アプリケーションからネットワーク リソースにアクセスするときに問題を回避する方法です。
  • ファイルをローカル コンピュータに保存します。
  • Windows ソケットなど、ネットワークにおける一部の通信方法では、セキュリティ チェックを必要としません。
  • 次の場所に仮想ディレクトリを構成することで、コンピュータのネットワーク リソースへの直接アクセスが可能となります。
    他のコンピュータ上にある共有
    ネットワーク リソースを共有しているコンピュータへのすべてのアクセスは、仮想ディレクトリ用に構成されている認証の種類に関係なく、[名前を指定して接続] ダイアログ ボックスで指定されたユーザーのコンテキストで実行されます。この方法を使用すると、IIS コンピュータにアクセスしているブラウザから、ネットワーク共有上のすべてのファイルが使用できるようになります。
  • 自動パスワード同期を無効にして基本認証または匿名認証を使用します。

    Internet Information Server が基本認証に対して実行する偽装により、デフォルトでネットワーク リソースにアクセス可能なトークンが提供されます (ネットワーク リソースにアクセスできないトークンが提供される Windows NT チャレンジ/レスポンス認証とは異なります)。匿名認証では、自動パスワード同期が無効になっている場合にのみ、トークンがネットワーク リソースにアクセスできます。デフォルトでは、Internet Information Server のインストール時に自動パスワード同期は有効になっています。このようなデフォルトの構成では、匿名ユーザーのトークンがネットワーク リソースにアクセスすることはできません。 IIS の自動パスワード同期の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    190005 [IIS] 匿名アクセスのサイト セットアップがユーザーにパスワードを要求する
    259353 [IIS] パスワードの同期を設定すると手動でパスワードを入力しなければならない
  • 匿名アカウントをドメイン アカウントとして構成します。

    この場合、匿名の要求は、状況によってはネットワーク経由でリソースにアクセスできます。すべての匿名要求にネットワークへのアクセス権を与えないために、匿名でアクセスする必要がある仮想ディレクトリでのみ匿名アカウントをドメイン アカウントにします。
  • ネットワーク リソースを共有しているコンピュータで同じユーザー名とパスワードを使用して匿名アカウントを構成し、自動パスワード同期を無効にします。

    この場合、パスワードが完全に一致している必要があります。この方法は、匿名アカウントをドメイン アカウントとして構成する方法が何らかの理由により使用できないときにのみ使用してください。
  • 要求がネットワーク トークンで処理されている場合、NullSessionShares と NullSessionPipes を使用して、特定のネットワーク共有または名前付きパイプへのアクセスを許可することができます。

    ネットワーク トークンがある状態でネットワーク リソースへの接続を確立する場合、オペレーティング システムは認証されていない接続 (NULL セッション) として接続を確立しようとします。このレジストリ設定は、IIS コンピュータではなく、ネットワーク リソースを共有しているコンピュータ上で行う必要があります。ネットワーク トークン以外で NullSessionShare または NullSessionPipe にアクセスすると、通常の Microsoft Windows 認証が使用されます。リソースへのアクセスは、偽装したユーザー アカウントの権限に基づいて行われます。
  • 場合によっては、ネットワークにアクセスできるスレッド トークンを作成するために、独自の偽装を行うこともできます。

    LogonUser 関数と ImpersonateLoggedOnUser 関数を使用すると、別のアカウントを偽装することができます。この方法には、コードで使用できる、クリア テキストで構成された別アカウントのユーザー名とパスワードが必要です。LogonUser の場合、LogonUser を呼び出すアカウントに、ユーザー マネージャの "オペレーティング システムの一部として機能" のユーザー権利も必要です。HTTP 要求を処理するときに IIS が偽装するユーザーのほとんどには、デフォルトでこのユーザー権利がありませんが、インプロセス アプリケーションには、現在のセキュリティ コンテキストを LocalSystem アカウントに変更する方法がいくつかあります (LocalSystem アカウントには "オペレーティング システムの一部として機能" のユーザー権利があります)。インプロセスで実行中の ISAPI DLL の場合、IIS が作成したセキュリティ コンテキストを LocalSystem アカウントに変更する最も簡単な方法は、RevertToSelf 関数を呼び出すことです。アウト プロセスで IIS アプリケーションを実行している場合、この方法はデフォルトでは機能しません。これは、プロセスが LocalSystem アカウントではなく、IWAM_<machinename> アカウントで実行されているためです。IWAM_<machinename> には、デフォルトでは "オペレーティング システムの一部として機能" のユーザー権利はありません。
  • ASP ページから呼び出されるすべてのコンポーネントを Microsoft Transaction Server (MTS) サーバー パッケージまたは COM+ サーバー アプリケーションに追加し、特定のユーザーをパッケージの ID として指定します。

    : コンポーネントは、IIS 外部の独立した .exe ファイル内で実行されます。
  • 基本 (クリア テキスト) 認証の場合、ネットワーク トレースから資格情報をきわめて容易に取得できるため、データを SSL で暗号化することを推奨します。 SSL のインストール方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    228991 Internet Information Server 4.0 で SSL 証明書を作成およびインストールする方法
: LogonMethod メタベース プロパティが 2 に設定されている場合 (偽装トークンの作成にネットワーク ログオンが使用されることを示します)、パスワード同期が無効になっていて、基本認証 (クリア テキスト ログオン) を使用して要求が認証されている状況では、匿名の要求のネットワーク アクセスができなくなる可能性があります。このように設定された状態で、要求がネットワーク トークンの制限を受けないようにする唯一の方法は、NullSessionShares または NullSessionPipes に接続することです。

ネットワーク共有に割り当てられたドライブ文字を使用しないようにしてください。指定可能なドライブ文字が 26 文字に限られているうえ、異なるセキュリティ コンテキストで割り当てられたドライブ文字を使用すると問題が発生することがあります。このような方法ではなく、必ず汎用名前付け規則 (UNC) 名を使用してリソースにアクセスするようにしてください。以下に、指定形式の例を示します。
\\MyServer\filesharename\directoryname\filename
UNC の使用の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
280383 UNC 共有とユーザー名およびパスワード資格情報を使用するときの IIS セキュリティ推奨事項
この資料に記載されている情報は、Internet Information Server 4.0 にのみ適用されます。Windows 2000 に含まれるインターネット インフォメーション サービス 5.0 では大幅な変更が加えられており、新しい認証の種類と機能が使用されます。この資料に記載された概念のほとんどは IIS 5.0 に適用できますが、この資料の特定の認証スキームで生成される偽装トークンの種類についての詳細は、厳密には IIS 4.0 にのみ該当します。

319067 システム アカウント以外のコンテキストでアプリケーションを実行する方法
IIS サーバーで要求を処理するために行われているログオンの種類を特定できない場合は、ログオンとログオフの監査を有効にすることができます。

IIS 5.0 では以下の手順を実行します。
  1. [スタート] ボタンをクリックし、[設定] をポイントし、[コントロール パネル] をクリックします。[管理ツール] をダブルクリックし、[ローカル セキュリティ ポリシー] をクリックします。
  2. ローカル セキュリティ設定の [ツリー] ウィンドウで [セキュリティの設定]、[ローカル ポリシー] の順に展開し、[監査ポリシー] をクリックします。
  3. 右側のウィンドウで [ログオン イベントの監査] をダブルクリックし、[成功] チェック ボックスと [失敗] チェック ボックスの両方をオンにし、[OK] をクリックします。 これにより、セキュリティ ログに監査のイベントが追加されるようになります。ログオンの種類は、イベントの説明の "ログオンの種類" で特定することができます。
2 = 対話型
3 = ネットワーク
4 = バッチ
5 = サービス

関連情報

ネットワーク セキュリティの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
124184 システム アカウントで実行されているサービスがネットワークにアクセスできない
180362 [INFO] サービスとリダイレクトされるドライブ
158229 [INFO] IIS アプリケーションのセキュリティの影響
319067 システム アカウント以外のコンテキストでアプリケーションを実行する方法
280383 UNC 共有とユーザー名およびパスワード資格情報を使用するときの IIS セキュリティ推奨事項
IIS の自動パスワード同期の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
190005 [IIS] 匿名アクセスのサイト セットアップがユーザーにパスワードを要求する
259353 [IIS] パスワードの同期を設定すると手動でパスワードを入力しなければならない

プロパティ

文書番号: 207671 - 最終更新日: 2005年12月19日 - リビジョン: 5.0
この資料は以下の製品について記述したものです。
  • Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Server Application Programming Interface 4.0
  • Microsoft Internet Information Services 5.0
キーワード:?
kbhowtomaster kbhttp KB207671
"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