web-dev-qa-db-ja.com

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

AppPoolIntegrated Pipeline Modeで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セキュリティでアカウントを使用することもできません...)

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

214
Max

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

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

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

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

355
dp.
CREATE LOGIN [IIS APPPOOL\MyAppPool] FROM WINDOWS;
CREATE USER MyAppPoolUser FOR LOGIN [IIS APPPOOL\MyAppPool];
56
Ryan Prechel

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

アクセスをセキュリティで保護する方法は、NETWORK SERVICE特権を持たないこのアカウントに依存するのではなく、「NT Service\MyService」または「IIS AppPool\MyAppPool」に特に許可を与え、必要に応じて「Users」の許可を削除することです。

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

6
Steven

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

6
Dave Markle

見てください: http://www.iis.net/learn/manage/configuring-security/application-pool-identities

USE master
GO
sp_grantlogin 'IIS APPPOOL\<AppPoolName>'

USE <yourdb>
GO
sp_grantdbaccess 'IIS APPPOOL\<AppPoolName>', '<AppPoolName>'
sp_addrolemember 'aspnet_Membership_FullAccess', '<AppPoolName>'
sp_addrolemember 'aspnet_Roles_FullAccess', '<AppPoolName>'
3
Ricardo Yanez

これはあなたが探しているものかもしれません...

http://technet.Microsoft.com/en-us/library/cc730708%28WS.10%29.aspx

また、長期的な権限を持つドメインユーザーを検討することをお勧めします。サイロマシンシナリオではうまくいきますが、DBサーバーの別のマシンに移動する場合は変更する必要があります。

2
keithwarren7

私は試行錯誤を通してそれを理解しました...鎧の本当の隙間は、ウェブサイトのConfiguration EditorのIISで少し知られている設定でした

Section: system.webServer/security/authentication/windowsAuthentication

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

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

enter image description here

0
Dan B

私の場合、問題は、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 expressを右クリックしてファイルの場所を見つけましたローカルIISのURLがあります。 3.最後に、SQL Expressで空の新しいDBを作成し、Web configで接続文字列を変更して新しいDBをポイントし、次にパッケージマネージャーコンソール(Visual Studioを使用)で実行する「データベースエラーにアクセスできません」 Episerver DBコマンド-1. initialize-epidatabase 2. update-epidatabase 3. Convert-EPiDatabaseToUtc

0
arokanika