ASP.NET からリモート アクセス データベースに接続するためのアクセス許可

この記事では、リモート アクセス データベースに接続するためのアクセス許可について説明します。

元の製品バージョン: ASP.NET
元の KB 番号: 307901

概要

この記事では、ASP.NET から リモート の Microsoft Access データベースに接続するために必要な最小限のセキュリティ設定を示します。次に示します。

  • Windows NT ファイル システム (NTFS) 設定
  • Microsoft インターネット インフォメーション サービス (IIS) 設定
  • ローカル セキュリティ ポリシーの設定
  • ASP.NET 構成ファイル (Web.config) 設定

この記事には、データベース接続を構成する方法は含まれていません。

詳細

ユーザーが ASP.NET Web サイトを参照すると、サーバー上で何らかのコードを実行するように要求されます。 すべてのプロセスは、特定のアカウントのセキュリティ コンテキスト内で実行されます。 既定では、IIS はシステム アカウントを使用します。 システム アカウントには IIS サーバー コンピューターへのフル アクセス権がありますが、他のコンピューター (NTFS リソースとも呼ばれる) 上の共有フォルダーへのアクセスは許可されていません。 そのため、システム アカウント以外のアカウントを使用するように IIS コンピューターを構成する必要があります。 [ IIS サーバーの構成 ] セクションでは、代替アカウントを選択するいくつかの方法について説明します。

IIS を別のアカウントで実行するように設定した後、リモート アクセス データベースを使用するために必要なすべてのファイルとフォルダーに対して、次のようなアクセス許可をアカウントに付与する必要があります。

  • IIS サーバー上の一時フォルダー。
  • リモート コンピューターで共有します。
  • データベース ファイルとそのフォルダーに対する NTFS ファイル システムのアクセス許可。
  • ネットワークからリモート コンピューターにアクセスします。
  • リモート コンピューターにログオンするためのアクセス許可。

[ アクセス サーバーの構成] セクションでは、アカウントに対してこれらのアクセス許可を設定する方法について説明します。

IIS サーバーを構成する

このセクションでは、IIS サーバーを構成する方法について説明します。

Web.config ファイルを使用して偽装を有効にする

リモート アクセス データベースに接続するには、ASP.NET リモート サーバーに偽装するユーザーのセキュリティ トークンを渡す必要があります。 Web.config ファイルで偽装を有効にしない場合、ASP.NET は既定でシステム アカウントを使用します。 ただし、システム アカウントはネットワーク経由で認証できません。 別のアカウントを使用するには、特定の ASP.NET アプリケーションの Web.config ファイルにタグを追加<identity impersonate="true" />します。 例:

<configuration>
  <system.web>
     ...
     <identity impersonate="true" />
     ...
  </system.web>
</configuration>

この構成では、ASP.NET IIS から認証されたユーザーを偽装します。

認証方法を使用して ID を選択する

ID を選択するには、次のいずれかの認証方法を使用します。

  • 匿名認証
    Internet Services Manager で使用するアカウントを構成できます。 既定では、これはインターネット ゲスト アカウントまたは IUSR_ComputerName に設定されます。 どちらのアカウントを使用する場合でも、(ドメイン アカウントではなく) ローカル アカウントを使用する場合は、「 IIS コンピューターのローカル ユーザー アカウントをレプリケート する」セクションの手順に従う必要があります。

  • [ 基本認証]
    この認証方法では、エンド ユーザーが、IIS コンピューターまたは IIS コンピューターが信頼するドメインで定義されているユーザー名とパスワードを入力する必要があります。 これにより複数のユーザー ID が許可されるため、これらの ID をすべてグループに追加する必要があります。 この記事では、権限を借用したユーザーにアクセス許可を付与することを示す場合は、代わりにこれらのアクセス許可をこのグループに付与します。

これらのアカウントのいずれかが IIS コンピューターのローカル アカウントである場合は、リモート アクセス コンピューター上の各ローカル アカウントをレプリケートする必要があります。 これを行うには、「 IIS コンピューターのローカル ユーザー アカウントをレプリケートする 」セクションの手順に従います。

  • 統合 Windows 認証
    この認証方法は、ネットワークが認証を使用 Kerberos するように設定されている場合、およびコンピューターとアカウントが委任に対して信頼済みとして設定されている場合にのみ機能します。 そうしないと、統合Windows 認証を使用してリモート NTFS リソース上のデータにアクセスすることはできません。 これは、統合Windows 認証では IIS サーバーへのアクセスのみが許可され、IIS サーバーがリモートでアクセスする追加の NTFS リソースは許可されないためです。

  • Web.config 設定
    Web.config ファイルを使用して、リモート コンピューターで必要なアクセス許可を持つ特定のドメイン アカウントを偽装するように ASP.NET を構成します。 既定では、IIS は、Web サイトを表示する他のユーザーが Web.config ファイルの内容を表示できないように設定されています。 ただし、この方法では、ユーザー名とパスワードをクリア テキストでサーバーに格納する必要があります。

<configuration>
  <system.web>
     ...
     <identity impersonate="true" userName="<supplied username>" password="<supplied password>" />
     ...
  </system.web>
</configuration>
  • 認証をオーバーライドする 上記の手順では、タグと認証方法を <identity impersonate="true" /> 使用して、ASP コードがシステム アカウントではなくユーザー アカウントとして実行されるようにします。 偽装や認証の設定に関係なく、ユーザー アカウントとして実行する方法は他にはあまり一般的ではありません。 次の一覧では、これらの代替メソッドの 2 つの概要を示しますが、これらのメソッドの詳細については、この記事の範囲外です。

    • 個別のプロセス すべてのデータ アクセス関数を ActiveX ダイナミック リンク ライブラリ (DLL) に配置し、その DLL をコンポーネント サービスに配置できます。 その後、コンポーネントが独自のプロセス (サーバー ライブラリ) として実行されるように、そのコンポーネントのコンポーネント サービス設定を構成する必要があります。 コンポーネント サービスの [ID] タブで、使用するユーザー アカウントを指定します。

    • 偽装アプリケーション プログラミング インターフェイス アプリケーション プログラミング インターフェイス (API) を使用して、現在使用されているユーザー アカウントから他のアカウントに切り替える ActiveX DLL を作成できます。 その後、この他のユーザーとして実行するときに Access データベースを使用できます。

一時フォルダーへのアクセスを構成する

Microsoft Jet データベース エンジンは、ローカル コンピューター (この場合は IIS サーバー) の Temp フォルダーに一時ファイルを書き込みます。 この Temp フォルダーの適切なアクセス許可を設定する必要があります。

  • NTFS アクセス許可 この設定では、ユーザー ID (前の偽装手順によって決定されます) に、Temp フォルダーに対する NTFS フル コントロールアクセス許可が必要です。

  • TEMP 環境変数と TMP 環境変数 システムの TEMP 環境変数と TMP 環境変数を定義する必要がある場合があります。 IIS サーバーで TEMP 変数と TMP 変数が構成されていない場合、Jet エンジンはこれらのファイルをフォルダーに Windows\System32 書き込もうとします。 これはほとんどの Web サイトでは許容されない可能性があるため、TEMP 変数と TMP 変数を構成するのが一般的です。

これらの変数は、多くの場合、コンピューター上の対話型ユーザー用に既に構成されています。 ただし、IIS から開始するプロセスはこれらの変数にアクセスできないため、システムの TEMP 変数と TMP 変数を構成する必要がある場合があります。 システムの TEMP 変数と TMP 変数を構成するには、Microsoft Windows 2000 の次の手順に従います。

  1. IIS コンピューターで、[ マイ コンピューター] を右クリックし、[ プロパティ] をクリックします。

  2. [ 詳細設定 ] タブで、[ 環境変数] をクリックします。

  3. [ システム変数] で、TEMP 変数を検索します。 この変数が存在しない場合は、次の手順に従って追加します。

    1. [ 環境変数 ] ダイアログ ボックスで、[ 新規] をクリックします。
    2. [ 新しいシステム変数 ] ダイアログ ボックスの [ 変数名 ] テキスト ボックスに「 TEMP」と入力します。
    3. [ 変数の値 ] テキスト ボックスに、コンピューター上の Temp フォルダーの場所を入力し、[OK] をクリック します
  4. TMP 変数に対して手順 3a から 3c を繰り返します。

アクセス サーバーを構成する

このセクションでは、Microsoft Access サーバーを構成する方法について説明します。

NTFS アクセス許可を構成する

ただし、ASP.NET 内でアカウントを偽装することを選択した場合、リモート コンピューター上のファイル システムが NTFS の場合は、リモート コンピューターのアクセス許可を正しく設定する必要があります。 たとえば、データベース ファイルに対して次のアクセス許可を設定する必要があります。

  • 読み取り
  • 書き込み
  • 実行
  • 変更

さらに、ファイルが存在するフォルダーに対して次のアクセス許可を設定する必要があります。

  • 読み取り
  • 書き込み
  • 実行
  • 削除
  • 変更

Basic 認証や Digest 認証など、可能なユーザー アカウントが複数ある場合は、グループを作成し、このグループにユーザー アカウントを追加してから、グループに特権を付与します。

共有アクセス許可の構成

NTFS ファイル システムのアクセス許可と同様に、同じユーザー、ユーザー、またはグループに対するアクセスを許可する共有アクセス許可も設定する必要があります。

Windows がドライブ (C ドライブなど) ごとに作成する管理共有を使用したくなる場合があります。 ただし、管理共有では共有を使用するすべてのユーザーを Administrators グループに追加する必要があるため、新しい共有を作成することをお勧めします。

データベースが Microsoft Windows プラットフォーム以外のプラットフォームに格納されている場合は、移行先プラットフォームに対してこの共有を適切に構成する必要があります。

IIS コンピューターのローカル ユーザー アカウントをレプリケートする

権限を借用したユーザーに共有と NTFS のアクセス許可を付与するには、Access コンピューターがそのユーザー アカウントを認識する必要があります。 アカウントがドメイン アカウントの場合は、両方のコンピューターのアクセス許可リストに追加できます。 1 つ以上のアカウントが IIS コンピューター上のローカル アカウントである場合、Access コンピューターでは認識されません。 この問題を解決するには、同じユーザー名と同じパスワードを使用して、Access コンピューターに重複するローカル アカウントを作成します。

ローカル セキュリティ ポリシーのアクセス許可を構成する

また、アカウントまたはアカウントが既にアクセス許可を持つグループ (Everyone グループなど) に属していない限り、ローカル セキュリティ ポリシーでコンピューターにアクセスするための同じアカウント、アカウント、またはグループのアクセス許可を付与する必要があります。 次のアクセス許可を付与する必要があります。

  • ローカルでログオンする
  • ネットワーク経由でこのコンピュータへアクセス

ローカル セキュリティ ポリシー エディターにアクセスするには、次の手順に従います。

  1. コントロール パネルで、[管理ツール] をダブルクリックし、[ローカル セキュリティ ポリシー] をダブルクリックします。
  2. [ セキュリティ設定] ノード、[ローカル ポリシー] ノード、および [ユーザー権利の割り当て] ノードを展開して、[ ローカルログオン ] アクセス許可と [ネットワークからこのコンピューターにアクセスする ] アクセス許可にアクセスします。