Asp.net

IIS/ASP.NET 的所有使用者帳戶是什麼?它們有何不同?

  • April 20, 2011

在安裝了 ASP.NET 4.0 的 Windows Server 2008 下,有一大堆相關的使用者帳戶,我不明白哪個是哪個,它們有何不同,以及哪個是我的應用程序執行的真正的使用者帳戶。這是一個列表:

  • IIS_IUSRS
  • 管轄權
  • 預設應用程序池
  • ASP.NET v4.0
  • NETWORK_SERVICE
  • 本地服務。

什麼是什麼?

這是一個非常好的問題,遺憾的是,在作為 Web 開發人員和設置 IIS 的背景下,許多開發人員沒有提出足夠的關於 IIS/ASP.NET 安全性的問題。所以這裡……

涵蓋列出的身份:

IIS_IUSRS:

這類似於舊的 IIS6IIS_WPG組。它是一個內置組,其安全配置使得該組的任何成員都可以充當應用程序池身份。

IUSR:

此帳戶類似於舊的IUSR_<MACHINE_NAME>本地帳戶,它是 IIS5 和 IIS6 網站的預設匿名使用者(即通過站點屬性的目錄安全選項卡配置的帳戶)。

有關更多資訊IIS_IUSRSIUSR請參閱:

了解 IIS 7 中的內置使用者和組帳戶

DefaultAppPool:

如果應用程序池配置為使用應用程序池標識功能執行,IIS AppPool\<pool name>則將動態創建一個稱為“綜合”帳戶以用作池標識。在這種情況下,將IIS AppPool\DefaultAppPool在池的生命週期內創建一個名為 created 的合成帳戶。如果您刪除池,則此帳戶將不再存在。對文件和文件夾應用權限時,必須使用IIS AppPool\<pool name>. 您也不會在您的電腦使用者管理器中看到這些池帳戶。有關詳細資訊,請參閱以下內容:

應用程序池標識

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 在應用程序池帳戶(通常是NETWORK SERVICE)下執行請求。<identity impersonate="true" />或者,您可以將 ASP.NET 配置為通過本地文件中的設置來模擬站點的匿名帳戶web.config(如果該設置被鎖定,則需要由machine.config文件中的管理員完成)。

設置<identity impersonate="true">在使用共享應用程序池的共享託管環境中很常見(與部分信任設置結合使用以防止模擬帳戶的解除)。

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

LOCAL SERVICE:

LOCAL SERVICE帳戶是服務控制管理器使用的內置帳戶。它在本地電腦上具有最低權限集。它的使用範圍相當有限:

本地服務帳戶

LOCAL SYSTEM:

你沒有問這個問題,但我為了完整性而添加。這是一個本地內置帳戶。它擁有相當廣泛的特權和信任。您永遠不應將網站或應用程序池配置為在此身份下執行。

本地系統帳戶

在實踐中:

在實踐中,保護網站的首選方法(如果網站有自己的應用程序池 - 這是 IIS7 的 MMC 中新網站的預設設置)是在Application Pool Identity. 這意味著將站點在其應用程序池的高級設置中的身份設置為Application Pool Identity

在此處輸入圖像描述

然後,您應該在網站中配置身份驗證功能:

在此處輸入圖像描述

右鍵點擊並編輯匿名身份驗證條目:

在此處輸入圖像描述

確保選擇了*“應用程序池標識”*:

在此處輸入圖像描述

當您應用文件和文件夾權限時,您授予應用程序池身份所需的任何權限。例如,如果您為ASP.NET v4.0池權限授予應用程序池身份,那麼您可以通過 Explorer 執行此操作:

在此處輸入圖像描述

點擊“檢查名稱”按鈕:

在此處輸入圖像描述

或者您可以使用該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 年偶然發現了這個出色的答案,其中包含大量有用的資訊,非常值得一讀:

“本地系統”帳戶和“網路服務”帳戶之間的區別?

引用自:https://stackoverflow.com/questions/5729264