IIS 7 AppPool IDをSQL Serverログオンとして追加する


233

統合パイプラインモードの AppPoolでIIS 7 Webサイトを実行しています。AppPoolsはNetworkServiceなどのIDでは(目的によって)実行されませんが、独自のAppPool Identitiy(IIS AppPool \ MyAppPool)を使用します。

これは、いわゆるサービスアカウントまたは仮想アカウントです。(完全なアカウントではないユーザーアカウント...)

このサービスアカウント(IIS AppPool \ MyAppPool)に、SQL Server 2008 Express(混合認証モードで実行)に接続するためのアクセス許可を付与します。

SQL Serverは通常のユーザーアカウントを追加できますが、IIS AppPool \ MyAppPool仮想アカウントを有効なログオンに追加することはできません(SQL Serverでは、アカウントが見つからないとしています)。

仮想アカウントを機能させるために有効にする必要があるトリックはありますか?(w3wp.exeプロセスはtaskmgrに従ってこのIDで実行されますが、NTFSセキュリティでアカウントを使用することもできません...)

ご協力いただきありがとうございます!

回答:


381

「IIS APPPOOL \ AppPoolName」は機能しますが、前述のように、有効なAD名ではないため、[ユーザーまたはグループの選択]ダイアログボックスで検索しても表示されません(実際には、それは見つかりますが、実際のシステムアカウントと見なされ、そのようなものとして扱われます...これは機能せず、見つからないというエラーメッセージが表示されます)。

それを機能させる方法は次のとおりです。

  1. SQL Server Management Studioで、セキュリティフォルダー(各データベース内のセキュリティフォルダーではなく、データベース、サーバーオブジェクトなどのフォルダーと同じレベルのセキュリティフォルダー)を探します。
  2. ログインを右クリックし、「新しいログイン」を選択します
  3. [ログイン名]フィールドに「IIS APPPOOL \ YourAppPoolName」と入力します -検索をクリックしないでください
  4. 他の好きな値をすべて入力します(つまり、認証タイプ、デフォルトデータベースなど)。
  5. OKをクリックします

AppPool名が実際に存在する限り、ログインを作成する必要があります。


4
古い投稿を復活させて申し訳ありませんが、これを行うことがライブ環境でセキュリティに影響を与えるかどうか誰かが知っていますか?
dooburt

34
驚くほど役立つが、驚異的な(そしてくだらない)Microsoftian。
エヴァンNagle

16
ワオ。ステップ3の「検索を実行しない」は違いをもたらすようです(?)
Jedidja

16
SQLサーバーインスタンスが別のサーバー上にある場合、これは失敗しませんか?たとえばSQL1、ローカル/仮想IIS AppPool\MyAppPoolに関する情報はどのようにしてわかりWEB1ますか?
one.beat.consumer 2012年

3
WebサーバーとSQLサーバーが異なるマシン上にある場合の解決策はありますか?ログインを見つけることはできますが、新しいSQLログインを作成できません。(名前を確認しないと...それでも機能しません)
Dan B

63
CREATE LOGIN [IIS APPPOOL\MyAppPool] FROM WINDOWS;
CREATE USER MyAppPoolUser FOR LOGIN [IIS APPPOOL\MyAppPool];

1
いいですね-受け入れられた答えは正しいですが-Management Studioが機能していない状況にうまく対処できたので、この生のTSQLソリューションが必要でした。
アンドリューパターソン

4
私のような初心者に注意してください。IISアプリプールでアクセスしたいデータベースに対してこのクエリを必ず実行してください。2番目のステートメントはデータベースレベルです。ユーザーを特定のデータベースロールのメンバーにして、などのスキーマに対する権限を付与する必要がある場合がありますdbo
MarioDS 2014年

SSMS GUIを介してIIS APPPOOLログインを追加できないことがわかったら、スクリプトを実行しました。ありがとう!SSMS 18では使用できません。これは今では「機能」だと思います
MC9000

6

複数のマシンを使用する場合は、NETWORK SERVICE、LOCAL SYSTEM、ドメインアカウント、またはSQL 2008 R2(ある場合)を使用する必要があります。管理されたサービスアカウント(そのようなインフラストラクチャがある場合は、これが私の好みです) 。Active Directoryドメインに表示されないアカウントは使用できません。


6

サイドノートとして、仮想アカウント(NT Service \ MyServiceおよびIIS AppPool \ MyAppPool)を使用するプロセスは、この投稿がhttp://www.adopenstatic.com/cs/blogs/ken/で示唆しているように、「NETWORK SERVICE」アカウントでまだ実行されています。 archive / 2008/01/29 / 15759.aspx。唯一の違いは、これらのプロセスが"NT Service \ MyService"または "IIS AppPool \ MyAppPool"グループのメンバーであることです(これらは実際にはグループでありユーザーではないため)。これは、プロセスがネットワークサービスアカウントと同じ方法でマシンとしてネットワークで認証する理由でもあります。

アクセスを保護する方法は、このアカウントにNETWORK SERVICE権限がないことに依存するのではなく、「NT Service \ MyService」または「IIS AppPool \ MyAppPool」に特別なアクセス許可を付与し、必要に応じて「ユーザー」のアクセス許可を削除することです。

誰かがより正確または矛盾する情報を持っている場合は投稿してください。




0

私は試行錯誤によってそれを理解しました...鎧の本当の隙間は、IIS Configuration EditorのWebサイトのほとんど知られていない設定でした

Section: system.webServer/security/authentication/windowsAuthentication

From: ApplicationHost.config <locationpath='ServerName/SiteName' />

と呼ばれますuseAppPoolCredentials(これはFalseデフォルトで設定されています。これをに設定するTrueと、人生は再び素晴らしいものになります!!!これが次の人の痛みを救うことを願っています...

ここに画像の説明を入力してください


同じ手順を踏みましたが、問題は解決しませんでした。あなたも何か他のことをしたに違いありませんが、共有していただけませんか?
RSB 2015

@RSB-他のすべての手順を実行しましたか?appPoolsを設定し、Webサイトが置かれているファイルへのアクセス許可を付与しましたか?SQL Serverへの権限を持つログインとしてサーバー名を追加しましたか?権限付きでSQL ServerにappPoolを適用しましたか?IISを変更してWindowsAuthenticationを使用しましたか?どのようなエラーが発生していますか?本番環境ではなく、開発環境で機能しますか?
Dan B

appPoolをセットアップしましたが、Webサイトが置かれているファイルへのアクセスを許可するには SQLサーバーへのアクセス許可を持つログインとしてサーバー名を追加するにはどうすればよいですか?また、SQL Serverに権限付きでappPoolを追加しました。IISを変更してWindowsAuthentocationを使用する方法.IISとSQLサーバーが同じマシン上にある場合、私の開発環境で動作しますが、IISとSQLサーバーが異なるマシン上にある場合、エラーSystem.ComponentModel.Win32Exception:Access Deniedエラーが発生します。提案してください。
RSB 2015

メールをいただければ、すべての方法を説明したドキュメントをお送りします。mucjが多すぎてここに追加できません...
Dan B

@RSBメールを送信しました。幸運を。
Dan B

0

私の場合、問題は、Visual Studio / Episerver拡張機能を使用してMVC Alloyサンプルプロジェクトをゼロから作成し始めたことで、ローカルのVisual Studio iis Expressを使用して実行すると問題なく動作しました。ただし、デフォルトではSQLデータベースをLocalDBにポイントし、サイトをローカルIISに展開すると、次のようにして解決した初期エラーのいくつかをエラーに出し始めました:1.ローカルサイトのURLバインディングをC:/ Windows / System32 / drivers / etc / hosts 2.次に、application.configを編集して、Visual Studioを使用してサイトを実行し、ローカルIISのURLのバインドを追加したときに、画面の右下にあるIISエクスプレスを右クリックしてファイルの場所を見つけました。3.最後に、「データベースエラーにアクセスできない」という問題に直面しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.