第十講 數(shù)據(jù)庫安全性_第1頁
第十講 數(shù)據(jù)庫安全性_第2頁
第十講 數(shù)據(jù)庫安全性_第3頁
第十講 數(shù)據(jù)庫安全性_第4頁
第十講 數(shù)據(jù)庫安全性_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第十講數(shù)據(jù)庫的安全性本講概述數(shù)據(jù)庫的安全性是指保護(hù)數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞。安全性是數(shù)據(jù)庫管理系統(tǒng)的重要特征。能否提供全面、完整、有效、靈活的安全機(jī)制,往往是衡量一個分布式數(shù)據(jù)庫管理系統(tǒng)是否成熟的重要標(biāo)志,也是用戶選擇合適的數(shù)據(jù)庫產(chǎn)品的一個重要判斷指標(biāo)。MicrosoftSQLServer2008系統(tǒng)提供了一整套保護(hù)數(shù)據(jù)安全的機(jī)制,包括角色、架構(gòu)、用戶、權(quán)限等手段,可以有效地實(shí)現(xiàn)對系統(tǒng)訪問和數(shù)據(jù)訪問的控制。本將全面講述MicrosoftSQLServer2008系統(tǒng)的安全管理。1、SQLServer實(shí)現(xiàn)的安全機(jī)制用戶身份驗(yàn)證存取權(quán)限第1個安全性問題:登錄到系統(tǒng)第一個安全性問題:當(dāng)用戶登錄數(shù)據(jù)庫系統(tǒng)時,如何確保只有合法的用戶才能登錄到系統(tǒng)中?這是一個最基本的安全性問題,也是數(shù)據(jù)庫管理系統(tǒng)提供的基本功能。在MicrosoftSQLServer2008系統(tǒng)中,通過身份驗(yàn)證模式和主體解決這個問題。身份驗(yàn)證模式身份驗(yàn)證模式是MicrosoftSQLServer2008系統(tǒng)驗(yàn)證客戶端和服務(wù)器之間連接的方式。MicrosoftSQLServer2008系統(tǒng)提供了兩種身份驗(yàn)證模式:Windows身份驗(yàn)證模式和混合模式。在Windows身份驗(yàn)證模式中,用戶通過

MicrosoftWindows用戶賬戶連接時,SQLServer使用Windows操作系統(tǒng)中的信息驗(yàn)證賬戶名和密碼。該模式下,用戶只要能成功登錄到Windows操作系統(tǒng),系統(tǒng)便允許用戶連接到SQLServer服務(wù)器。在混合模式中,當(dāng)客戶端連接到服務(wù)器時,既可能采取

Windows身份驗(yàn)證,也可能采取SQLServer身份驗(yàn)證。主體主體是可以請求系統(tǒng)資源的個體。例如,數(shù)據(jù)庫用戶是一種主體,可以按照自己的權(quán)限在數(shù)據(jù)庫中執(zhí)行操作和使用相應(yīng)的數(shù)據(jù)。MicrosoftSQLServer2008系統(tǒng)有多種不同的主體,不同主體之間的關(guān)系是典型的層次結(jié)構(gòu)關(guān)系,位于不同層次上的主體其在系統(tǒng)中影響的范圍也不同。位于層次比較高的主體,其作用范圍比較大;位于層次比較低的主體,其作用范圍比較小。第2個安全性問題:操作第二個安全性問題:當(dāng)用戶登錄到系統(tǒng)中,他可以執(zhí)行哪些操作、使用哪些對象和資源?這也是一個基本的安全問題,在

MicrosoftSQL

Server2008系統(tǒng)中,通過安全對象和權(quán)限設(shè)置來解決這個問題。安全對象是能夠被SQLServer控制的最小單位,是影響到SQLServer安全性的數(shù)據(jù)庫對象。通過對安全對象的控制,SQLServer能夠限制數(shù)據(jù)庫對象對資源的訪問和占用,從而控制用戶對SQLServer資源的使用。主體和安全對象的結(jié)構(gòu)示意圖第3個安全性問題:所有第三個安全性問題:數(shù)據(jù)庫中的對象由誰所有?如果是由用戶所有,那么當(dāng)用戶被刪除時,其所擁有的對象怎么辦,難道數(shù)據(jù)庫對象可以成為沒有所有者的“孤兒”嗎?在MicrosoftSQLServer2008系統(tǒng)中,這個問題是通過用戶和架構(gòu)分離來解決的。2、管理登錄名登錄賬戶屬于服務(wù)器層面,只能讓用戶登錄到SQLServer服務(wù)器,本身并不能讓用戶訪問服務(wù)器中的數(shù)據(jù)庫。訪問數(shù)據(jù)庫時,必須還要有數(shù)據(jù)庫用戶,并將數(shù)據(jù)庫用戶名與某個登錄賬號相關(guān)聯(lián)。管理登錄名包括創(chuàng)建登錄名、設(shè)置密碼策略、查看登錄名信息及修改和刪除登錄名等。在SQLServer2008系統(tǒng)中,既可以通過Transact-SQL語句完成對登錄名的管理,也可以通過MicrosoftSQLServerManagementStudio工具來完成。使用Wi在創(chuàng)建登錄名時,既可以通過將Windows登錄名映射到SQLServer系統(tǒng)中,也可以創(chuàng)建SQLServer登錄名。

ndows登錄名創(chuàng)建登錄名

在創(chuàng)建登錄名時,既可以通過將Windows登錄名映射到SQLServer系統(tǒng)中,也可以創(chuàng)建SQLServer登錄名。sa是一個默認(rèn)的SQLServer登錄名,擁有操作SQLServer系統(tǒng)的所有權(quán)限。該登錄名不能被刪除。創(chuàng)建登錄名創(chuàng)建有默認(rèn)數(shù)據(jù)庫的登錄名創(chuàng)建登錄名創(chuàng)建SQLServer登錄名創(chuàng)建登錄名密碼復(fù)雜性和密碼過期兩大特征密碼的復(fù)雜性是指通過增加更多可能的密碼數(shù)量來阻止黑客的攻擊。密碼過期策略是指如何管理密碼的使用期限。在創(chuàng)建SQLServer登錄名時,如果使用密碼過期策略,那么系統(tǒng)將提醒用戶及時更改舊密碼和登錄名,并且禁止使用過期的密碼。在使用CREATELOGIN語句創(chuàng)建SQLServer登錄名時,為了實(shí)施上述的密碼策略,可以指定HASHED、MUST_CHANGE、CHECK_EXPIRATION、CHECK_PLICY等關(guān)鍵字。密碼策略HASHED關(guān)鍵字用于描述如何處理密碼的哈希運(yùn)算。在使用CREATELOGIN語句創(chuàng)建SQLServer登錄名時,如果在PASSWORD關(guān)鍵字后面使用HASHED關(guān)鍵字,那么表示在作為密碼的字符串存儲到數(shù)據(jù)庫之前,對其進(jìn)行哈希運(yùn)算。如果在PASSWORD關(guān)鍵字后面沒有使用HASHED關(guān)鍵字,那么表示作為密碼的字符串已經(jīng)是經(jīng)過哈希運(yùn)算之后的字符串,因此在存儲到數(shù)據(jù)庫之前不再進(jìn)行哈希運(yùn)算了。MUST_CHANGE關(guān)鍵字表示在首次使用新登錄名時提示用戶輸入新密碼。CHECK_EXPIRATION關(guān)鍵字表示是否對該登錄名實(shí)施密碼過期策略。CHECK_PLICY關(guān)鍵字表示對該登錄名強(qiáng)制實(shí)施Windows密碼策略。密碼策略使用密碼策略創(chuàng)建SQLServer登錄名創(chuàng)建登錄名維護(hù)登錄名登錄名創(chuàng)建之后,可以根據(jù)需要修改登錄名的名稱、密碼、密碼策略、默認(rèn)的數(shù)據(jù)庫等信息,可以禁用或啟用該登錄名,甚至可以刪除不需要的登錄名。使用ALTERLOGIN修改登錄名3、固定服務(wù)器角色固定服務(wù)器角色是服務(wù)器級別的主體,它們的作用范圍是整個服務(wù)器。固定服務(wù)器角色已經(jīng)具備了執(zhí)行指定操作的權(quán)限,可以把其他登錄名作為成員添加到固定服務(wù)器角色中,這樣該登錄名可以繼承固定服務(wù)器角色的權(quán)限。固定服務(wù)器角色和登錄名在MicrosoftSQLServer系統(tǒng)中,可以把登錄名添加到固定服務(wù)器角色中,使登錄名作為固定服務(wù)器角色的成員繼承固定服務(wù)器角色的權(quán)限。對于登錄名來說,可以判斷其是否為某個固定服務(wù)器角色的成員。用戶可以使用sp_addsrvrolemember、

sp_helpsrvrolememeber、sp_dropsrvrolemember等存儲過程和IS_SRVROLEMEMBER函數(shù)來執(zhí)行有關(guān)固定服務(wù)器角色和登錄名之間關(guān)系的操作。如果希望指定的登錄名成為某個固定服務(wù)器角色的成員,可以使用sp_addsrvrolemember存儲過程來完成這種操作。sp_addsrvrolemember存儲過程的語法如下:

sp_addsrvrolemember'login_name','role_name'固定服務(wù)器角色和登錄名如果要查看指定的固定服務(wù)器角色的成員或所有的固定服務(wù)器角色的成員,可以使用sp_helpsrvrolemember存儲過程。如果希望判斷指定的登錄名是否為某個固定服務(wù)器角色的成員,可以使用IS_SRVROLEMEMBER函數(shù)。該函數(shù)返回值是1時,表示當(dāng)前用戶的登錄名是成員;返回0時,表示不是成員。如果希望把固定服務(wù)器角色的某個成員刪除,那么可以使用sp_dropsrvrolemember存儲過程。刪除固定服務(wù)器角色的登錄名成員,只是表示該登錄名成員不是當(dāng)前固定服務(wù)器角色的成員,但是依然作為系統(tǒng)的登錄名存在。固定服務(wù)器角色和登錄名4、管理數(shù)據(jù)庫用戶數(shù)據(jù)庫用戶是數(shù)據(jù)庫級的主體,是登錄名在數(shù)據(jù)庫中的映射,是在數(shù)據(jù)庫中執(zhí)行操作和活動的行動者。在MicrosoftSQLServer2008系統(tǒng)中,數(shù)據(jù)庫用戶不能直接擁有表、視圖等數(shù)據(jù)庫對象,而是通過架構(gòu)擁有這些對象。數(shù)據(jù)庫用戶管理包括創(chuàng)建用戶、查看用戶信息、修改用戶、刪除用戶等操作。可以使用CREATEUSER語句在指定的數(shù)據(jù)庫中創(chuàng)建用戶。由于用戶是登錄名在數(shù)據(jù)庫中的映射,因此在創(chuàng)建用戶時需要指定登錄名。創(chuàng)建登錄名的數(shù)據(jù)庫用戶4、管理數(shù)據(jù)庫用戶創(chuàng)建帶有默認(rèn)架構(gòu)的數(shù)據(jù)庫用戶4、管理數(shù)據(jù)庫用戶查看和dbo如果希望查看數(shù)據(jù)庫用戶的信息,可以使用

sys.database_principals目錄視圖。該目錄視圖包含了有關(guān)數(shù)據(jù)庫用戶的名稱、ID、類型、默認(rèn)的架構(gòu)、創(chuàng)建日期和最后修改日期等信息。dbo是數(shù)據(jù)庫中的默認(rèn)用戶。SQLServer系統(tǒng)安裝之后,dbo用戶就自動存在了。dbo用戶擁有在數(shù)據(jù)庫中操作的所有權(quán)限。默認(rèn)情況下,sa登錄名在各數(shù)據(jù)庫中對應(yīng)的用戶是dbo用戶。激活guest用戶維護(hù)用戶可以使用ALTERUSER語句修改用戶。修改用戶包括兩個方面,第一,可以修改用戶名;第二可以修改用戶的默認(rèn)架構(gòu)。修改用戶名與刪除、重建用戶是不同的。修改用戶名僅僅是名稱的改變,不是用戶與登錄名對應(yīng)關(guān)系的改變,也不是用戶與架構(gòu)關(guān)系的變化。5、管理架構(gòu)架構(gòu)是形成單個命名空間的數(shù)據(jù)庫實(shí)體的集合。架構(gòu)是數(shù)據(jù)庫級的安全對象,也是MicrosoftSQLServer2008系統(tǒng)強(qiáng)調(diào)的特點(diǎn),是數(shù)據(jù)庫對象的容器。數(shù)據(jù)庫用戶不能直接擁有表、視圖等數(shù)據(jù)庫對象,而是通過架構(gòu)擁有這些對象,這稱為架構(gòu)與用戶分離。服務(wù)器自動為非限定對象指定一個默認(rèn)的架構(gòu),從而使得用戶在訪問默認(rèn)架構(gòu)中的對象時,不需再指定架構(gòu)名稱。當(dāng)訪問非默認(rèn)架構(gòu)中的對象時,需要使用帶有架構(gòu)名的完整名稱。對象的完整名稱被稱為完全限定標(biāo)識符,其通用格式如下:

[<服務(wù)器名.>][<數(shù)據(jù)庫名.>][<架構(gòu)名.>]<數(shù)據(jù)庫對象名>管理架構(gòu)包括創(chuàng)建架構(gòu)、查看架構(gòu)的信息、修改架構(gòu)及刪除架構(gòu)等。使用CREATESCHEMA語句不僅可以創(chuàng)建架構(gòu),同時還可以創(chuàng)建該架構(gòu)所擁有的表、視圖并且可以對這些對象設(shè)置權(quán)限。創(chuàng)建架構(gòu)創(chuàng)建有明確所有者的架構(gòu)創(chuàng)建架構(gòu)創(chuàng)建架構(gòu)時同時創(chuàng)建一個表創(chuàng)建架構(gòu)查看和修改數(shù)據(jù)庫中的架構(gòu)信息如果要查看數(shù)據(jù)庫中的架構(gòu)信息,可以使用sys.schemas架構(gòu)目錄視圖。該視圖包含了數(shù)據(jù)庫中架構(gòu)的名稱、架構(gòu)的標(biāo)識符和架構(gòu)所有者的標(biāo)識符等信息。修改架構(gòu)是指將特定架構(gòu)中的對象轉(zhuǎn)移到其他架構(gòu)中??梢允褂肁LTERSCHEMA語句完成對架構(gòu)的修改。轉(zhuǎn)移對象的架構(gòu)刪除架構(gòu)6、數(shù)據(jù)庫角色數(shù)據(jù)庫角色是數(shù)據(jù)庫級別的主體,也是數(shù)據(jù)庫用戶的集合。數(shù)據(jù)庫用戶可以作為數(shù)據(jù)庫角色的成員,繼承數(shù)據(jù)庫角色的權(quán)限。數(shù)據(jù)庫管理人員可以通過管理角色的權(quán)限來管理數(shù)據(jù)庫用戶的權(quán)限。MicrosoftSQLServer2008系統(tǒng)提供了一些固定數(shù)據(jù)庫角色和public特殊角色。管理數(shù)據(jù)庫角色包括創(chuàng)建數(shù)據(jù)庫角色、添加和刪除數(shù)據(jù)庫角色成員、查看數(shù)據(jù)庫角色信息及修改和刪除角色等。創(chuàng)建帶有所有者的角色如果要為角色添加成員,可以使用sp_addrolemember存儲過程。使用該存儲過程可以為當(dāng)前數(shù)據(jù)庫中的數(shù)據(jù)庫角色添加數(shù)據(jù)庫用戶、數(shù)據(jù)庫角色、Windows登錄名和Windows組。sp_addrolemember存儲過程的使用方式如下所示:

sp_addrolemember'role_name','security_account'與sp_addrolemember存儲過程相對應(yīng)的是sp_droprolemember存儲過程,后者可以刪除指定數(shù)據(jù)庫角色中的成員??梢允褂胹ys.database_principals安全性目錄視圖查看當(dāng)前數(shù)據(jù)庫中所有數(shù)據(jù)庫角色信息,使用sys.database_role_members安全性目錄視圖查看當(dāng)前數(shù)據(jù)庫中所有數(shù)據(jù)庫角色和其成員的信息。如果要修改數(shù)據(jù)庫角色的名稱,可以使用ALTERROLE語句。如果某個角色確實(shí)不再需要了,可以使用DROPROLE語句刪除指定的角色。固定數(shù)據(jù)庫角色就像固定服務(wù)器角色一樣,固定數(shù)據(jù)庫角色也具有了預(yù)先定義好的權(quán)限。使用固定數(shù)據(jù)庫角色可以大大簡化數(shù)據(jù)庫角色權(quán)限管理工作。MicrosoftSQLServer2008系統(tǒng)提供了9個固定數(shù)據(jù)庫角色。角色名稱意義所具有的權(quán)限與功能public特殊的公共角色所有數(shù)據(jù)庫用戶都屬于它的成員,并自動繼承它的權(quán)限db_owner數(shù)據(jù)庫所有者擁有執(zhí)行數(shù)據(jù)庫所有操作的權(quán)限db_accessadmin數(shù)據(jù)庫訪問權(quán)限管理員擁有增、刪數(shù)據(jù)庫用戶、工作組及角色的權(quán)限db_ddladmin數(shù)據(jù)庫DDL管理員擁有在數(shù)據(jù)庫中運(yùn)行DDL命令的權(quán)限db_securityadmin數(shù)據(jù)庫安全管理員擁有角色成員身份管理和權(quán)限管理的權(quán)限db_backupoperator數(shù)據(jù)庫備份管理員擁有備份和恢復(fù)數(shù)據(jù)庫的權(quán)限db_datareader數(shù)據(jù)檢索管理員擁有讀取數(shù)據(jù)庫中所有表的數(shù)據(jù)的權(quán)限db_datawriter數(shù)據(jù)維護(hù)管理員擁有對數(shù)據(jù)庫所有表的數(shù)據(jù)執(zhí)行增、刪、改操作的權(quán)限db_denydatareader禁止數(shù)據(jù)檢索管理員禁止讀取數(shù)據(jù)庫中所有表的數(shù)據(jù)db_denydatawriter禁止數(shù)據(jù)維護(hù)管理員禁止對數(shù)據(jù)庫所有表的數(shù)據(jù)執(zhí)行增、刪、改操作public角色除了9個固定數(shù)據(jù)庫角色之外,MicrosoftSQLServer系統(tǒng)成功安裝之后,還有一個特殊的角色,這就是public角色。public角色有兩大特點(diǎn),第一,初始狀態(tài)時沒有權(quán)限;第二,所有的數(shù)據(jù)庫用戶都是它的成員。固定數(shù)據(jù)庫角色都有預(yù)先定義好的權(quán)限,但是不能為這些角色增加或刪除權(quán)限。雖然初始狀態(tài)下public角色沒有任何權(quán)限,但是可以為該角色授予權(quán)限。7、管理應(yīng)用程序角色應(yīng)用程序角色是一個數(shù)據(jù)庫主體,它可以使應(yīng)用程序能夠用其自身的、類似用戶的權(quán)限來運(yùn)行。在使用應(yīng)用程序時,僅允許特定用戶來訪問數(shù)據(jù)庫中的特定數(shù)據(jù),如果不使用這些特定的應(yīng)用程序連接,就無法訪問這些數(shù)據(jù)。從而實(shí)現(xiàn)安全管理的目的。與數(shù)據(jù)庫角色相比來說,應(yīng)用程序角色有3個特點(diǎn):第一,在默認(rèn)情況下該角色不包含任何成員;第二,在默認(rèn)情況下該角色是非活動的,必須激活之后才能發(fā)揮作用;第三,該角色有密碼,只有擁有應(yīng)用程序角色正確密碼的用戶才可以激活該角色。當(dāng)激活某個應(yīng)用程序角色之后,用戶會失去自己原有的權(quán)限,轉(zhuǎn)而擁有應(yīng)用程序角色的權(quán)限。創(chuàng)建應(yīng)用程序角色激活應(yīng)用程序角色修改應(yīng)用程序角色8、管理權(quán)限權(quán)限是執(zhí)行操作、訪問數(shù)據(jù)的通行證。只有擁有了針對某種安全對象的指定權(quán)限,才能對該對象執(zhí)行相應(yīng)的操作。在MicrosoftSQLServer2008系統(tǒng)中,不同的對象有不同的權(quán)限。為了更好地理解權(quán)限管理的內(nèi)容,下面從權(quán)限的類型、常用對象的權(quán)限、隱含的權(quán)限、授予權(quán)限、收回權(quán)限、否認(rèn)權(quán)限等幾個方面介紹。權(quán)限的類型在MicrosoftSQLServer2008系統(tǒng)中,不同的分類方式可以把權(quán)限分成不同的類型。如果依據(jù)權(quán)限是否預(yù)先定義,可以把權(quán)限分為預(yù)先定義的權(quán)限和預(yù)先未定義的權(quán)限。預(yù)先定義的權(quán)限是指那些系統(tǒng)安裝之后,不必通過授予權(quán)限即擁有的權(quán)限。預(yù)先未定義的權(quán)限是指那些需要經(jīng)過授權(quán)或繼承才能得到的權(quán)限。對象權(quán)限如果按照權(quán)限是否與特定的對象有關(guān),可以把權(quán)限分為針對所有對象的權(quán)限和針對特殊對象的權(quán)限。針對所有對象的權(quán)限表示這種權(quán)限可以針對SQLServer系統(tǒng)中所有的對象,例如,CONTROL權(quán)限是所有對象都有的權(quán)限。在MicrosoftSQLServer2008系統(tǒng)中,針對所有對象的權(quán)限包括CONTROL、ALTER、ALTERANY、TAKEOWNERSHIP、INPERSONATE、CREATE、

VIEWDEFINITION等。針對特殊對象的權(quán)限是指某些權(quán)限只能在指定的對象上起作用,例如INSERT可以是表的權(quán)限,但是不能是存儲過程的權(quán)限,而

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論