2009-12-19 63 views
192

我正在運行IIS 7網站,其AppPool爲集成管道模式。 AppPools不會在NetworkService等下運行,但是使用它自己的AppPool Identitiy(IIS AppPool \ MyAppPool)。將IIS 7 AppPool身份添加爲SQL Server登錄

這是一個所謂的服務帳戶或虛擬帳戶。我想給這個服務帳戶(IIS AppPool \ MyAppPool)的權限連接到我的SQL Server 2008 Express(運行在混合身份驗證中)。我想給這個服務帳戶(IIS AppPool \ MyAppPool)權限連接到我的SQL Server 2008 Express(運行在混合身份驗證。模式)。

儘管SQL Server可以添加任何普通用戶帳戶,但IIS AppPool \ MyAppPool虛擬帳戶無法添加到有效登錄(SQL Server說,無法找到該帳戶)。

是否有任何技巧,我需要啓用什麼才能使虛擬帳戶的工作? (根據taskmgr,w3wp.exe進程在此標識下運行,但我無法在NTFS安全中使用該帳戶...)

感謝您的幫助!

回答

317

「IIS APPPOOL \ AppPoolName」將正常工作,但如前所述,它看起來不是有效的AD名稱,因此當您在「選擇用戶或組」對話框中搜索它時,它不會顯示出來(實際上,它會找到它,但它會認爲它是一個實際的系統帳戶,並且會嘗試將它視爲這樣......這將無法正常工作,並且會向您提供有關未找到的錯誤消息)。

我是如何得到這工作是:

  1. 在SQL Server Management Studio中,查找安全文件夾(文件夾的安全性在同級別的數據庫,服務器對象等。文件夾...不是每個單獨的數據庫中的安全文件夾)
  2. 右鍵單擊登錄,然後選擇「新建登錄」
  3. 在登錄名稱字段中,鍵入IIS APPPOOL \ YourAppPoolName - 不要點擊搜索
  4. 填充任何你喜歡的其他值(即身份驗證類型,默認數據庫等)
  5. 單擊確定

只要程序池的名稱確實存在,登錄現在應該創建。

+3

對不起復活舊的文章,但沒有人知道,如果這樣做有在現場環境中的任何安全隱患? – dooburt 2011-03-10 00:10:58

+26

令人驚訝的幫助,但令人興奮地(和狡猾)Microsoftian。 – 2011-04-21 06:18:32

+12

哇。 「不要點擊搜索」在步驟3似乎有所作爲(?) – Jedidja 2011-05-24 19:35:50

5

如果你要穿過機器,你需要使用網絡服務,本地系統,域帳戶或SQL 2008 R2(如果有的話)管理服務帳戶(如果您有這樣的基礎設施)。您不能使用Active Directory域不可見的帳戶。

6

作爲使用虛擬賬戶一個側面說明流程(NT服務\爲MyService和IIS應用程序池\ MyAppPool)都仍然是「網絡服務」帳戶下運行,因爲這暗示後http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/29/15759.aspx。唯一的區別是這些進程是「NT Service \ MyService」或「IIS AppPool \ MyAppPool」組的成員(因爲這些實際上是組和而不是用戶)。這也是網絡服務帳戶所使用的網絡身份驗證方式與網絡身份驗證方式相同的原因。

安全訪問的方式不取決於此帳戶沒有NETWORK SERVICE權限,而是專門爲「NT Service \ MyService」或「IIS AppPool \ MyAppPool」授予更多權限並刪除「Users」的權限if必要。

如果有人有更準確或矛盾的信息,請發佈。

50
CREATE LOGIN [IIS APPPOOL\MyAppPool] FROM WINDOWS; 
CREATE USER MyAppPoolUser FOR LOGIN [IIS APPPOOL\MyAppPool]; 
+1

不錯 - 雖然接受的答案是正確的 - 我設法讓自己處於Management Studio不工作的狀態,所以這個原始TSQL解決方案就是我所需要的。 – 2013-05-14 01:07:57

+4

請注意像我這樣的noobs:確保對希望使用IIS應用程序池訪問的數據庫執行此查詢,第二個語句在數據庫級別。您可能需要讓用戶成爲某些數據庫角色的成員,並授予他對模式(如「dbo」)的權限。 – MarioDS 2014-11-04 11:42:30

0

我想通了,通過試錯......在裝甲真正的縫隙是在Configuration Editor的網站在IIS中一個鮮爲人知的設置在

Section: system.webServer/security/authentication/windowsAuthentication

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

調用useAppPoolCredentials(默認設置爲False,設置爲True,生活變得很棒!!!希望這可以爲nex牛逼的人....

enter image description here

+0

我遵循相同的過程,但問題沒有解決。你也必須做其他事情,你能分享一下嗎? – RSB 2015-04-23 11:56:22

+0

@RSB - 您是否遵循所有其他步驟?你是否設置了appPools,並授予他們對網站所在文件的權限?您是否將服務器名稱添加爲具有SQL Server權限的登錄名?你是否將appPool應用到你的SQL Server的權限?您是否修改IIS以使用WindowsAuthentication?你得到什麼錯誤?它在你的開發環境而不是生產環境中工作嗎? – 2015-04-23 17:12:32

+0

我設置了appPool,但是如何讓他們有權訪問網站所在的文件?如何將服務器名稱添加爲具有SQL服務器權限的登錄名?我還將appPool添加到具有權限的SQL Server。如何修改IIS以使用WindowsAuthentocation.It在我的開發環境中工作,當IIS和SQL Server在同一臺機器上,但它給出錯誤 - System.ComponentModel.Win32Exception:當IIS和Sql服務器在不同的計算機上時出現訪問被拒絕錯誤。請建議。 – RSB 2015-04-24 10:50:58