ASP.NET應(yīng)用程序資源訪問安全模型_.Net教程
推薦:ASP.NET 2.0中執(zhí)行數(shù)據(jù)庫操作命令之一數(shù)據(jù)庫命令執(zhí)行時使用Command對象。Command類有三種:SqlCommand、OleDbCommand與OdbcCommand。 Command對象主要用來運(yùn)行SELECT、INSERT、UPDATE或DELETE之類的SQL語句。Command對象還可以調(diào)
1、前言
ASP.NET WEB應(yīng)用程序通常屬于多層體系結(jié)構(gòu),一般從邏輯結(jié)構(gòu)上可以分為表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層;客戶端要訪問應(yīng)用程序資源,其身份認(rèn)證和授權(quán)必然要跨越多個層次。本文主要討論SP.NET應(yīng)用程序的資源訪問安全模型。
2、資源訪問標(biāo)識
WEB應(yīng)用程序?qū)ν馓峁┑慕o客戶端的典型資源包括:
Web服務(wù)器資源,如Web頁、Web服務(wù)和靜態(tài)資源(HTML頁和圖像)。
數(shù)據(jù)庫資源,如針對每個用戶的數(shù)據(jù)或是應(yīng)用程序級數(shù)據(jù)。
網(wǎng)絡(luò)資源,如遠(yuǎn)程文件系統(tǒng)資源等。
系統(tǒng)資源,如注冊表、事件日志和配置文件等。
客戶端跨越應(yīng)用程序的層來訪問這些資源,要有一個標(biāo)識流經(jīng)各個層。這個用于資源訪問的標(biāo)識包括:
原始調(diào)用者的標(biāo)識 原始調(diào)用者的標(biāo)識被獲取并且隨后流經(jīng)系統(tǒng)的每個層。
進(jìn)程標(biāo)識 本地資源訪問和下游調(diào)用是使用當(dāng)前進(jìn)程標(biāo)識進(jìn)行的。這種方式的可行性依賴于要跨越的邊界,因?yàn)檫M(jìn)程標(biāo)識必須能被目標(biāo)系統(tǒng)識別。這需要以下面兩種方式之一進(jìn)行調(diào)用:
在同一個Windows安全域中
跨Windows安全域-使用信任和域賬戶,或者在不存在信任關(guān)系的情況下使用重復(fù)的用戶名和密碼。
服務(wù)賬戶 這種方式使用一個(固定的)服務(wù)賬戶。例如
對于數(shù)據(jù)庫訪問,該服務(wù)賬戶可能由連接到數(shù)據(jù)庫的一個組件表示固定的SQL用戶名和密碼。
當(dāng)需要固定的Windows標(biāo)識時,應(yīng)使用Enterprise Services服務(wù)器應(yīng)用程序。
自定義標(biāo)識 當(dāng)沒有Windows賬戶可用時,可以使用Iprincipal和Iidentity實(shí)現(xiàn)構(gòu)造自己的標(biāo)識,可以包含安全上下文有關(guān)的詳細(xì)信息。
3、資源訪問模型
3.1 受信任子系統(tǒng)模型
如圖1所示,在這種模型中,原始調(diào)用者的安全上下文并不在操作系統(tǒng)級流經(jīng)服務(wù),而是在中間服務(wù)層使用了一個固定標(biāo)識來訪問下游的服務(wù)和資源。受信任子系統(tǒng)模型得名于這樣一個事實(shí):下游服務(wù)(可能是一個數(shù)據(jù)庫)信任上游服務(wù),讓其調(diào)用者進(jìn)行授權(quán)。圖1中的示例,數(shù)據(jù)庫信任中間層對調(diào)用者進(jìn)行的授權(quán),并只允許被授權(quán)的調(diào)用者使用受信任標(biāo)識訪問數(shù)據(jù)庫。
3.1.1 資源訪問模式
在受信任子系統(tǒng)模型中,資源訪問模式如下:
對用戶進(jìn)行驗(yàn)證
將用戶映射為角色
根據(jù)角色成員關(guān)系進(jìn)行授權(quán)
使用一個固定的受信任標(biāo)識訪問下游資源
3.1.2 固定標(biāo)識
用于訪問下游系統(tǒng)合資源管理器的固定標(biāo)識,可以使用進(jìn)程標(biāo)識,也可以使用一個預(yù)先設(shè)定的Windows賬戶-服務(wù)賬戶來提供。對于SQL Server資源管理器,這意味著對SQL Server的Windows身份驗(yàn)證。
使用進(jìn)程標(biāo)識時通常使用ASP.NET進(jìn)程標(biāo)識(默認(rèn)識ASPNET賬戶)。實(shí)際應(yīng)用時,經(jīng)常需要將ASPNET賬戶更改為一個更為安全的密碼,并在SQL Server計(jì)算機(jī)上鏡像創(chuàng)建一個與ASP.NET進(jìn)程帳戶相匹配的Windows賬戶。具體方法如下:
編輯位于%windr%\Microsoft.NET\Framework\v1.1.4322\CONFIG目錄下的Machine.config文件,將<processModel>元素上的密碼屬性重新配置,將其默認(rèn)值<!-UserName="machine" password="AutoGenerate" -->改為<!-UserName="machine" password="NewPassword" -->;或是通過ASPNET_setreg.exe工具,將用戶名和密碼保存到注冊表,配置改為:<!-enable="true" UserName="Registry:HKLM\SOFTWARE\YourAPP\processsModel\ASPNET_SETREG,userName" password="Registry:HKLM\SOFTWARE\YourAPP\processsModel\ASPNET_SETREG,password " -->
另外一些應(yīng)用程序使用指定的SQL賬戶(在連接字符串中由用戶名和密碼指定)來訪問SQL Server。在這種情況下,數(shù)據(jù)庫必須配置為SQL身份驗(yàn)證。在配置文件中保存的連接字符串需要加密保護(hù)。
3.2 模擬/委托模型
如圖2所示,使用模擬/委托模型時,一個服務(wù)或組件(通常位于邏輯業(yè)務(wù)服務(wù)層中)在訪問下一個下游服務(wù)前,使用操作系統(tǒng)模擬功能來模擬客戶端標(biāo)識。如果該服務(wù)位于同一計(jì)算機(jī)上,則使用模擬就足夠了,如果下游服務(wù)位于遠(yuǎn)程計(jì)算機(jī)則還需要使用委托,下游資源訪問的安全上下文是客戶端的上下文。
3.3 選擇資源訪問模型
兩種資源訪問模型的比較如表一所示。
受信任子系統(tǒng)模型 模擬/委托模型
審核功能 后端信任上層服務(wù),若中間層受侵害,后端資源易受攻擊。 后端服務(wù)可以對每個調(diào)用者進(jìn)行驗(yàn)證、授權(quán),安全性好。
可伸縮性 支持連接池,伸縮性好。 不支持連接池,伸縮性差。
后端ACL管理 ACL針對單個實(shí)體進(jìn)行配置,管理工作少。 每個用戶都要被授予相應(yīng)的訪問級別,后端資源和用戶數(shù)增大時,管理工作繁瑣。
技術(shù)問題 不用委托。 需要委托。大多數(shù)安全服務(wù)提供程序不支持委托。
在大多數(shù)Internet應(yīng)用程序以及大型intranet應(yīng)用程序中都會使用受信任子系統(tǒng)模型,這主要是由于這種模型能很好的支持可伸縮性。模擬/委托模型則傾向于用于小型的系統(tǒng)。對于這些應(yīng)用程序,可伸縮性不是主要的考慮因素,其主要考慮的因素是審核。
分享:.NET vs J2EE——面對SOA的荒謬與誤解·.Net與J2EE在金融行業(yè)愈來愈呈勢均力敵之勢,二者均宣稱提供了不同于對方的、聽起來很迷人的個性化應(yīng)用服務(wù)。 ·理性的IT執(zhí)行官們已經(jīng)深刻的認(rèn)識到這樣的一個事實(shí):無論是.Net
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實(shí)現(xiàn)分頁示例代碼
- 相關(guān)鏈接:
- 教程說明:
.Net教程-ASP.NET應(yīng)用程序資源訪問安全模型
。