




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