web-dev-qa-db-ja.com

IISと負荷分散アプリのSQLServer間の認証

この接続文字列を使用しようとしていますが、これを設定する方法がわかりません。

Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;

以前は、SQLNCLI10接続文字列はUidとPwdを使用していました。サーバーを移動し、Active Directoryをセットアップして、IISとMSSQLの間のセキュリティを構成する方法についてのヘルプを探しています。

IIS 7.5では、Webサイトの基本設定でユーザーアカウントを指定するか、パススルー認証を使用するオプションがあります。パススルーが設定されている場合は、アカウントを使用すると思います。アプリケーションプール用に設定しますか?

デフォルトでは、アプリプールはApplicationPoolIdentityとして実行されています。 このアプリプール内のWebサイトのみがこのデータベースにアクセスできる必要があります。また、共有構成を使用する複数のWebサーバーがあり、それぞれが同じデータベースサーバー(またはMSSQLデータベースミラーリングを使用してミラーリングされているサーバー)に接続しています。

現在、スクリプトを実行すると、これはエラーメッセージです(MSSQLは同じドメイン内の別のサーバー上にあります):Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'

アプリプールを作成する必要があるIDと、MSSQLでこのアカウントを設定する方法

すべてが理にかなっていることを願っています。

よくわかりませんが、このページは関連性があると感じています: http://learn.iis.net/page.aspx/624/application-pool-identities/

3
Marcus

解決策は、アクセス権が制限された新しいドメインユーザーを作成することでした。この新しいユーザーをMSSQLへのログインとして、必要なアクセス許可(読み取りと書き込みのみなど)のみの特定のデータベースにのみ追加します。

次に、この新しいドメインユーザーで接続するようにIIS Webサイトを構成します。これをアプリケーションプールIDとして設定することは機能すると思いますが、機能しません。機能させるには、次のことも行う必要があります。 ADで委任権限を持つコンピューターを割り当てます(任意のサービスへの委任についてこのユーザーを信頼します(Kerberosのみ))。

代わりに、Webサイトの基本設定を開き、Connect As...オプションをクリックして、ここにログインの詳細を入力することができます。

この方法では、接続文字列にユーザー名やパスワードを指定する必要はまったくありません。すべてIISで管理されます。

0
Marcus

WindowsまたはSQLアカウントのいずれかで、使用するsqlのアカウントを作成し、接続文字列で指定します。セキュリティ上の理由から、次のコマンドを使用してこれを行った後、web.configも暗号化する必要があります。

%SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -prov "RsaProtectedConfigurationProvider" -pef connectionStrings "[PathToWeb.Config]"  

そのアカウントには、db_DataReaderやdb_DataWriterなどのデータベースに対する必要な権限が必要です。

2
Greg Askew