目標 簡介
Windows
上的 ASP
NET 體系結構
Windows Server
上的 ASP
NET 體系結構
用標識隔離應用程序
用應用程序池隔離應用程序
用代碼訪問安全隔離應用程序
窗體身份驗證的問題
UNC 共享寄宿
小結
簡介 在共享宿主場景中
確保應用程序不會對其他應用程序的操作和安全產生負面影響
是非常重要的
獲得應用程序獨立有許多方式
可用的選擇因 Web 服務器上運行的
NET Framework 的版本和操作系統的版本的不同而不同
如果運行的是
NET Framework 的
版本
可以使用代碼訪問安全提供的資源約束模型提供一層應用程序獨立
這種應用程序獨立是通過限制應用程序訪問不同類型的資源(如文件系統
注冊表
事件日志
Active Directory
數據庫
網絡資源等等)而實現的
Windows Server
通過 Internet 信息服務
(IIS
) 應用程序池提供了進程獨立
可以使多個應用程序運行在不同的 IIS 輔助進程實例中
進程獨立在 Windows
上是不可能的
因為所有 Web 應用程序都運行在單獨的 ASP
NET 輔助進程實例中
而應用程序域提供了獨立性
表
總結了 Windows
和 Windows Server
上應用程序獨立的各種選擇
運行著
NET Framework
版的 Windows Server
是寄宿多個 ASP
NET 應用程序的推薦平台
因為它支持進程獨立
並為應用程序獨立提供了最大范圍的選擇
Windows 上的 ASPNET 體系結構 在 Windows
上
多個 Web 應用程序運行在一個 ASP
NET 輔助進程 (Aspnet_wp
exe) 實例中
每個應用程序都駐留在自己的應用程序域中
為托管代碼提供了一定程度的獨立性
Windows
/IIS
體系結構如圖
所示
圖
帶有 IIS
的 Windows
上的 ASP
NET 體系結構
表
總結了圖
中所描述的體系結構的組成部分
Windows Server 上的 ASPNET 體系結構 在 Windows Server
上
體系結構有所改變
因為 IIS
允許多個進程用於寄宿不同的 Web 應用程序
此體系結構如圖
所示
注 IIS
支持向後兼容模式
從而能夠支持 IIS
ASP
NET 輔助進程模型
圖
帶有 IIS
的 Windows Server
上的 ASP
NET 體系結構
與 Windows
下的 ASP
NET 體系結構相比
Windows Server
中的主要區別在於可以用不同的 IIS 輔助進程實例 (W
wp
exe) 寄宿 Web 應用程序
默認時
這些應用程序是使用 NT Authority\NetworkService 帳戶運行的
這是一個最低特權本地帳戶
它用作跨網絡的計算機帳戶
運行在網絡服務帳戶環境下的 Web 應用程序需要給遠程服務器提供計算機的憑據以進行身份驗證
為網絡服務配置 ACL
為網絡服務帳戶配置訪問控制列表 (ACL) 的過程
對於本地和遠程機器而言是不同的
如果要授予本地機器上的網絡服務帳戶訪問權限
需要將網絡服務帳戶添加到 ACL 中
如果要授予遠程機器上的網絡服務帳戶訪問權限
需要將 DomainName\MachineName$ 帳戶添加到 ACL 中
注 不要把網絡服務帳戶與內置的網絡組搞混淆了
後者包括的是跨網絡進行身份驗證的用戶
表
總結了圖
中所描述的體系結構的主要組成部分
用標識隔離應用程序 從操作系統標識的觀點來看
可以通過控制用來運行每個應用程序的帳戶標識隔離 ASP
NET Web應用程序
如果每個應用程序使用不同的固定帳戶標識
就可以分別授權和審核每個應用程序
注 如果要寄宿使用
NET Framework
版構建的 ASP
NET Web應用程序
進程帳戶需要適當的對當前文件系統驅動器根的訪問權限
有關更多信息
請參閱 Microsoft 知識庫文章
FIX:
Failed to Start Monitoring Directory Changes
Error Message When You Browse to an ASP
NET Page
如果共享 Web 服務器上每個應用程序要想都使用不同的固定標識
可以采用兩種方式
匿名帳戶模擬
固定標識模擬
匿名帳戶模擬
通過匿名帳戶模擬
應用程序可以模擬 IIS 指定
並為應用程序的虛擬目錄配置的匿名帳戶
如果您的應用程序要獨立於 IIS 對用戶進行身份驗證(如
通過使用窗體或者 Microsoft Passport 身份驗證)
就可以使用此方式
在這些情況下
可以通過使用固定的匿名帳戶隔離應用程序
一旦調用方通過了身份驗證
角色也經過了檢查
就可以將可信服務器模型用於下游的資源訪問
其中已配置的匿名帳戶提供了可信的標識
為了支持這一方式
IIS 中的應用程序虛擬目錄必須支持匿名訪問
必須為每個應用程序配置不同的匿名帳戶
應用程序然後必須配置為模擬
這種方式如圖
所示
本地和遠程資源訪問假設使用模擬的匿名帳戶的安全上下文
圖
用於每個應用程序的多個匿名帳戶
為了使用多個匿名帳戶進行資源訪問
此過程敘f
secmod
gif述了如何使用多個匿名帳戶(每個 Web 應用程序一個)進行資源訪問
以支持單獨的應用程序授權和審核
創建新的匿名用戶帳戶
每個應用程序一個
有關創建匿名用戶帳戶的更多信息
請參閱
保護 Web 服務器的安全
單元中的
帳戶
部分
如果需要使用匿名帳戶訪問遠程資源
要麼使用一個最低特權域帳戶
要麼使用本地帳戶
在遠程服務器上使用匹配的用戶名和密碼創建一個重復的本地帳戶
使用
標記在 nfig 中配置每個 Web 應用程序為模擬
allowOverride=false 設置防止了單個的應用程序改寫 nfig 文件中的這一設置有關 元素的更多信息請參閱保護 ASPNET 應用程序的安全單元中的nfig 和 nfig 詳解部分
使用 Internet 服務管理器配置每個應用程序的虛擬目錄以使用不同的匿名用戶帳戶
從管理工具程序組啟動 Internet 服務管理器
選擇應用程序的應用程序目錄鼠標右鍵單擊然後單擊 Properties
單擊 Security 選項卡然後單擊 Edit 按鈕
確保選擇了 Anonymous access然後單擊 Edit
輸入已創建的匿名帳戶的用戶名或者單擊 Browse從列表中選擇用戶名
如果想使用帳戶訪問遠程資源請清除匿名帳戶的 Allow IIS to Control Password 復選框
如果選擇了 Allow IIS to Control Password使用指定匿名帳戶創建的登錄會話的網絡憑據將為 NULL而且不能用於訪問必需進行身份驗證的網絡資源如果清除了這一復選框登錄會話將是一個需要網絡憑據的交互式登錄會話但是如果帳戶是機器本地帳戶則網絡上其他機器都無法對此帳戶進行身份驗證在此情況下應該在目標遠程服務器上創建一個重復帳戶
注 所創建的登錄會話的類型是由 LogonMethod IIS 元數據庫設置控制的默認時是交互式登錄會話需要具有Allow Log on Locally用戶特權的帳戶
IIS 上沒有 Allow IIS to Control Password 選項IIS 將默認的 LogonMethod 設置為 Network Cleartext這要求帳戶有Access this computer from the network用戶特權這使帳戶由網絡服務器進行身份驗證
為每個帳戶配置 NTFS 權限以確保每個帳戶都有只訪問適當的文件系統文件和文件夾的權限而不能訪問關鍵的資源(如操作系統工具)
有關為匿名帳戶配置 NTFS 權限的更多信息請參閱單元保護 Web 服務器的安全
注 如果運行 IISLockdown 向導它將創建一個 Web 匿名用戶組該組的成員將被拒絕訪問系統目錄和工具
固定標識模擬
如果需要 IIS 為應用程序對用戶進行身份驗證(例如通過使用集成 Windows 身份驗證或者證書身份驗證)可以使用一個固定模擬標識來執行 ASPNET 應用程序此場景如圖 所示
圖 應用程序模擬一個固定帳戶並使用它訪問資源
可以配置單獨的 ASPNET 應用程序模擬一個固定帳戶這種配置的好處在於它可以用於任何 IIS 身份驗證方法而且無需 IIS 匿名身份驗證 From:http://tw.wingwit.com/Article/program/net/201311/12152.html