2011-04-20 93 views
228

在安裝了ASP.NET 4.0的Windows Server 2008中,存在一大堆相關的用戶帳戶,我無法理解哪一個是哪一個,它們如何不同以及哪一個是我的應用程序運行的那個。這裏有一個列表:IIS/ASP.NET的所有用戶帳戶是什麼?它們有什麼不同?

  • IIS_IUSRS
  • IUSR
  • 默認應用
  • ASP.NET v4.0的
  • NETWORK_SERVICE
  • LOCAL SERVICE。

什麼是什麼?

+0

而使用Windows Server 2012年與ASP.NET 4.0或以上? – Kiquenet 2014-10-03 10:45:05

回答

366

這是一個非常好的問題,很遺憾,很多開發人員在作爲Web開發人員和設置IIS時都沒有提出有關IIS/ASP.NET安全性的問題。所以這裏去....

爲了彌補列出的身份:

IIS_IUSRS:

這是類似於舊的IIS6 IIS_WPG組。它是一個內置組,它的安全性被配置爲使得該組中的任何成員都可以充當應用程序池標識。

IUSR:

此帳戶是類似於舊IUSR_<MACHINE_NAME>本地帳戶,這是對於IIS5和IIS6網站默認的匿名用戶(即一個通過站點的屬性的目錄安全性選項卡配置)。

更多有關IIS_IUSRSIUSR看到:那麼

Understanding Built-In User and Group Accounts in IIS 7

DefaultAppPool:

如果一個應用程序池被配置爲使用應用程序池身份運行具有「合成「賬戶名爲IIS AppPool\<pool name>將在飛行中創建給你sed作爲泳池標識。在這種情況下,將會有一個名爲IIS AppPool\DefaultAppPool的綜合賬戶在游泳池的使用期限內創建。如果您刪除了該池,那麼該帳戶將不再存在。將權限應用於文件和文件夾時,必須使用IIS AppPool\<pool name>添加這些權限。您也不會在您的計算機用戶管理器中看到這些池帳戶。有關詳情請參閱以下內容:

Application Pool Identities

ASP.NET v4.0: -

這將是應用程序池標識爲ASP.NET v4.0的應用程序池。見上面的DefaultAppPool

NETWORK SERVICE: -

NETWORK SERVICE帳戶是在Windows 2003上NETWORK SERVICE推出了內置的身份下,你可以運行你的應用程序池和網站低特權帳戶。運行在Windows 2003池中的網站仍然可以模擬該網站的匿名帳戶(IUSR_或您配置爲匿名身份的任何內容)。

在Windows 2008之前的ASP.NET中,您可以讓ASP.NET在Application Pool帳戶下執行請求(通常爲NETWORK SERVICE)。或者,您可以將ASP.NET配置爲通過本地web.config文件中的<identity impersonate="true" />設置模擬該站點的匿名帳戶(如果該設置已鎖定,則需要由machine.config文件中的管理員完成)。

設置<identity impersonate="true">在使用共享應用程序池的共享宿主環境中(與部分信任設置一起用於防止模擬帳戶解除綁定)很常見。

在IIS7.x/ASP.NET模擬控件現在通過站點的身份驗證配置功能進行配置。因此,您可以將其配置爲以泳池身份IUSR或特定的自定義匿名帳戶身份運行。

LOCAL SERVICE:

LOCAL SERVICE帳戶是一個內置的由服務控制管理器使用的帳戶。它在本地計算機上具有一組最低權限。它使用相當有限的範圍:

LocalService Account

LOCAL SYSTEM:

你沒有問這個人,但我添加的完整性。這是一個本地內置帳戶。它有相當廣泛的特權和信任。您不應該配置網站或應用程序池以此身份運行。

LocalSystem Account

在實踐:

在實踐中,首選的方法,以確保一個網站(如果該網站獲取自己的應用程序池 - 這是一個新的網站的默認IIS7的MMC)將在Application Pool Identity下運行。這意味着該網站在其應用程序池的高級設置標識設置爲Application Pool Identity

enter image description here

在網站上,你應該再配置認證功能:

enter image description here

右鍵單擊並編輯匿名驗證項:

enter image description here

確保「應用程序池標識」選擇:

enter image description here

當你來應聘您授予任何需要權利的應用程序池的身份文件和文件夾的權限。例如,如果你正在爲ASP.NET v4.0池權限授予應用程序池標識,那麼你可以通過瀏覽器做到這一點:

enter image description here

單擊「檢查名稱」按鈕:

enter image description here

或者您可以使用ICACLS.EXE實用程序執行此操作:

icacls c:\wwwroot\mysite /grant "IIS AppPool\ASP.NET v4.0":(CI)(OI)(M)

...或...如果你的網站的應用程序池被稱爲BobsCatPicBlog則:

icacls c:\wwwroot\mysite /grant "IIS AppPool\BobsCatPicBlog":(CI)(OI)(M)

我希望這有助於清楚的事情了。

更新:

我只是碰到了這個優秀的答案,從2009年它包含了一些有用的信息,非常值得一讀:

The difference between the 'Local System' account and the 'Network Service' account?

+0

不同意使用同一用戶進行匿名身份驗證和應用程序池標識...如果您需要授予apppoolidentity對文件夾的寫入權限.... – giammin 2015-07-23 16:44:20

+0

@giammin - 爲什麼不呢?除非有特殊情況,否則使用應用程序池標識是每個站點都位於其自己的應用程序池中的最安全的方法。討厭做「對權威的吸引力」,但一直是一個共享的網絡主機工程師和安全人員15年,這種方法是在IIS7 +上不費腦筋。 – Kev 2015-07-23 17:28:19

+0

@Kev只是我不喜歡給匿名用戶提供站點寫入權限 – giammin 2015-07-24 07:48:20

相關問題