定義 DotNetKB 自定義 IIS 用戶帳戶
保證 Web 應(yīng)用程序安全性的最安全的方法是定義一個權(quán)限有限的自定義用戶,然后對 IIS 進行配置,使之能夠在執(zhí)行您的 Web 應(yīng)用程序時能作為自定義用戶運行。這是相當(dāng)容易實現(xiàn)的,可以確保訪問您的 Web 應(yīng)用程序的每個訪問者都只具有您希望他們具有的權(quán)限。
第一步是生成一個新的 Windows 用戶(本例中稱為 DotNetKB),為其設(shè)置一個增強型密碼,然后將其添加到 Windows 來賓組 (Guest Windows Group) 中。同時,確保選中 Password never expires(密碼永不過期)和 User cannot change password(用戶不能更改密碼)復(fù)選框。這樣將生成一個權(quán)限有限的用戶,在 IIS 中運行您的 Web 應(yīng)用程序時,您可以將其用作標(biāo)識(參見圖 1)。
然后,調(diào)用 Internet 信息服務(wù)器管理員并選擇承載這些網(wǎng)頁的 Web 應(yīng)用程序。在本例中,您可以選擇承載前文所生成的測試頁的 Web 應(yīng)用程序 (DotNetKB_WebSite)。在樹視圖中的 Web 應(yīng)用程序上單擊鼠標(biāo)右鍵,然后從上下文相關(guān)菜單中選擇 Properties...(屬性...)。然后選擇 Directory Security(目錄安全性)并單擊該對話框 Anonymous access and authentication control(匿名訪問和驗證控制)部分中的 Edit(編輯)按鈕。最后,輸入自定義用戶名 (DotNetKB),取消選擇 Allow IIS to control password(允許 IIS 控制密碼)復(fù)選框,并輸入該自定義用戶帳戶的密碼。完成所有這些工作之后,單擊 OK(確定)按鈕,將這些更改保存到 IIS 配置數(shù)據(jù)庫中(參見圖 2)。
此時,IIS 將在一個權(quán)限有限的自定義帳戶下運行。任何訪問者訪問您應(yīng)用程序的網(wǎng)頁時,都將以這個自定義用戶身份運行,且只具有該自定義用戶的驗證權(quán)限。
授權(quán) DotNetKB 用戶帳戶訪問 SQL Server
然后,您需要為該自定義用戶授予訪問數(shù)據(jù)庫 (DotNetKB) 的相應(yīng)權(quán)限。為此,您可以使用 Microsoft SQL Server 企業(yè)管理器或編寫一個自定義腳本,以創(chuàng)建一個這樣的用戶并授予其訪問特定對象的權(quán)限。本文介紹如何使用 SQL Server 企業(yè)管理器完成此操作。
注意:盡管 Visual Studio .NET 2003 具有與 SQL Server 兼容的許多強大的集成功能,但也不允許從 Visual Studio .NET 2003 中輕松管理用戶和用戶權(quán)限。在大型的組織和團隊中,這些高級任務(wù)通常由數(shù)據(jù)庫管理員完成。 因此,啟動 SQL Server 企業(yè)管理器之后,您可以按照以下步驟將自定義用戶 (DotNetKB) 添加數(shù)據(jù)庫中。
·在左側(cè)的樹視圖中,展開節(jié)點以顯示 DotNetKB 數(shù)據(jù)庫。在我的計算機上,樹視圖的結(jié)構(gòu)如下:Console Root SQL Server Group (LOCAL) (Windows NT) Databases DotNetKB。
·然后,在數(shù)據(jù)庫下的 Users(用戶)節(jié)點上單擊鼠標(biāo)右鍵,并選擇 New Database User...(新建數(shù)據(jù)庫用戶...)。顯示 Database User Properties - New User(數(shù)據(jù)庫用戶屬性 - 新建用戶)對話框時,從 Login name(登錄名)下拉框中選擇 (<新建>)。
·顯示 SQL Server Login Properties - New Login(SQL Server 登錄屬性 - 新建登錄)對話框時,選擇 General(常規(guī))選項卡,并在 Name(名稱)輸入框中輸入 DotNetKB。確保選中 Windows Authentication(Windows 驗證)單選按鈕,并從 Domain(域)下拉框中選擇自定義用戶帳戶所在的計算機的名稱。然后從 Database(數(shù)據(jù)庫)下拉框中選擇 DotNetKB。
·現(xiàn)在,選擇 Databases(數(shù)據(jù)庫)選項卡,在對話框頂部的列表中找到 DotNetKB 數(shù)據(jù)庫并選中它。然后,確保選中對話框底部列表中的 public(公共)角色。最后,單擊對話框底部的 OK(確定)按鈕,保存您的更改。
下面是為 DotNetKB 數(shù)據(jù)庫中的存儲過程和函數(shù)授予執(zhí)行權(quán)限的步驟:
·突出顯示樹視圖中 DotNetKB 數(shù)據(jù)庫下的 Users(用戶)節(jié)點,以顯示此數(shù)據(jù)庫的用戶列表。找到 DotNetKB 用戶并在其上雙擊,打開 Database Users Properties(數(shù)據(jù)庫用戶屬性)對話框。
·突出顯示(選中)public(公共)角色時,單擊 Properties...(屬性...)按鈕,打開 Database Role Properties(數(shù)據(jù)庫角色屬性)對話框。然后單擊 Permissions...(權(quán)限...)按鈕,顯示數(shù)據(jù)庫對象和權(quán)限設(shè)置列表。
·選中對話框頂部 Database role(數(shù)據(jù)庫角色)下拉列表中的 public(公共)角色之后,找到為此數(shù)據(jù)庫定義的所有存儲過程和自定義函數(shù)(可能需要展開對話框才能看到全名),并確保選中各項旁邊的 EXECUTE(執(zhí)行)復(fù)選框。您可能會發(fā)現(xiàn)某些系統(tǒng)對象的其他一些復(fù)選框也被選中了,請不要更改這些選項。
·最后,設(shè)置所有的 EXECUTE(執(zhí)行)權(quán)限后,單擊 OK(確定)按鈕,保存更改并關(guān)閉對話框。依次單擊 OK(確定)按鈕,直到所有對話框均被關(guān)閉。
至此,您已為 IIS 創(chuàng)建了自定義用戶,并設(shè)置了該用戶在 SQL Server 中的相應(yīng)權(quán)限?,F(xiàn)在,您需要在 ASP.NET Web 項目中進行一個配置更改,確保 ASP.NET 使用同一個用戶帳戶執(zhí)行對 SQL Server 的所有調(diào)用。
設(shè)置您的 ASP.NET 應(yīng)用程序以模擬 DotNetKB 用戶
為 IIS 下運行的 ASP.NET Web 應(yīng)用程序生成堅實可靠的配置的最后一個步驟是:配置 ASP.NET Web 應(yīng)用程序,使之能夠接受來自 IIS 的 Windows 用戶標(biāo)識并能用于訪問其他操作系統(tǒng)資源。為此,您只需在 web.config 根文件中輸入一行代碼。
修改后的 web.config 文件如下所示:
... 其他要素 ...
... 其他要素 ...
請注意,您只需添加 元素并將模擬特性設(shè)置為 true(真)。不必輸入用戶帳戶或密碼,因為這些信息將由 IIS 提供。也就是說,即使其他人能夠讀取您的配置文件,他們也無法確定使用哪些標(biāo)識憑據(jù)來執(zhí)行您的 Web 應(yīng)用程序。
至此,您已生成了自定義用戶,并為其設(shè)置了訪問 SQL Server 和 IIS 的相應(yīng)權(quán)限。