
定義 DotNetKB 自定義 IIS 用戶帳戶
保證 Web 應(yīng)用程序安全性的最安全的方法是定義一個(gè)權(quán)限有限的自定義用戶,然后對(duì) IIS 進(jìn)行配置,使之能夠在執(zhí)行您的 Web 應(yīng)用程序時(shí)能作為自定義用戶運(yùn)行。這是相當(dāng)容易實(shí)現(xiàn)的,可以確保訪問(wèn)您的 Web 應(yīng)用程序的每個(gè)訪問(wèn)者都只具有您希望他們具有的權(quán)限。
第一步是生成一個(gè)新的 Windows 用戶(本例中稱為 DotNetKB),為其設(shè)置一個(gè)增強(qiáng)型密碼,然后將其添加到 Windows 來(lái)賓組 (Guest Windows Group) 中。同時(shí),確保選中 Password never expires(密碼永不過(guò)期)和 User cannot change password(用戶不能更改密碼)復(fù)選框。這樣將生成一個(gè)權(quán)限有限的用戶,在 IIS 中運(yùn)行您的 Web 應(yīng)用程序時(shí),您可以將其用作標(biāo)識(shí)(參見(jiàn)圖 7)。

圖 7:生成的權(quán)限有限的用戶
然后,調(diào)用 Internet 信息服務(wù)器管理員并選擇承載這些網(wǎng)頁(yè)的 Web 應(yīng)用程序。在本例中,您可以選擇承載前文所生成的測(cè)試頁(yè)的 Web 應(yīng)用程序 (DotNetKB_WebSite)。在樹(shù)視圖中的 Web 應(yīng)用程序上單擊鼠標(biāo)右鍵,然后從上下文相關(guān)菜單中選擇 Properties...(屬性...)。然后選擇 Directory Security(目錄安全性)并單擊該對(duì)話框 Anonymous access and authentication control(匿名訪問(wèn)和驗(yàn)證控制)部分中的 Edit(編輯)按鈕。最后,輸入自定義用戶名 (DotNetKB),取消選擇 Allow IIS to control password(允許 IIS 控制密碼)復(fù)選框,并輸入該自定義用戶帳戶的密碼。完成所有這些工作之后,單擊 OK(確定)按鈕,將這些更改保存到 IIS 配置數(shù)據(jù)庫(kù)中(參見(jiàn)圖 8)。

圖 8:Authentication Methods(驗(yàn)證方法)對(duì)話框
此時(shí),IIS 將在一個(gè)權(quán)限有限的自定義帳戶下運(yùn)行。任何訪問(wèn)者訪問(wèn)您應(yīng)用程序的網(wǎng)頁(yè)時(shí),都將以這個(gè)自定義用戶身份運(yùn)行,且只具有該自定義用戶的驗(yàn)證權(quán)限。
授權(quán) DotNetKB 用戶帳戶訪問(wèn) SQL Server
然后,您需要為該自定義用戶授予訪問(wèn)數(shù)據(jù)庫(kù) (DotNetKB) 的相應(yīng)權(quán)限。為此,您可以使用 Microsoft SQL Server 企業(yè)管理器或編寫(xiě)一個(gè)自定義腳本,以創(chuàng)建一個(gè)這樣的用戶并授予其訪問(wèn)特定對(duì)象的權(quán)限。本文介紹如何使用 SQL Server 企業(yè)管理器完成此操作。
注意:盡管 Visual Studio .NET 2003 具有與 SQL Server 兼容的許多強(qiáng)大的集成功能,但也不允許從 Visual Studio .NET 2003 中輕松管理用戶和用戶權(quán)限。在大型的組織和團(tuán)隊(duì)中,這些高級(jí)任務(wù)通常由數(shù)據(jù)庫(kù)管理員完成。
因此,啟動(dòng) SQL Server 企業(yè)管理器之后,您可以按照以下步驟將自定義用戶 (DotNetKB) 添加數(shù)據(jù)庫(kù)中(參見(jiàn)圖 9):
·在左側(cè)的樹(shù)視圖中,展開(kāi)節(jié)點(diǎn)以顯示 DotNetKB 數(shù)據(jù)庫(kù)。在我的計(jì)算機(jī)上,樹(shù)視圖的結(jié)構(gòu)如下:Console Root | SQL Server Group | (LOCAL) (Windows NT) | Databases | DotNetKB。
·然后,在數(shù)據(jù)庫(kù)下的 Users(用戶)節(jié)點(diǎn)上單擊鼠標(biāo)右鍵,并選擇 New Database User...(新建數(shù)據(jù)庫(kù)用戶...)。顯示 Database User Properties - New User(數(shù)據(jù)庫(kù)用戶屬性 - 新建用戶)對(duì)話框時(shí),從 Login name(登錄名)下拉框中選擇
·顯示 SQL Server Login Properties - New Login(SQL Server 登錄屬性 - 新建登錄)對(duì)話框時(shí),選擇 General(常規(guī))選項(xiàng)卡,并在 Name(名稱)輸入框中輸入 DotNetKB。確保選中 Windows Authentication(Windows 驗(yàn)證)單選按鈕,并從 Domain(域)下拉框中選擇自定義用戶帳戶所在的計(jì)算機(jī)的名稱。然后從 Database(數(shù)據(jù)庫(kù))下拉框中選擇 DotNetKB。
·現(xiàn)在,選擇 Databases(數(shù)據(jù)庫(kù))選項(xiàng)卡,在對(duì)話框頂部的列表中找到 DotNetKB 數(shù)據(jù)庫(kù)并選中它。然后,確保選中對(duì)話框底部列表中的 public(公共)角色。最后,單擊對(duì)話框底部的 OK(確定)按鈕,保存您的更改。

圖 9:在數(shù)據(jù)庫(kù)中添加自定義用戶
然后,您需要為 DotNetKB 數(shù)據(jù)庫(kù)中的所有存儲(chǔ)過(guò)程和自定義函數(shù)添加執(zhí)行權(quán)限。為此,您只需為 public(公共)角色授予權(quán)限。您可以將權(quán)限授予 DotNetKB 用戶,這樣將使以后的登錄(當(dāng)這些用戶獲得訪問(wèn) DotNetKB 的權(quán)限時(shí))更容易執(zhí)行存儲(chǔ)過(guò)程,而不需要為每個(gè)用戶添加新的權(quán)限。
下面是為 DotNetKB 數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程和函數(shù)授予執(zhí)行權(quán)限的步驟:
·突出顯示樹(shù)視圖中 DotNetKB 數(shù)據(jù)庫(kù)下的 Users(用戶)節(jié)點(diǎn),以顯示此數(shù)據(jù)庫(kù)的用戶列表。找到 DotNetKB 用戶并在其上雙擊,打開(kāi) Database Users Properties(數(shù)據(jù)庫(kù)用戶屬性)對(duì)話框。
·突出顯示(選中)public(公共)角色時(shí),單擊 Properties...(屬性...)按鈕,打開(kāi) Database Role Properties(數(shù)據(jù)庫(kù)角色屬性)對(duì)話框。然后單擊 Permissions...(權(quán)限...)按鈕,顯示數(shù)據(jù)庫(kù)對(duì)象和權(quán)限設(shè)置列表。
·選中對(duì)話框頂部 Database role(數(shù)據(jù)庫(kù)角色)下拉列表中的 public(公共)角色之后,找到為此數(shù)據(jù)庫(kù)定義的所有存儲(chǔ)過(guò)程和自定義函數(shù)(可能需要展開(kāi)對(duì)話框才能看到全名),并確保選中各項(xiàng)旁邊的 EXECUTE(執(zhí)行)復(fù)選框。您可能會(huì)發(fā)現(xiàn)某些系統(tǒng)對(duì)象的其他一些復(fù)選框也被選中了,請(qǐng)不要更改這些選項(xiàng)。
·最后,設(shè)置所有的 EXECUTE(執(zhí)行)權(quán)限后,單擊 OK(確定)按鈕,保存更改并關(guān)閉對(duì)話框。依次單擊 OK(確定)按鈕,直到所有對(duì)話框均被關(guān)閉。
至此,您已為 IIS 創(chuàng)建了自定義用戶,并設(shè)置了該用戶在 SQL Server 中的相應(yīng)權(quán)限。現(xiàn)在,您需要在 ASP.NET Web 項(xiàng)目中進(jìn)行一個(gè)配置更改,確保 ASP.NET 使用同一個(gè)用戶帳戶執(zhí)行對(duì) SQL Server 的所有調(diào)用。
設(shè)置您的 ASP.NET 應(yīng)用程序以模擬 DotNetKB 用戶
為 IIS 下運(yùn)行的 ASP.NET Web 應(yīng)用程序生成堅(jiān)實(shí)可靠的配置的最后一個(gè)步驟是:配置 ASP.NET Web 應(yīng)用程序,使之能夠接受來(lái)自 IIS 的 Windows 用戶標(biāo)識(shí)并能用于訪問(wèn)其他操作系統(tǒng)資源。為此,您只需在 web.config 根文件中輸入一行代碼。
修改后的 web.config 文件如下所示:
|
請(qǐng)注意,您只需添加
至此,您已生成了自定義用戶,并為其設(shè)置了訪問(wèn) SQL Server 和 IIS 的相應(yīng)權(quán)限。在下一篇《創(chuàng)建 ASP.NET 測(cè)試頁(yè)》中,我們來(lái)創(chuàng)建一些測(cè)試頁(yè),確保它能夠正常工作。從這里您可以看出一切正常。