




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、構(gòu)建安全的 ASP.NET 應(yīng)用程身份驗證、授權(quán)和安全通信第5章一Intranet 安全性J.D. Meier、Alex Mackman、Michael Dunner 和 Srinath VasireddyMicrosoft Corporation2002年10月有關(guān)構(gòu)建安全的ASPNET應(yīng)用程序的起點和完整概述,請參見登陸頁面??偨Y(jié)本章介紹如何保護常見的Intranet應(yīng)用程序方案的安全。還介紹每種方案的特點以及保護各方案的安全所需的步驟。還包括分析部分以提供進一步的信息。內(nèi)容ASP.NET 至U SQL ServerASP.NET 至ij Enterprise Services 至U SQ
2、L ServerASP.NET 到 Web 服務(wù)到 SQL ServerASP.NET 至ij Remoting 至U SQL Server點對點安全性將原調(diào)用方傳遞到數(shù)據(jù)庫總結(jié)對Intranet應(yīng)用程序的訪問被限制到一組有限的授權(quán)用戶(例如,屬于某個域的雇員)。雖然Intranet設(shè)置限制了應(yīng)用程序的公開,但是當(dāng)您制定身份驗證、 授權(quán)和安全通信策略時,可能仍要面臨一些難題。例如,您可能包含非信任域,因此很難將 調(diào)用方的安全性上下文和標識傳遞到系統(tǒng)內(nèi)的后端資源。另外,您的運行環(huán)境可能 是具有混合瀏覽器類型的異類環(huán)境。因此,更加不便使用通用身份驗證機制。如果同類Intranet中的所有計算機均運
3、行 Microsoft? Windows? 2000或更高版本 的操作系統(tǒng),并且在域中信任用戶使用委派,則可以選擇將原調(diào)用方的安全性上下 文委派到后端。您還必須考慮安全通信問題。盡管您的應(yīng)用程序運行在Intranet環(huán)境中,也不能認為在網(wǎng)絡(luò)中傳送的數(shù)據(jù)是安全的。除了需要保護應(yīng)用程序服務(wù)器和數(shù)據(jù)庫之間傳送 的數(shù)據(jù)外,可能還需要保護瀏覽器和Web服務(wù)器之間傳送的數(shù)據(jù)。本章使用以下常見的Intranet方案來闡釋主要的身份驗證、授權(quán)和安全通信技術(shù): ASP.NETSQL Server ASP.NET 至ij Enterprise Services 至U SQL Server ASP.NET 到 We
4、b 服務(wù)到 SQL Server ASP.NET 至ij Remoting 至U SQL Server此外,本章還介紹了一個Windows 2000委派方案(“將原調(diào)用方傳遞到數(shù)據(jù)庫”)。在此方案中,使用中間Web服務(wù)器和應(yīng)用程序服務(wù)器,在操作系統(tǒng)級別將原調(diào)用方的安全性上下文和標識從瀏覽器傳遞到數(shù)據(jù)庫。注意:本章中描述的幾個方案或者替換用于運行ASP.NET應(yīng)用程序的默認ASPNET帳戶,或者更改其密碼以允許在遠程計算機上創(chuàng)建重復(fù)的帳戶。這些方 案更新 Machine.config中的processModel 元素。這樣,就可以將憑據(jù)以明文 形式存儲在 machine.config中。有關(guān)該主
5、題的詳細討論, 請參見第8章“ASP.NET 安全性”中的“訪問網(wǎng)絡(luò)資源”。ASP.NET 至U SQL ServerIntranet中安全地提供每個用戶的數(shù)據(jù)。應(yīng)用在此方案中,人力資源數(shù)據(jù)庫在同類程序使用受信任的子系統(tǒng)模型并代表原調(diào)用方執(zhí)行調(diào)用。應(yīng)用程序使用集成Windows身份驗證來驗證調(diào)用方的身份,并使用 ASP.NET進程標識來調(diào)用數(shù)據(jù) 庫。由于數(shù)據(jù)本身所具有的機密性,因此,在 Web服務(wù)器和客戶端之間使用了SSL。圖5.1顯示此應(yīng)用程序方案的基本模型。¥&服務(wù)器應(yīng)用程序服若器Insert figure: CH05 - Intranet - ASPNET to SQL
6、 Server.gif圖5.1ASP.NET 至ij SQL Server特點本方案具有以下特點: 客戶端上安裝了Internet Explorer。 用戶帳戶位于 Microsoft Active Directory?目錄服務(wù)中。 應(yīng)用程序提供每個用戶的機密數(shù)據(jù)。 只有經(jīng)過身份驗證的客戶端能夠訪問應(yīng)用程序。 數(shù)據(jù)庫委派該應(yīng)用程序?qū)τ脩暨M行正確的身份驗證(即,應(yīng)用程序代表用戶 對數(shù)據(jù)庫進行調(diào)用)。 Microsoft SQL Server?使用單個數(shù)據(jù)庫用戶角色進行授權(quán)。保護方案在此方案中,Web服務(wù)器驗證調(diào)用方的身份,并通過使用調(diào)用方的標識限制對本地 資源的訪問。要限制原調(diào)用方對資源的訪問,
7、您不必在Web應(yīng)用程序中進行模擬。數(shù)據(jù)庫驗證 ASP.NET默認進程標識(它是權(quán)限最少的帳戶)的身份(即數(shù)據(jù)庫信 任 ASP.NET應(yīng)用程序)。表5.1:安全措施類別身份驗證詳細信息 通過在IIS中使用集成 Windows身份驗證, 在Web服務(wù)器上提供增強身份驗證來驗證原 調(diào)用方的身份。 在 ASP.NET內(nèi)使用 Windows身份驗證(不 模擬)。 通過將 SQL Server配置為使用 Windows身 份驗證,確保數(shù)據(jù)庫連接的安全。數(shù)據(jù)庫信任 ASP.NET輔助進程以進行調(diào)用??梢栽跀?shù)據(jù)庫中驗證 ASP.NET進程標識的身 份。授權(quán)使用綁定到原調(diào)用方的ACL在Web服務(wù)器上配置資源。為
8、了簡化管理,將用戶添加到Windows組中并在 ACL中使用組。Web應(yīng)用程序?qū)υ{(diào)用方執(zhí)行.NET角色檢查,以限制對頁面的訪問。安全通信保護在Web服務(wù)器和數(shù)據(jù)庫之間傳送的機密數(shù)據(jù)保護在原調(diào)用方和 Web應(yīng)用程序之間傳送的機密數(shù)據(jù)結(jié)果圖5.2顯示了此方案的建議安全配置。文件授權(quán)黑型號RTFS m.即角色數(shù)據(jù)犀角C(段積授權(quán))'授權(quán)行wMje馬松船證身份驗證身份給證Insert figure: CH05 - Intranet - ASP .NET to SQL Server (Solution).gif圖5.2ASP.NET至ij SQL Server Intranet方案的建議安全配
9、置安全配置步驟在開始之前,您需要查看以下內(nèi)容: 創(chuàng)建自定義 ASP.NET帳戶(請參見本指南“參考”部分的“如何做:創(chuàng)建自定義帳戶以便運行 ASP.NET') 創(chuàng)建一個權(quán)限最少的數(shù)據(jù)庫帳戶(參見第 12章“數(shù)據(jù)訪問安全性”) 在 Web服務(wù)器上配置 SSL (請參見本指南“參考”部分的“如何做:在 Web 服務(wù)器上設(shè)置 SSL") 配置IPSec (請參見本指南“參考”部分的“如何做:使用IPSec以便在兩臺服務(wù)器之間安全通信”)配置IIS步驟更多信息禁用對Web應(yīng)用程序的虛要使用IIS身份驗證設(shè)置,請使用IIS MMC管理單元。右擬根目錄的匿名訪問擊應(yīng)用程序的虛擬目錄,然后
10、單擊“屬性”。啟用集成的Windows身份驗證單擊“目錄安全性”選項卡,然后單擊“匿名訪問和驗證控 件”組中的“編輯”。配置 ASP.NET步驟更多信息將ASPNET密碼更改為一ASPNET是權(quán)限最少的本地帳戶,默認情況下用來運行個已知的強密碼值A(chǔ)SP.NET Web應(yīng)用程序。通過使用“本地用戶和組”將 ASPNET帳戶的密碼設(shè)置為 一個已知值。編 輯位于 windir%Microsoft.NETFrameworkv1.0.3705CONFIG 中的 Machine.config 并重新配置<processModel >元素的密碼屬性 默認<!- userName="
11、;machine" password="AutoGenerate"->成為<!- userName="machine" password="YourNewStrongPassword"->將ASP.NET Web應(yīng)用程序配置為使用 Windows身份驗證編輯應(yīng)用程序的虛擬根目錄下的Web.config將authentication > 元素設(shè)置為:authentication mode="Windows" />確保模擬處于關(guān)閉狀態(tài)默認情況下模擬處于關(guān)閉狀態(tài);不過,請執(zhí)行如下操
12、作,再次檢查以確保它在Web.config中是關(guān)閉的:identity impersonate="false"/>刪除identity >元素也能達到同樣的效果。配置 SQL Server步驟更多信息在SQL Server計算機上創(chuàng)建一個與 ASP.NET進程帳戶 (ASPNET) 匹配的 Windows 帳戶用戶名和密碼必須與 ASPNET帳戶匹配。給予該帳戶以下權(quán)限:-從網(wǎng)絡(luò)訪問此計算機-拒絕本地登錄-以批處理作業(yè)登錄配置SQL Server以便進行Windows身份驗證為本地 ASPNET帳戶創(chuàng)建這將授予對SQL Server的訪問權(quán)限一個 SQL Ser
13、ver 登錄創(chuàng)建一個新數(shù)據(jù)庫用戶,并這將授予對指定數(shù)據(jù)庫的訪問權(quán)限將登錄名映射到數(shù)據(jù)庫用戶創(chuàng)建一個新的用戶定義的數(shù)據(jù)庫角色,并將數(shù)據(jù)庫用戶添加到該角色建立該數(shù)據(jù)庫角色的數(shù)據(jù)庫授予最少的權(quán)限權(quán)限有關(guān)詳細信息,請參見第12章“數(shù)據(jù)訪問安全性”。配置安全通信步驟更多信息配置 Web站點的SSL請參見本指南“參考”部分的“如何做:在 Web服務(wù)器上設(shè)置SSL”。配置 Web服務(wù)器和數(shù)據(jù)庫請參見本指南“參考” 部分的“如何做:使用IPSec以便在服務(wù)器之間的IPSec兩個服務(wù)器之間安全通信”。分析 在此方案中,由于所有用戶都使用Windows帳戶并且使用的是MicrosoftInternet Explo
14、rer,所以在 IIS中最好使用集成Windows身份驗證。集成Windows身份驗證的優(yōu)點是從不通過網(wǎng)絡(luò)傳送用戶的密碼。此外,由于Windows使用當(dāng)前交互式用戶的登錄會話,所以對于用戶來說登錄是透明的。 ASP.NET作為權(quán)限最少的帳戶運行,所以,一旦遭到攻擊,潛在危害被大大 降低。 要執(zhí)行.NET角色檢查或在 Windows ACL中針對原調(diào)用方保證資源的安 全,您不必在 ASP.NET中進行模擬。為了對原調(diào)用方執(zhí)行.NET角色檢查,按如下所示從HTTP上下文中檢索代表原調(diào)用方的WindowsPrincipal 對象:WindowsPrincipal wp = (HttpContext.
15、Current.User as WindowsPrincipal); if ( wp.IsInRole("Manager") / User is authorized to perform manager-specific functionality ASP.NET FileAuthorizationModule針對原調(diào)用方在ACL中檢查在 IIS中映射到 aspnet_isapi.dll的ASP.NET文件類型。對于靜態(tài)文件類型(例 如.jpg、.gif和.htm文件),IIS充當(dāng)關(guān)守,它根據(jù)文件的相關(guān)NTFS權(quán)限,使用原調(diào)用方的標識執(zhí)行訪問檢查。 對SQL Server
16、使用 Windows身份驗證意味著,不必將憑據(jù)存儲在文件中并 通過網(wǎng)絡(luò)將憑據(jù)傳遞到數(shù)據(jù)庫服務(wù)器。 在數(shù)據(jù)庫服務(wù)器上使用重復(fù)的Windows帳戶(與ASP.NET本地帳戶匹配的帳戶)會導(dǎo)致增加管理負擔(dān)。如果一臺計算機上的密碼有改動,則必須在其 他計算機上同步并更新它。在某些方案中,您可能能夠使用權(quán)限最少的域帳 戶進行更簡單的管理。 當(dāng)設(shè)置防火墻時(此時 Windows身份驗證所需的端口可能沒有打開),重復(fù)的本地帳戶方法同樣有效。在此方案中可能無法使用Windows身份驗證和域帳戶。 您需要確保 Windows組的粒度與您的安全要求一樣。由于基于.NET角色的安全性以Windows組成員身份為基礎(chǔ)
17、,所以此解決方案依賴于以正確的粒 度設(shè)置 Windows組,以便與訪問應(yīng)用程序的用戶類別(共享相同的安全權(quán)限)匹配。這里用來管理角色的Windows組可以是此計算機的本地組或域組。 SQL Server數(shù)據(jù)庫用戶角色優(yōu)先于SQL Server應(yīng)用程序角色,這樣可以避免與使用SQL應(yīng)用程序角色有關(guān)的密碼管理和連接池問題。應(yīng)用程序通過用角色名和密碼調(diào)用內(nèi)置的存儲過程,來激活SQL應(yīng)用程序角色。因此,必須安全地存儲密碼。當(dāng)使用 SQL應(yīng)用程序角色時,還必須禁用 數(shù)據(jù)庫連接池,因為它會嚴重影響應(yīng)用程序的可伸縮性。有關(guān)SQL Server數(shù)據(jù)庫用戶角色和 SQL Server應(yīng)用程序角色的詳細信息, 請
18、參見第12章“數(shù)據(jù)訪問安全性”。 將數(shù)據(jù)庫用戶添加到數(shù)據(jù)庫用戶角色中,并且為角色指定了權(quán)限,因此,當(dāng) 數(shù)據(jù)庫帳戶更改時,您不必更改所有數(shù)據(jù)庫對象的權(quán)限。問與答 為什么我不能啟用Web應(yīng)用程序模擬,以便使用配置的 ACL針對原調(diào)用方來保護 Web應(yīng)用程序所訪問的資源?如果啟用模擬,則模擬的安全性上下文不具有網(wǎng)絡(luò)憑據(jù)(假定未啟用委派并 且您使用的是集成Windows身份驗證)。因此,對 SQL Server的遠程調(diào)用將使用NULL會話,而這將會導(dǎo)致調(diào)用失敗。如果禁用模擬,則遠程請求使 用ASP.NET進程標識。上述方案使用 ASP.NET FileAuthorizationModule ,它使用
19、Windows ACL 針 對原調(diào)用方標識執(zhí)行授權(quán),并且不要求進行模擬。如果您使用基本身份驗證而不是集成Windows身份驗證(NTLM),并且確實啟用了模擬,則每個數(shù)據(jù)庫調(diào)用都將使用原調(diào)用方的安全性上下文。每個用 戶帳戶(或用戶所屬的Windows組)都要求使用SQL Server登錄。需要限制 Windows組(或原調(diào)用方)訪問數(shù)據(jù)庫對象的權(quán)限以確保安全性。 數(shù)據(jù)庫不知道誰是原始調(diào)用方。我如何能創(chuàng)建一條審核記錄? 審核 Web應(yīng)用程序中的最終用戶活動,或者將用戶標識作為數(shù)據(jù)訪問調(diào)用的參數(shù)明確地進行傳遞。相關(guān)方案非 Internet Explorer 瀏覽器對IIS執(zhí)行集成 Windows身
20、份驗證需要使用Internet Explorer。在混合瀏覽器環(huán)境中,您的典型選項包括: 基本身份驗證和 SSL。大多數(shù)瀏覽器都支持基本身份驗證。由于用戶的憑據(jù) 是通過網(wǎng)絡(luò)傳遞的,所以必須使用SSL來保證此方案的安全。 客戶端證書??梢詫⒏鱾€客戶端證書映射到唯一的Windows帳戶,或者使用單個Windows帳戶來代表所有客戶端。使用客戶端證書還要求使用SSL。 表單身份驗證。表單身份驗證可以根據(jù)自定義數(shù)據(jù)存儲(如數(shù)據(jù)庫)或ActiveDirectory來驗證憑據(jù)。如果根據(jù)Active Directory 進行身份驗證,請確保僅檢索與應(yīng)用程序有關(guān)的必 要的組。正如不應(yīng)該使用 SELECT *子
21、句對數(shù)據(jù)庫執(zhí)行查詢一樣,不應(yīng)盲目 地從Active Directory 中檢索所有的組。如果根據(jù)數(shù)據(jù)庫進行身份驗證,您需要仔細分析SQL命令中使用的輸入值,以防止SQL注入攻擊,并且應(yīng)該在數(shù)據(jù)庫中存儲密碼哈希值(帶有 salt), 而不是存儲明文密碼或加密密碼。有關(guān)使用SQL Server作為憑據(jù)存儲和將密碼存儲在數(shù)據(jù)庫中的詳細信息,請參見第12章“數(shù)據(jù)訪問安全性”。注意,在所有情況中,如果您沒有使用集成Windows身份驗證(其中,由平臺為您管理憑據(jù)),則最后將使用 SSL。不過,此優(yōu)點僅限于身份驗證過程。如果您通 過網(wǎng)絡(luò)傳遞安全機密數(shù)據(jù),則仍須使用IPSec或SSL。對數(shù)據(jù)庫的SQL身份驗
22、證在有些方案中,您可能必須使用SQL身份驗證而不是首選的Windows身份驗證。例如,在 Web應(yīng)用程序和數(shù)據(jù)庫之間可能設(shè)置了防火墻,或者由于安全原因, Web服務(wù)器可能不屬于您所在的域。這也會妨礙Windows身份驗證。這種情況下,您可以在數(shù)據(jù)庫和 Web服務(wù)器之間使用 SQL身份驗證。為保證此方案的安全,您 應(yīng)該: 使用數(shù)據(jù)保護 API (DPAPI)來保護包含用戶名和密碼的數(shù)據(jù)庫連接字符串。 有關(guān)更多信息,請訪問以下資源: 第12章“數(shù)據(jù)訪問安全性”中的“保護數(shù)據(jù)庫連接字符串的安全” 本指南“參考”部分的“如何做:在ASP.NET中使用DPAPI (機器存儲)” 本指南“參考”部分的“如
23、何做:在具有 Enterprise Services 的ASP.NET 中使用DPAPI (用戶存儲)” 本指南“參考”部分的“如何做:創(chuàng)建 DPAPI庫”在Web服務(wù)器和數(shù)據(jù)庫服務(wù)器之間,使用IPSec或SSL來保護通過網(wǎng)絡(luò)傳 遞的明文憑據(jù)。將原調(diào)用方傳遞到數(shù)據(jù)庫在此方案中,使用原調(diào)用方的安全性上下文從Web應(yīng)用程序調(diào)用數(shù)據(jù)庫。使用此方法時,一定要注意以下幾點: 如果選擇此方法,則需要使用Kerberos身份驗證(將帳戶配置為使用委派)或基本身份驗證。本章后面的“將原調(diào)用方傳遞到數(shù)據(jù)庫”部分討論了委派方案。 還必須在 ASP.NET中啟用模擬。這意味著使用原調(diào)用方的安全性上下文執(zhí)行 本地系統(tǒng)
24、資源訪問,因此需要正確地配置本地資源(例如注冊表和事件日志) 的 ACL。 由于原調(diào)用方無法共享連接,因此數(shù)據(jù)庫連接池受到限制。每個連接都與調(diào) 用方的安全性上下文關(guān)聯(lián)。 另一種傳遞用戶安全性上下文的方法是在應(yīng)用程序級別傳遞原調(diào)用方的標識 (例如,通過使用方法和存儲過程參數(shù))。ASP.NET 至U Enterprise Services 至U SQL Server在此方案中,ASP.NET頁面調(diào)用 Enterprise Services應(yīng)用程序中駐留的業(yè)務(wù)組件,而Enterprise Services應(yīng)用程序又連接到數(shù)據(jù)庫上。例如,請看一個內(nèi)部定單系統(tǒng),它通過Intranet進行交易并允許內(nèi)部部
25、門下定單。圖 5.3中顯示了此方案。W*b服冬器Insert figure: CH05 - Intranet - ASPNET to Local ES to SQL Server.gif圖5.3ASP.NET會在Enterprise Services中調(diào)用一個組件,該組件將調(diào)用該數(shù)據(jù)庫特點本方案具有以下特點: 用戶安裝了 Internet Explorer。 在 Web服務(wù)器上部署了組件。 應(yīng)用程序處理機密數(shù)據(jù),在傳輸過程中必須保護這些數(shù)據(jù)的安全。 業(yè)務(wù)組件使用 Windows身份驗證連接到SQL Server。 基于調(diào)用方的標識來限制這些組件中的業(yè)務(wù)功能。 將服務(wù)組件配置為服務(wù)器應(yīng)用程序(進
26、程外) 。 組件使用服務(wù)器應(yīng)用程序的進程標識連接到數(shù)據(jù)庫。 在 ASP.NET中啟用模擬(確?;贓nterprise Services角色的安全性)。保護方案在此方案中,Web服務(wù)器驗證原調(diào)用方的身份,并將調(diào)用方的安全性上下文傳遞到服務(wù)組件。服務(wù)組件基于原調(diào)用方的標識授予業(yè)務(wù)功能的訪問權(quán)限。數(shù)據(jù)庫根據(jù)Enterprise Service應(yīng)用程序的進程標識進行身份驗證(即數(shù)據(jù)庫信任EnterpriseServices應(yīng)用程序中的服務(wù)組件)。當(dāng)服務(wù)組件調(diào)用數(shù)據(jù)庫時,它在應(yīng)用程序級別傳 遞用戶的標識(通過使用受信任的查詢參數(shù))。表5.2:安全措施類別明細身份驗證使用集成 Windows身份驗證在
27、Web服務(wù)器上提供增強身份驗證。 將原調(diào)用方的安全性上下文傳遞到服務(wù)組件以支持 Enterprise Services (COM+)角色檢查。 使用Windows身份驗證保護數(shù)據(jù)庫連接的安全。 數(shù)據(jù)庫信任服務(wù)組件的標識以調(diào)用數(shù)據(jù)庫。數(shù)授權(quán)安全通信據(jù)庫驗證Enterprise Services應(yīng)用程序進程標 識的身份。 使用 Enterprise Services (COM+)角色授予業(yè) 務(wù)邏輯的訪問權(quán)限。 使用SSL保護用戶和 Web應(yīng)用程序之間傳 送的機密數(shù)據(jù)。 使用IPSec保護在Web服務(wù)器和數(shù)據(jù)庫之 間傳送的機密數(shù)據(jù)。結(jié)果圖5.4顯示了此方案的建議安全配置。完整性Insert figu
28、re: CH05 - Intranet - ASP .NET to Local ES to SQL Server (Solution).gif圖5.4ASP.NET 至ij本地 Enterprise Services 至ij SQL Server 的 Intranet 方案的建議安全配置安全配置步驟在開始之前,您需要查看以下內(nèi)容: 創(chuàng)建一個權(quán)限最少的數(shù)據(jù)庫帳戶(參見第12章“數(shù)據(jù)訪問安全性”) 在 Web服務(wù)器上配置 SSL (請參見本指南“參考”部分的“如何做:在 Web 服務(wù)器上設(shè)置 SSL") 配置IPSec (請參見本指南“參考”部分的“如何做:使用IPSec以便在兩臺服務(wù)器
29、之間安全通信”) 配置Enterprise Services安全性(請參見本指南“參考"部分的"如何做:將基于角色的安全性用于Enterprise Services ")配置IIS步驟更多信息禁用對Web應(yīng)用程序的虛擬根目錄的匿名訪問啟用集成的Windows身份驗證配置 ASP.NET步驟更多信息將ASP.NET Web應(yīng)用程序編輯應(yīng)用程序的虛擬根目錄下的Web.config配置為使用Windows 身份 將 <authentication > 元素設(shè)置為:這可以通過使用“組件服務(wù)”工具,或通過位于服務(wù)組件程 序集中的以下.NET屬性進行配置。驗證au
30、thentication mode="Windows" />配置ASP.NET Web應(yīng)用程序的模擬編輯Web應(yīng)用程序的虛擬目錄下的Web.config將identity > 元素設(shè)置為:<identity impersonate="true"/>配置ASP.NET DCOM安全 性,確保 Enterprise Services 調(diào)用支持調(diào)用方模擬編輯Machine.config 并找到 <processModel >元素。確認將 comImpersonationLevel 屬性設(shè)置為 Impersonate (默認設(shè)
31、 置)<processModelcomImpersonationLevel="Impersonate'配置Enterprise Services步驟更多信息創(chuàng)建一個用于運行Enterprise Services 的自定義 帳戶注意:如果使用本地帳戶,則還必須在 上創(chuàng)建一個重復(fù)的帳戶。SQL Server計算機將 Enterprise Services 應(yīng)用程序配置為服務(wù)器應(yīng)用程序assembly: ApplicationActivation(ActivationOption.Server)配置 Enterprise Services(COM+)角色使用“組件服務(wù)”工具或
32、腳本將 到角色中??梢允褂梅?wù)組件程序集中的Windows用戶和/或組添加.NET屬性來定義角色。將 Enterprise Services 配置為以自定義帳戶運行必須使用“組件服務(wù)”工具或腳本進行配置。不能使用服務(wù) 組件程序集中的.NET屬性。配置 SQL Server步驟更多信息在SQL Server計算機上創(chuàng)用戶名和密碼必須匹配自定義Enterprise Services 帳戶。建一個與 Enterprise Services進程帳戶匹配的 Windows 給予該帳戶以下權(quán)限:帳戶-從網(wǎng)絡(luò)訪問此計算機-拒絕本地登錄-以批處理作業(yè)登錄配置SQL Server以便進行Windows身份驗證為
33、Enterprise Services 帳 這將授予對 SQL Server的訪問權(quán)限。戶創(chuàng)建一個 sql Server登錄創(chuàng)建一個新數(shù)據(jù)庫用戶,并這將授予對特定數(shù)據(jù)庫的訪問權(quán)限。將登錄名映射到數(shù)據(jù)庫用戶創(chuàng)建一個新的數(shù)據(jù)庫用戶角色,并將數(shù)據(jù)庫用戶添加給該角色建立數(shù)據(jù)庫用戶角色的數(shù)據(jù)授予最少的權(quán)限庫權(quán)限有關(guān)詳細信息,請參見第12章“數(shù)據(jù)訪問安全性”配置安全通信步驟更多信息配置 Web站點的SSL請參見本指南“參考”部分的“如何做:在 Web服務(wù)器上設(shè)置SSL”。配置 Web服務(wù)器和數(shù)據(jù)庫請參見本指南“參考” 部分的“如何做:使用IPSec以便在服務(wù)器之間的IPSec兩個服務(wù)器之間安全通信”。分析
34、 ASP.NET和Enterprise Services作為權(quán)限最少的帳戶運行,所以,一旦遭到 攻擊,潛在危害被大大降低。當(dāng)任何一方的進程標識遭到攻擊時,由于帳戶 僅具有有限的權(quán)限,因此縮小了危害的范圍。另外,在ASP.NET中,如果注 入了惡意腳本,也可以限制潛在的危害。 要將原調(diào)用方的安全T上下文傳遞到Enterprise Services組件(以支持基于Enterprise Services (COM+)角色的授權(quán)),必須配置 ASP.NET應(yīng)用程序以支 持模擬。如果不進行模擬,則對進程標識 (即ASP.NET輔助進程)進行角色 檢查。模擬影響被授予資源訪問權(quán)限的對象。在未進行模擬時,針
35、對ASP.NET進程標識進行系統(tǒng)資源檢查。 在進行模擬時, 針對原調(diào)用方進行系統(tǒng)資源檢查。有關(guān)從 ASP.NET訪問系統(tǒng)資源的詳細信 息,請參見第 8章“ASP.NET安全性”中的“訪問系統(tǒng)資源”。 通過使用 Enterprise Services (COM+)角色,將訪問檢查推到中間層(業(yè)務(wù)邏 輯所在的位置)進行。在這種情況下,在入口處檢查調(diào)用方,將其映射到角 色,以及基于角色調(diào)用業(yè)務(wù)邏輯。這可避免不必要的后端調(diào)用。EnterpriseServices (COM+)角色的另一優(yōu)點是:可以在部署時使用組件服務(wù)管理器創(chuàng)建 和管理角色。 對SQL的Windows身份驗證意味著,可以避免在文件中存儲
36、憑據(jù)并通過網(wǎng) 絡(luò)進行傳送。 當(dāng)設(shè)置了防火墻時(此時 Windows身份驗證所需的端口可能沒有打開),仍然可以使用本地帳戶運行Enterprise Services應(yīng)用程序,以及在數(shù)據(jù)庫服務(wù)器上使用重復(fù)的帳戶。在此方案中可能無法使用Windows身份驗證和域帳戶。 在數(shù)據(jù)庫服務(wù)器上使用重復(fù)的Windows帳戶(與Enterprise Services進程帳戶匹配的帳戶)會導(dǎo)致增大管理負擔(dān)。密碼應(yīng)當(dāng)定期手動更新并同步。 由于基于.NET角色的安全性以Windows組成員身份為基礎(chǔ),此解決方案依賴于以正確白粒度設(shè)置Windows組,以便與訪問應(yīng)用程序的用戶類別(共享相同的安全權(quán)限)匹配。ASP.NE
37、T 至U Web 服務(wù)到 SQL Server在此方案中,運行 ASP.NET頁的 Web服務(wù)器連接到遠程服務(wù)器上的 Web服務(wù)。該服務(wù)器又連接到遠程數(shù)據(jù)庫服務(wù)器。例如,請看一個提供用戶特定機密數(shù)據(jù)的人力資源 Web應(yīng)用程序。此應(yīng)用程序依賴 Web服務(wù)進行數(shù)據(jù)檢索。圖 5.5顯示了 此應(yīng)用程序方案的基本模型。心k服箝器應(yīng)用程序服務(wù)器遨據(jù)庫服務(wù)器Insert figure: CH05 - Intranet - ASPNET to Remote Web Service to SQL Server.gif圖5.5ASP.NET 至ij遠程 Web 服務(wù)到 SQL ServerWeb服務(wù)公開一個允許個
38、別雇員檢索他或她的個人詳細信息的方法。必須使用 Web應(yīng)用程序只給通過身份驗證的個人提供詳細信息。Web服務(wù)還提供了一個支持任何雇員詳細信息檢索的方法。只有人力資源或工資部門的成員可以使用此功能。在此 方案中,將雇員分為三個Windows組: HRDept (人力資源部門的成員)該組的成員可以檢索有關(guān)任何雇員的詳細信息。 PayrollDept (工資部門的成員)該組的成員可以檢索有關(guān)任何雇員的詳細信息。 Employees (所有雇員)該組的成員只能檢索他們自己的詳細信息。由于數(shù)據(jù)本身所具有的保密性,應(yīng)保證所有節(jié)點之間通信的安全。特點 用戶安裝了 Internet Explorer 5.x
39、或更高版本。 所有計算機運行的都是Windows 2000或更高版本。 用戶帳戶位于單一目錄林的Active Directory 中。 應(yīng)用程序?qū)⒃{(diào)用方的安全性上下文一直傳遞到數(shù)據(jù)庫。 所有層都使用 Windows身份驗證。 將域用戶帳戶配置為使用委派。 數(shù)據(jù)庫不支持委派。保護方案在此方案中,駐留 ASP.NET Web應(yīng)用程序的 Web服務(wù)器驗證原調(diào)用方的標識,并將它們的安全性上下文傳遞到駐留Web服務(wù)的遠程服務(wù)器。這樣就可以對Web方法應(yīng)用授權(quán)檢查,以允許或拒絕對原調(diào)用方的訪問。數(shù)據(jù)庫驗證Web服務(wù)進程標識的身份(數(shù)據(jù)庫信任 Web服務(wù))。Web服務(wù)反過來調(diào)用數(shù)據(jù)庫, 并使用存儲過 程參
40、數(shù)在應(yīng)用程序級別傳遞用戶的標識。表5.3:安全措施類別明細身份驗證 Web應(yīng)用程序在 IIS中使用集成 Windows身 份驗證來驗證用戶的身份。 Web服務(wù)在IIS中使用集成 Windows身份驗 證。它對Web應(yīng)用程序所委派的原調(diào)用方安全 性上卜義進行身份驗證。 可以使用 Kerberos身份驗證協(xié)議,通過委派將 原調(diào)用方安全性上下文從Web應(yīng)用程序傳遞到Web服務(wù)。 可以使用 Windows身份驗證,通過 ASP.NET 進程帳戶連接到數(shù)據(jù)庫。授權(quán) Web應(yīng)用程序?qū)υ{(diào)用方執(zhí)行角色檢查,以限制對頁面的訪問。通過使用基于原調(diào)用方Windows組成員身份的.NET角色,控制對 Web服務(wù)方法
41、的訪問。安全通信可通過使用 SSL來保護在原調(diào)用方和Web應(yīng)用程序及 Web服務(wù)之間傳送的機密數(shù)據(jù)。 可通過使用IPSec來保護在 Web服務(wù)和數(shù)據(jù) 庫之間傳送的機密數(shù)據(jù)。結(jié)果圖5.6顯示了此方案的建議安全配置。文件授權(quán) (授權(quán))BTFS收眼文件提相 .NET角色 (接校1NTfS權(quán)限Insert figure: CH05 - Intranet - ASP .NET to Remote Web Service to SQL Server (Solution).gif圖5.6ASP.NET至ij Web服務(wù)到SQL Server的Intranet方案的建議安全配置安全配置步驟在開始之前,您需要查
42、看以下內(nèi)容: 在 Web服務(wù)器上配置 SSL (請參見本指南“參考”部分的“如何做:在 Web 服務(wù)器上設(shè)置 SSL”)IPSec 以便在兩 配置IPSec (請參見本指南“參考”部分的“如何做:使用 臺服務(wù)器之間安全通信”)配置 Web服務(wù)器(它駐留 Web應(yīng)用程序)配置IIS步驟更多信息禁用對Web應(yīng)用程序的虛擬根目錄的匿名訪問 對Web應(yīng)用程序的虛擬根目錄啟用Windows集成身份驗證配置 ASP.NET步驟更多信息將 ASP.NET Web應(yīng)用程序編輯 Web應(yīng)用程序的虛擬目錄下的Web.config配置為使用Windows 身份 將authentication > 元素設(shè)置為:
43、驗證authentication mode="Windows" />配置 ASP.NET Web應(yīng)用程 編輯 Web應(yīng)用程序的虛擬目錄下的Web.config序的模擬將identity > 元素設(shè)置為:identity impersonate="true"/>配置應(yīng)用程序服務(wù)器(它駐留 Web服務(wù))配置IIS步驟更多信息禁用對Web服務(wù)的虛擬根 目錄的匿名訪問對Web服務(wù)的虛擬根目錄啟用Windows集成身份驗 證配置 ASP.NET步驟更多信息將ASPNET密碼更改為一ASPNET是權(quán)限最少的本地帳戶,默認情況下用來運行個已知值A(chǔ)SP
44、.NET Web應(yīng)用程序。通過使用本地用戶和組將ASPNET帳戶的密碼改為一個已知值。編 輯位于windir%Microsoft.NETFrameworkv1.0.3705CONFIG 中的 Machine.config并重新配置 <processModel >元素的密碼屬性:默認<!- userName="machine" password="AutoGenerate"->成為<!- userName="machine" password="YourNewStrongPassword"
45、;->將 ASP.NET Web服務(wù)配置編輯Web服務(wù)的虛擬目錄下的Web.config為使用Windows身份驗證將authentication > 元素設(shè)置為:authentication mode="Windows" />確保模擬處于關(guān)閉狀態(tài)默認情況下模擬處于關(guān)閉狀態(tài);不過,請執(zhí)行如下操作,再次檢查以確保它在Web.config中是關(guān)閉的:<identity impersonate="false"/>注意,由于默認情況下禁用模擬,因此通過刪除<identity >元素可以達到同樣的效果。配置 SQL Ser
46、ver步驟更多信息在SQL Server計算機上創(chuàng)用戶名和密碼必須匹配自定義ASP.NET帳戶。建一個Windows帳戶,以便匹配用于運行 Web服務(wù)的給予該帳戶以下權(quán)限:ASP.NET進程帳戶-從網(wǎng)絡(luò)訪問此計算機-拒絕本地登錄-以批處理作業(yè)登錄配置SQL Server以便進行Windows身份驗證為自定義 ASP.NET帳戶創(chuàng)這將授予對 SQL Server的訪問權(quán)限建一個SQL Server登錄創(chuàng)建一個新數(shù)據(jù)庫用戶,并這將授予對特定數(shù)據(jù)庫的訪問權(quán)限。將登錄名映射到數(shù)據(jù)庫用戶創(chuàng)建一個新的數(shù)據(jù)庫用戶角色,并將數(shù)據(jù)庫用戶添加給該角色建立數(shù)據(jù)庫用戶角色的數(shù)據(jù)授予最少的權(quán)限庫權(quán)限配置安全通信步驟更多
47、信息在 Web服務(wù)器上配置 Web 請參見本指南“參考”部分的“如何做:在 Web服務(wù)器上 站點的SSL設(shè)置SSL”。配置 Web服務(wù)器和數(shù)據(jù)庫請參見本指南“參考” 部分的“如何做:使用IPSec以便在服務(wù)器之間的IPSec兩個服務(wù)器之間安全通信”。分析 在此方案中,IIS中的集成 Windows身份驗證是理想的選擇。這是因為,所 有用戶都使用 Windows 2000或更高版本、Internet Explorer 5.x 或更高版本, 并且都使用 Active Directory 帳戶,因此具備了使用Kerberos身份驗證協(xié)議(其支持委派)的條件。這樣,您就可以跨計算機邊界傳遞用戶的安全性
48、上 下文。 在Active Directory中,不能將最終用戶帳戶標記為“敏感,不能被委派“。在Active Directory中,必須將 Web服務(wù)器計算機帳戶標記為“可以委派其 他帳戶”。有關(guān)詳細信息,請參見本指南“參考”部分的“如何做:對Windows 2000 實現(xiàn) Kerberos 委派',。 Web服務(wù)器和應(yīng)用程序服務(wù)器上的ASP.NET作為權(quán)限最少的本地帳戶(本地ASPNET帳戶)運行,這樣一旦遭到攻擊,潛在危害被大大降低。 將Web服務(wù)和Web應(yīng)用程序配置為使用Windows身份驗證。將兩臺計算機上的IIS配置為使用集成 Windows身份驗證。 當(dāng)從 Web應(yīng)用程序
49、調(diào)用 Web服務(wù)時,默認情況下不傳遞憑據(jù)。要響應(yīng)下游 Web服務(wù)器上IIS發(fā)出的網(wǎng)絡(luò)身份驗證質(zhì)詢,必須使用憑據(jù)。必須使用以下方 法設(shè)置Web服務(wù)代理的 Credentials屬性以明確地指定這一點:wsproxy.Credentials = CredentialCache.DefaultCredentials;有關(guān)使用憑據(jù)調(diào)用Web服務(wù)的詳細信息,請參見第10章“Web服務(wù)安全世”。 將 Web應(yīng)用程序配置為使用模擬。因此,在從 Web應(yīng)用程序調(diào)用 Web服 務(wù)時,就會傳遞原調(diào)用方的安全性上下文,并且允許Web服務(wù)對原調(diào)用方進行身份驗證(和授權(quán))。 在 Web服務(wù)中使用.NET角色,基于用戶所
50、屬的Windows組(HRDept、PayrollDept 和 Employees)對用戶進彳T授權(quán)。HRDept 和 PayrollDept 的成員 可以檢索任何雇員的雇員詳細信息,而Employees組的成員僅有權(quán)檢索他們自己的詳細信息。可以使用 PrincipalPermissionAttribute 類在Web方法中加上注釋,以查詢特定的角色成員身份,如以下代碼示例所示。注意,可以用 PrincipalPermission 代替 PrincipalPermissionAttribute 。這是所有.NET 屬 性類型的共同特性。WebMethodPrincipalPermission(
51、SecurityAction.Demand,Role="DomainNameHRDept)public DataSet RetrieveEmployeeDetails()上述代碼中顯示的屬性表示,只允許DomainNameHRDept Windows組的成員調(diào)用RetrieveEmployeeDetails 方法。如果任何非成員試圖調(diào)用此方法, 就 會發(fā)生安全異常。 ASP.NET文件授權(quán)(在 Web應(yīng)用程序和 Web服務(wù)中)針對調(diào)用方在ACL中檢查在IIS元數(shù)據(jù)庫中是否將任何文件類型映射到Aspnet_isapi.dll。IIS檢查不存在ISAPI映射的靜態(tài)文件類型(例如 .jpg
52、、.gif、.htm等),同樣使 用的是附加到文件中的ACL。 因為將Web應(yīng)用程序配置為使用模擬,所以必須用 ACL來配置應(yīng)用程序本 身所訪問的資源,以便給原調(diào)用方至少授予讀取權(quán)限。 Web服務(wù)不使用模擬或委派;因此,它使用 ASP.NET進程標識來訪問本地 系統(tǒng)資源和數(shù)據(jù)庫。因此,所有調(diào)用都是使用單個進程帳戶完成的。因此, 可以使用數(shù)據(jù)庫連接池。如果數(shù)據(jù)庫不支持委派(例如 SQL Server 7.0或更 低版本),則最好選擇此方案。 對SQL Server進行的 Windows身份驗證意味著不必在Web服務(wù)器上存儲憑據(jù),也意味著不必通過網(wǎng)絡(luò)將憑據(jù)發(fā)送到SQL Server計算機。 原調(diào)用
53、方和 Web服務(wù)器之間的 SSL保護傳遞到和來自Web應(yīng)用程序的數(shù)據(jù)。 下游Web服務(wù)器和數(shù)據(jù)庫之間的IPSec保護傳遞到和來自數(shù)據(jù)庫的數(shù)據(jù)。 在數(shù)據(jù)庫服務(wù)器上使用重復(fù)的Windows帳戶(與ASP.NET進程帳戶匹配的帳戶)會導(dǎo)致增大管理負擔(dān)。密碼應(yīng)當(dāng)定期手動更新并同步。另一種方法是,考慮使用權(quán)限最少的域帳戶。有關(guān)選擇ASP.NET進程標識的 詳細信息,請參見第9章“ASP.NET安全性”。 因為基于.NET角色的安全性以 Windows組成員為基礎(chǔ),所以此解決方案 需要根據(jù)相應(yīng)層次的Windows組來匹配那些將要訪問該應(yīng)用程序的用戶類別(共享相同的安全權(quán)限)。 Kerberos委派是不受限
54、制的,因此必須嚴格控制在Web服務(wù)器上運行的應(yīng)用程序標識。為了提高安全門檻,應(yīng)從Domain Users組中刪除域帳戶以限制 域帳戶的訪問范圍,并且只從相應(yīng)的計算機提供訪問。有關(guān)詳細信息,請參 見 “Default Access Control Settings ” 白皮書。問與答數(shù)據(jù)庫不知道誰是原始調(diào)用方。我如何能創(chuàng)建一條審核記錄?審核 Web服務(wù)中的最終用戶活動,或者將用戶的標識作為數(shù)據(jù)訪問調(diào)用的參數(shù)明 確地進行傳遞。相關(guān)方案如果您需要連接到非 SQL Server數(shù)據(jù)庫,或者目前使用的是 SQL身份驗證,則必 須使用連接字符串明確地傳遞數(shù)據(jù)庫帳戶憑據(jù)。如果您這樣做,請確保安全地存儲 連接
55、字符串。有關(guān)詳細信息,請參見第 12章“數(shù)據(jù)訪問安全性”中的“安全存儲連接字符串”。ASP.NET 至U Remoting 至U SQL Server在此方案中,運行 ASP.NET頁的Web服務(wù)器安全地連接到遠程應(yīng)用程序服務(wù)器上的遠程組件。Web服務(wù)器通過使用 .NET Remoting在HTTP通道上與該組件進行通信。遠程組件由 ASP.NET駐留。圖5.7顯示了此方案。%b服務(wù)器應(yīng)用程序服務(wù)器數(shù)據(jù)庫服務(wù)器.NET RiotingInsert figure: CH05 - Intranet - ASPNET to Remote Component via .NET Remoting to SQL Server.gif圖5.7ASP.NET 至ij使用.NET Remoting 的遠程處理到 SQL Server特點 用戶使用不同類型的Web瀏覽器。 遠程組件由 ASP.NET駐留。 Web應(yīng)用程序使用 HTTP通道與遠程組件進行通信。 ASP.NET應(yīng)用程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加強幼兒園學(xué)生社會適應(yīng)能力的工作計劃
- 2025年技術(shù)員考試重難點解析
- 運動攝影社團的作品展示計劃
- 河南省商丘市名校2025年八年級數(shù)學(xué)第二學(xué)期期末綜合測試模擬試題含解析
- 學(xué)生社團工作的具體組織與安排計劃
- 財務(wù)利潤策劃計劃
- 自我激勵與持續(xù)改進的方式計劃
- 軟件設(shè)計過程中的情境導(dǎo)向?qū)W習(xí)與培養(yǎng)策略試題及答案
- 網(wǎng)絡(luò)報告與分析的試題及答案
- 法學(xué)概論法律職業(yè)素養(yǎng)要求試題及答案
- 《計算機網(wǎng)絡(luò)基礎(chǔ)》課件
- 四川省資陽市樂至縣2025年三年級數(shù)學(xué)第二學(xué)期期末達標檢測試題含解析
- 鋼結(jié)構(gòu)吊裝監(jiān)理實施細則
- 【七下HK數(shù)學(xué)】安徽省合肥市五十中學(xué)東校2023-2024學(xué)年七年級下學(xué)期期中數(shù)學(xué)試卷
- 2025年鄉(xiāng)村醫(yī)學(xué)考試思想準備試題及答案
- 藥店質(zhì)量負責(zé)人聘用合同范例二零二五年
- 保密知識培訓(xùn)課件
- 混凝土預(yù)制塊體專項施工方案
- 供電公司配網(wǎng)搶修和保修管理實施細則
- 短視頻營銷實踐試題及答案
- 2025年江蘇省南通市海安市十三校中考一模數(shù)學(xué)試題(原卷版+解析版)
評論
0/150
提交評論