版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第8章數(shù)據(jù)庫安全本章內容安全性概述用戶管理和角色管理架構權限管理數(shù)據(jù)加密其他安全問題28.1安全性概述安全性措施的層次數(shù)據(jù)庫管理系統(tǒng)的安全功能自主存取控制與強制存取控制SQLServer的身份驗證模式8.1.1安全性措施的層次物理層:重要的計算機系統(tǒng)必須在物理上受到保護,以防止入侵者強行進入或暗中潛入。人員層:對用戶的授權要嚴格掌握,以減少授權用戶瀆職、受賄,從而為入侵者提供訪問的機會。操作系統(tǒng)層:要進入數(shù)據(jù)庫系統(tǒng),首先要經(jīng)過操作系統(tǒng),所以如果操作系統(tǒng)的安全性能差,也會對數(shù)據(jù)庫造成威脅。網(wǎng)絡層:由于幾乎所有網(wǎng)絡上的數(shù)據(jù)庫系統(tǒng)都允許通過終端或網(wǎng)絡進行遠程訪問,所以網(wǎng)絡的安全和操作系統(tǒng)的安全一樣重要,網(wǎng)絡安全了,無疑會對數(shù)據(jù)庫的安全提供一個保障。數(shù)據(jù)庫系統(tǒng)層:數(shù)據(jù)庫系統(tǒng)應該有完善的訪問控制機制,允許查詢和允許修改有嚴格的界限,盡量保證不出現(xiàn)越權的操作。8.1.2數(shù)據(jù)庫管理系統(tǒng)的安全功能安全性控制是數(shù)據(jù)庫管理員(或系統(tǒng)管理員)的一個重要任務,他要充分利用數(shù)據(jù)庫管理系統(tǒng)的安全功能,保證數(shù)據(jù)庫和數(shù)據(jù)庫中數(shù)據(jù)的安全。訪問控制數(shù)據(jù)加密訪問控制數(shù)據(jù)庫關系管理系統(tǒng)的安全功能可以劃分為用戶管理和數(shù)據(jù)庫操作權限管理兩部分。安全系統(tǒng)的核心問題是身份識別。幾個概念用戶組:先劃分用戶,然后授予不同的權限角色:預先定義權限,然后為用戶指定角色數(shù)據(jù)加密通過限制數(shù)據(jù)丟失來增強安全性,即使在訪問控制失效的罕見情況下有惡意用戶獲取了敏感數(shù)據(jù)(如信用卡信息),如果被盜信息已加密,并且?guī)缀鯚o法破解,則此信息將毫無用處。78.1.3自主存取控制與強制存取控制對數(shù)據(jù)庫對象的操作權限或存取控制分為自主存取控制強制存取控制自主存取控制自主存取控制就是由用戶(如數(shù)據(jù)庫管理員)自主控制對數(shù)據(jù)庫對象的操作權限,哪些用戶可以對哪些對象、進行哪些操作,完全取決于用戶之間的授權。目前大多數(shù)數(shù)據(jù)庫管理系統(tǒng)都支持的是自主存取控制方式。強制存取控制強制存取控制的思路是,為每一個數(shù)據(jù)庫對象標以一定的密級(Classificationlevel),對每一個用戶都確定一個許可級別(Clearancelevel)。如密級可以分為絕密、機密、保密、秘密、公開等若干級別;而用戶可以劃分為一級用戶(可以操作所有數(shù)據(jù))、二級用戶(可以操作除絕密以外的所有數(shù)據(jù))、三級用戶等。強制存取控制本質上具有分層的特點,通常具有靜態(tài)的、嚴格的分層結構,與現(xiàn)實世界的層次管理也相吻合。這種強制存取控制特別適合層次嚴明的軍方和政府等數(shù)據(jù)管理。SQLServer的身份驗證模式SQLServer在安裝過程中需要為DBMS選擇身份驗證模式,可供選擇的模式有Windows身份驗證模式:啟用Windows身份驗證禁用SQLServer標準身份驗證混合模式啟用Windows身份驗證啟用SQLServer標準身份驗證1. Windows身份驗證模式Windows身份驗證模式也稱為集成身份驗證模式,用戶通過Windows操作系統(tǒng)的身份驗證后則自動進行SQLServer身份驗證。SQLServer通過使用網(wǎng)絡用戶的安全特性控制登錄訪問,以實現(xiàn)與Windows的登錄安全集成。集成模式是一種信任連接模式,即用戶只要登錄到Windows,就可以通過信任連接直接連接到SQLServer。122. 混合身份驗證模式13SQLServer身份驗證的缺點如果用戶是具有Windows登錄名和密碼的Windows域用戶,則還必須提供另一個用于連接SQLServer的登錄名和密碼。記住多個登錄名和密碼對于許多用戶而言也是一種困難,每次連接到數(shù)據(jù)庫時都必須再次進行身份驗證也十分煩人。SQLServer身份驗證無法使用某些安全協(xié)議(如Kerberos安全協(xié)議),也不能使用Windows提供的其他密碼策略,總之不能與操作系統(tǒng)的安全措施充分融合。14SQLServer身份驗證的優(yōu)點允許SQLServer支持那些需要進行標準身份驗證的舊版應用程序和由第三方提供的應用程序。允許SQLServer支持具有混合操作系統(tǒng)的環(huán)境,在這種環(huán)境中并不是所有用戶均由Windows域進行驗證。允許用戶從未知的或不可信的域進行連接。允許SQLServer支持基于Web的應用程序,在這些應用程序中用戶可創(chuàng)建自己的標識。允許軟件開發(fā)人員通過使用基于已知的預設SQLServer登錄名的復雜權限層次結構來分發(fā)應用程序。158.2用戶管理和角色管理登錄用戶和數(shù)據(jù)庫用戶登錄用戶管理數(shù)據(jù)庫用戶的管理數(shù)據(jù)庫用戶的分類角色的概念及SQLServer的預定義角色數(shù)據(jù)庫管理員用戶角色管理8.2.1登錄用戶和數(shù)據(jù)庫用戶一個用戶需要首先是一個數(shù)據(jù)庫系統(tǒng)的登錄用戶,然后才可以訪問某一個具體的數(shù)據(jù)庫。一個登錄用戶只要登錄成功,就可以直接訪問被授權使用的數(shù)據(jù)庫。一個登錄用戶可以是多個數(shù)據(jù)庫的用戶。登錄用戶由系統(tǒng)管理員管理,而數(shù)據(jù)庫用戶可以由數(shù)據(jù)庫管理員管理(當然也可以由系統(tǒng)管理員代管)。8.2.2登錄用戶管理建立新的登錄用戶修改登錄用戶的屬性刪除登錄用戶181. 建立登錄用戶創(chuàng)建登錄用戶命令的基本格式是:CREATELOGINlogin_name{WITHPASSWORD='password'[MUST_CHANGE][,DEFAULT_DATABASE=database][,CHECK_EXPIRATION={ON|OFF}]}19例8-1:建立一個用戶名為zhang、口令為mis的登錄用戶。CREATELOGINzhangWITHPASSWORD='mis'20例8-2:建立一個用戶名為wang、口令為mis315的登錄用戶,并且在第一次登錄時強制必須修改口令。CREATELOGINwangWITHPASSWORD='mis315'MUST_CHANGE,CHECK_EXPIRATION=ON21例8-3:建立一個用戶名為huang、口令為mis、默認數(shù)據(jù)庫是“倉儲訂貨”的登錄用戶。CREATELOGINhuangWITHPASSWORD='mis',DEFAULT_DATABASE=倉儲訂貨22注意:這里雖然指定了用戶huang的默認數(shù)據(jù)庫是“倉儲訂貨”,但是在用戶huang沒有成為該數(shù)據(jù)庫的正式用戶之前,使用該登錄名進行系統(tǒng)登錄將會出錯。一個新的SQLServer登錄用戶起初幾乎沒有操作數(shù)據(jù)庫的權限,他的權限需要由系統(tǒng)管理員用戶或數(shù)據(jù)庫管理員用戶來授予。密碼用來確認一個登錄用戶名是否正確,只有通過登錄名和密碼的驗證才可以登錄到SQLServer并連接到數(shù)據(jù)庫。232. 修改登錄用戶的屬性修改登錄用戶命令的基本格式是:ALTERLOGINlogin_name{{ENABLE|DISABLE}|WITHPASSWORD='password'[,.OLD_PASSWORD='oldpassword'][,DEFAULT_DATABASE=database][,NAME=login_name]}24例8-4:假設用戶zhang外出度假,暫時禁止該用戶登錄。ALTERLOGINzhangDISABLE25例8-5:假設用戶zhang度假歸來開始上班,重新允許該用戶登錄。ALTERLOGINzhangENABLE26例8-6:由系統(tǒng)管理員將用戶zhang的口令修改為bistu。ALTERLOGINzhangWITHPASSWORD='bistu'27這個例子是系統(tǒng)管理員強制修改口令,因此不需要知道舊口令。用戶自己也可以使用ALTERLOGIN命令修改口令,如例8-8。登錄密碼在數(shù)據(jù)庫中是以加密形式存儲的,任何人都不可以查詢登錄密碼(包括系統(tǒng)管理員)。因此,用戶要牢記自己的登錄密碼,一旦遺忘,可以請系統(tǒng)管理員按如上方式重新設置登錄密碼。作為系統(tǒng)管理員絕對不可以忘記自己的登錄密碼,一旦系統(tǒng)管理員將登錄密碼遺忘,就只好重新安裝SQLServer了。任何用戶都要牢記并保管好登錄密碼,密碼不可以隨便告知他人,一旦密碼泄密,你的數(shù)據(jù)很可能就要遭到侵害了。例8-7:將用戶zhang的登錄名修改為chang(注意口令沒有改變)。ALTERLOGINzhangWITHNAME=chang28例8-8:用戶chang在登錄后自己將口令修改為biti(此時需要提供舊的口令,假設舊口令是bistu)。ALTERLOGINchangWITHPASSWORD='biti'OLD_PASSWORD='bistu'29普通用戶使用ALTERLOGIN命令只能象如上方式修改自己的口令。而例8-2建立的用戶wang由于規(guī)定了在第一次登錄時強制必須修改口令,因此在第一次登錄時將會出現(xiàn)如圖8-2所示的界面強制用戶修改口令。3. 刪除登錄用戶刪除登錄用戶命令的基本格式是:DROPLOGINlogin_name30只有系統(tǒng)管理員或Securityadmin角色的用戶可以使用DROPLOGIN命令刪除登錄用戶。例8-9:刪除登錄用戶名為wang的用戶。DROPLOGINwang318.2.3數(shù)據(jù)庫用戶的管理建立數(shù)據(jù)庫用戶修改數(shù)據(jù)庫用戶的屬性刪除數(shù)據(jù)庫用戶321. 建立數(shù)據(jù)庫用戶建立新數(shù)據(jù)庫用戶的命令是CREATEUSER,基本格式是:CREATEUSERuser_name[LOGINlogin_name][WITHDEFAULT_SCHEMA=schema_name]33例8-10:指定登錄用戶chang為“倉儲訂貨”數(shù)據(jù)庫的用戶,并指定“倉儲”架構為默認架構。首先以系統(tǒng)管理員或數(shù)據(jù)庫管理員身份登錄,然后執(zhí)行如下命令:USE倉儲訂貨CREATEUSERchangWITHDEFAULT_SCHEMA=倉儲34這里USE命令指定要使用的數(shù)據(jù)庫;CREATEUSER命令省略了LOGIN短語,則說明登錄名和數(shù)據(jù)庫用戶名是一致的;此時用戶chang已經(jīng)成為“倉儲訂貨”數(shù)據(jù)庫的用戶,但是在沒有得到操作授權之前該用戶在“倉儲訂貨”數(shù)據(jù)庫不能完成任何查詢和操作;默認架構是“倉儲”,在查詢和操作該架構下的對象時可以省略架構名。例8-11:指定登錄用戶huang為“倉儲訂貨”數(shù)據(jù)庫的用戶,并指定“訂貨”架構為默認架構。CREATEUSERhuangWITHDEFAULT_SCHEMA=訂貨35用戶huang登錄后默認數(shù)據(jù)庫是?用戶chang登錄后默認數(shù)據(jù)庫是?2. 修改數(shù)據(jù)庫用戶的屬性修改已有用戶的命令是ALTERUSER,基本格式是:ALTERUSERuser_nameWITH{NAME=new_user_name|DEFAULT_SCHEMA=schema_name}[,...n]36該命令可以修改數(shù)據(jù)庫用戶名、可以修改數(shù)據(jù)庫用戶的默認架構。例8-12:將數(shù)據(jù)庫用戶chang的名稱改為zy_zhang,默認架構改為“基礎”。在以系統(tǒng)管理員或數(shù)據(jù)庫管理員身份登錄,并且當前數(shù)據(jù)庫是“倉儲訂貨”,則可以執(zhí)行如下命令完成操作:ALTERUSERchangWITHNAME=zy_zhang,DEFAULT_SCHEMA=基礎373. 刪除數(shù)據(jù)庫用戶刪除數(shù)據(jù)庫用戶的命令是:DROPUSERuser_name38例8-13:取消zy_zhang的當前數(shù)據(jù)庫用戶資格,即刪除該用戶。DROPUSERzy_zhang39刪除數(shù)據(jù)庫用戶不影響他的登錄身份,即名稱為chang的登錄用戶仍然存在。8.2.4數(shù)據(jù)庫用戶的分類系統(tǒng)管理員用戶數(shù)據(jù)庫管理員用戶數(shù)據(jù)庫對象用戶數(shù)據(jù)庫訪問用戶8.2.5角色的概念及SQLServer的預定義角色基本概念public角色系統(tǒng)預定義角色數(shù)據(jù)庫預定義角色411. 基本概念角色與用戶SQLServer有3類預定義的角色public角色系統(tǒng)預定義角色數(shù)據(jù)庫預定義角色422. public角色public角色是一個特殊的數(shù)據(jù)庫角色,每個數(shù)據(jù)庫用戶都是該角色的成員。public角色具有如下特點:public角色自動獲得數(shù)據(jù)庫中用戶的所有默認權限;不需要、也無法將用戶指派給public角色,因為默認情況下所有用戶都屬于該角色;每個數(shù)據(jù)庫(包括所有系統(tǒng)數(shù)據(jù)庫和所有用戶數(shù)據(jù)庫)都有public角色;不可以刪除public角色。433.系統(tǒng)預定義角色sysadmin:具有系統(tǒng)管理員全部權限的角色。serveradmin:負責配置數(shù)據(jù)庫服務器的設置。setupadmin:負責添加和刪除鏈接的服務器。securityadmin:負責管理服務器的登錄。processadmin:負責管理在SQLServer實例中運行的進程。dbcreator:負責創(chuàng)建和改變數(shù)據(jù)庫。bulkadmin:可以執(zhí)行BULKINSERT語句(數(shù)據(jù)庫數(shù)據(jù)的裝載)。為用戶指定系統(tǒng)預定義角色sp_addsrvrolemember[@loginame=]'login',[@rolename=]'role'45例8-14:假設有用戶chang,指定該用戶為securityadmin角色。sp_addsrvrolemember@loginame='chang',@rolename='securityadmin'或sp_addsrvrolemember'chang','securityadmin'46取消用戶的系統(tǒng)預定義角色sp_dropsrvrolemember[@loginame=]'login',[@rolename=]'role'47例8-15:取消用戶chang的securityadmin系統(tǒng)角色成員資格。sp_dropsrvrolemember'chang','securityadmin'484.數(shù)據(jù)庫預定義角色db_owner:在數(shù)據(jù)庫中有全部權限,即具有數(shù)據(jù)庫管理員全部權限的角色。db_accessadmin:負責數(shù)據(jù)庫用戶的管理。db_securityadmin:負責數(shù)據(jù)庫的安全管理,如負責權限管理、角色和角色成員資格管理等。db_backupoperator:主要負責數(shù)據(jù)庫的備份。
db_ddladmin:主要負責數(shù)據(jù)庫的完整性和一致性檢查及管理。db_datareader:可以查詢數(shù)據(jù)庫中任何用戶表中的所有數(shù)據(jù)。db_datawriter:可以更改數(shù)據(jù)庫中任何用戶表中的所有數(shù)據(jù)。db_denydatareader:不能查詢數(shù)據(jù)庫中任何用戶表中的任何數(shù)據(jù)。db_denydatawriter:不能更改數(shù)據(jù)庫中任何用戶表中的任何數(shù)據(jù)。為用戶指定數(shù)據(jù)庫預定義角色sp_addrolemember[@rolename=]'role',[@loginame=]'login'注意:指定數(shù)據(jù)庫角色的成員和指定系統(tǒng)角色成員使用的存儲過程是不一樣的,并且它們的參數(shù)順序正好相反。50例8-16:假設當前數(shù)據(jù)庫(倉儲訂貨)有用戶huang,指定該用戶為db_securityadmin角色。sp_addrolemember'db_securityadmin','huang'51取消用戶的數(shù)據(jù)庫預定義角色sp_droprolemember[@rolename=]'role',[@loginame=]'login'52例8-17:取消用戶huang的db_securityadmin數(shù)據(jù)庫角色成員資格。sp_droprolemember'db_securityadmin','huang'538.2.6數(shù)據(jù)庫管理員用戶數(shù)據(jù)庫管理員是由系統(tǒng)管理員授權產(chǎn)生的,通常有如下兩種方式:一是用戶被授權可以執(zhí)行CREATEDATABASE命令(參見8.3.2)或被指定系統(tǒng)預定義角色dbcreator,這時該用戶可以建立數(shù)據(jù)庫、并負責自己所建立數(shù)據(jù)庫的全部管理工作,因此自然履行數(shù)據(jù)庫管理員的職責;二是用戶可以被指定為已有數(shù)據(jù)庫的db_owner角色,該角色為數(shù)據(jù)庫管理員角色。54例8-18:指定用戶chang為dbcreator角色。sp_addsrvrolemember@loginame='chang',@rolename='dbcreator’dbcreator是系統(tǒng)預定義角色,因此需要使用系統(tǒng)過程sp_addsrvrolemember來指定角色。此命令成功執(zhí)行后用戶chang將成為角色dbcreator的成員,將可以執(zhí)行CREATEDATABASE命令建立數(shù)據(jù)庫,并在自己建立的數(shù)據(jù)庫上擁有全部權限。一個用戶可能不是某個數(shù)據(jù)庫的建立者,也可以事后被指定為數(shù)據(jù)庫管理員。在數(shù)據(jù)庫的預定義角色中db_owner即為數(shù)據(jù)庫管理員角色。55例8-19:假設用戶huang已經(jīng)是“倉儲訂貨”數(shù)據(jù)庫的用戶,指定該用戶為“倉儲訂貨”數(shù)據(jù)庫的數(shù)據(jù)庫管理員。USE倉儲訂貨sp_addrolemember@membername='huang',@rolename='db_owner‘db_owner為數(shù)據(jù)庫角色,所以使用系統(tǒng)過程sp_addrolemember來指定角色。此命令成功執(zhí)行后用戶huang將成為“倉儲訂貨”數(shù)據(jù)庫的管理員,將在該數(shù)據(jù)庫上擁有全部權限,并負責該數(shù)據(jù)庫的管理。568.2.7角色管理定義角色(CREATEROLE)指定用戶角色(sp_addrolemember)取消用戶角色(sp_droprolemember)修改角色名稱(ALTERROLE)刪除角色(DROPROLE)571. 定義角色定義角色命令的基本格式是:CREATEROLErole_name[AUTHORIZATIONowner_name]其中role_name是定義的新的角色名稱,通常角色由定義角色的用戶所有(即負責管理);如果用AUTHORIZATION短語指定了owner_name(可以是用戶或角色,需要擁有一定權限),則owner_name將擁有該角色。初始定義的角色沒有任何權限,需要由數(shù)據(jù)庫管理員或相關用戶為角色進行授權(見8.3)并進行角色的管理。58例8-20:假設用戶huang是“倉儲訂貨”數(shù)據(jù)庫的數(shù)據(jù)庫管理員,由其建立角色manager。CREATEROLEmanager592. 為用戶指定角色sp_addrolemember603. 取消用戶的角色sp_droprolemember一個用戶被取消某種角色,則意味著該用戶不再擁有被取消角色的權限。注意:任何用戶不能取消public角色。614. 修改角色名稱修改角色名稱命令的基本格式是:ALTERROLErole_nameWITHNAME=new_name該命令將舊的角色名稱role_name更改為新的角色名稱new_name。該命令只是更改名稱,不會影響所有者、權限和成員。62例8-21:將角色manager的名稱修改為orders_manager。ALTERROLEmanagerWITHNAME=orders_manager635. 刪除角色刪除角色命令的格式是:DROPROLErole_name注意:不能刪除仍然帶有用戶的角色,因此在刪除角色前需要首先解除角色的所有成員。另外也不能刪除SQLServer預定義的角色。648.3架構每個架構都是獨立于創(chuàng)建它的數(shù)據(jù)庫用戶存在的不同命名空間,它是個邏輯概念,是對象的容器。任何用戶都可以擁有架構,并且架構所有權可以轉移。65使用架構的特點架構的所有權和架構范圍內的安全對象可以轉移。對象可以在架構之間移動。每個架構可以包含由多個數(shù)據(jù)庫用戶創(chuàng)建的對象。多個數(shù)據(jù)庫用戶可以共享一個默認的架構。與早期版本相比,對架構及架構中包含的安全對象的權限的管理更加精細。架構可以由任何數(shù)據(jù)庫主體擁有(角色或用戶)??梢詣h除數(shù)據(jù)庫用戶而不刪除相應架構中的對象。668.4權限管理概述架構權限管理對象權限的管理語句權限的管理查詢授權情況禁止權限所有權鏈接角色與存取控制67管理權限包括授予或廢除執(zhí)行以下活動的用戶權限創(chuàng)建數(shù)據(jù)庫或數(shù)據(jù)庫中的項目(語句權限)。處理數(shù)據(jù)和執(zhí)行過程(對象權限或架構權限)。授予系統(tǒng)預定義角色的權限(暗示性權限)。68授予權限的命令是GRANT,收回授權的命令是REVOKE,禁止從角色繼承權限的命令是DENY。8.4.2架構權限管理架構權限的授予架構權限的收回轉移架構所有權在架構之間移動對象691. 架構權限的授予GRANTpermission[,...n]ONSCHEMA::schema_nameTOdatabase_principal[,...n][WITHGRANTOPTION][ASgranting_principal]70permission:指定可授予架構的權限,它包括CONTROL、ALTER、EXECUTE、INSERT、DELETE、UPDATE、SELECT、REFERENCES等例8-22:將對架構“倉儲”的INSERT權限授予qiao。GRANTINSERTONSCHEMA::倉儲TOqiao71例8-23:將對架構“訂貨”的SELECT權限授予數(shù)據(jù)庫用戶tang。GRANTSELECTONSCHEMA::訂貨TOtang72例8-24:授予用戶tang在“倉儲”架構上的CONTROL權限。GRANTCONTROLONSCHEMA::倉儲TOtang73注意這里的CONTROL權限并不是控制權限或所有權限,當用戶獲得創(chuàng)建對象的權限時,只有同時擁有架構的CONTROL權限才能夠創(chuàng)建對象,參見8.4.4。2. 架構權限的收回REVOKE[GRANTOPTIONFOR]permission[,...n]ONSCHEMA::schema_nameFROMdatabase_principal[,...n][CASCADE][ASrevoking_principal]74例8-25:收回用戶qiao在架構“倉儲”上的INSERT權限。REVOKEINSERTONSCHEMA::倉儲FROMqiao753.轉移架構所有權ALTERAUTHORIZATIONONentity_nameTO{SCHEMAOWNER|principal_name}76例8-26:將器件表的所有權傳遞給用戶wu。ALTERAUTHORIZATIONON基礎.器件TOwu77例8-27:將訂購單的所有權傳遞給所屬架構的所有者。ALTERAUTHORIZATIONON訂貨.訂購單TOSCHEMAOWNER78例8-28:將“基礎”架構的所有權傳遞給用戶tang。ALTERAUTHORIZATIONONSCHEMA::基礎TOtang794.在架構之間移動對象ALTERSCHEMAschema_nameTRANSFERsecurable_name80將對象移入新架構時,將刪除與該對象關聯(lián)的全部權限。如果已顯式設置該對象的所有者,則該所有者保持不變。如果該對象的所有者已設置為SCHEMAOWNER,則該所有者將保持為SCHEMAOWNER;但移動之后,SCHEMAOWNER將解析為新架構的所有者。從另一個架構中傳輸對象,當前用戶必須擁有對該對象(非架構)的CONTROL權限,并擁有對目標架構的ALTER權限。例8-29:將器件表從基礎架構移動到倉儲架構。ALTERSCHEMA倉儲TRANSFER基礎.器件818.4.3對象權限的管理處理數(shù)據(jù)或執(zhí)行存儲過程時需要有相應對象的操作或執(zhí)行權限,這些權限可以劃分為:SELECT、INSERT、UPDATE和DELETE語句權限,它們可以應用到整個表或視圖上。SELECT和UPDATE語句權限,它們可以有選擇性地應用到表或視圖中的某些列上。INSERT和DELETE語句權限,它們會影響整行,因此只可以應用到表或視圖中,而不能應用到單個列上。EXECUTE語句權限,即執(zhí)行存儲過程和函數(shù)的權限。821. 授予對象操作權限GRANT{ALL[PRIVILEGES]|permission_list}{[(column_list)]ON{table|view}|ON{table|view}[(column_list)]|ONstored_procedure|ONuser_defined_function}TOname_list[WITHGRANTOPTION][ASrole]83P222例8-30:在倉儲訂貨數(shù)據(jù)庫中建立角色role_op,并將用戶qiao指定為改角色的成員。USE倉儲訂貨CREATEROLErole_opsp_addrolemember'role_op','qiao'84例8-31:將倉庫表的查詢、插入、修改和刪除的權限授予角色role_op。GRANTSELECT,INSERT,UPDATE,DELETEON倉儲.倉庫TOrole_op85例8-32:將供應商表的查詢、插入、修改和刪除的權限授予角色role_op,并允許該角色的成員轉授這些權限。GRANTSELECT,INSERT,UPDATE,DELETEON訂貨.供應商TOrole_opWITHGRANTOPTION86例8-33:用戶qiao將對供應商表的查詢權限、對供應商表的供應商名和地址的修改權限授予用戶wu。先以用戶qiao身份登錄,然后執(zhí)行如下命令:USE倉儲訂貨GRANTSELECT,UPDATE(供應商名,地址)ON訂貨.供應商TOwuASrole_op87思考題用戶qiao能否成功執(zhí)行類似的如下命令,為什么:GRANTSELECT,UPDATE(城市,面積)ON倉儲.倉庫TOwuASrole_op882.收回對象操作權限REVOKE[GRANTOPTIONFOR]{ALL[PRIVILEGES]|permission_list}{[(column_list)]ON{table|view}|ON{table|view}[(column_list)]|ONstored_procedure|ONuser_defined_function}FROMname_list[CASCADE][AS{group|role}]89P223GRANTOPTIONFOR要與CASCADE一同使用例8-34:從用戶wu收回對供應商表的供應商名的修改權限。REVOKEUPDATE(供應商名)ON訂貨.供應商FROMwu90練習以用戶wu的身份對供應商表進行查詢、并分別對供應商表的供應商名和地址進行修改,驗證該用戶的權限。91例8-35:從角色role_op收回對供應商表刪除權限的轉授權限REVOKEGRANTOPTIONFORDELETEON訂貨.供應商FROMrole_opCASCADE92練習以用戶qiao的身份(角色role_op的成員),對供應商表實施刪除操作、將對供應商表的刪除權限轉授給其他用戶,驗證該用戶的權限。93例8-36:從角色role_op收回對供應商表UPDATE權限及其WITHGRANTOPTION權限,以及由于WITHGRANTOPTION而產(chǎn)生的所有授權REVOKEUPDATEON訂貨.供應商(地址)FROMrole_opCASCADE94練習分別以用戶qiao和wu的身份對供應商表的地址實施更新操作(qiao是角色role_op的成員,而wu的權限來自qiao)。958.4.4語句權限的管理授予語句權限收回語句權限961. 授予語句權限在SQLServer中執(zhí)行語句的權限包括:BACKUPDATABASEBACKUPLOGCREATEDATABASECREATEDEFAULTCREATEFUNCTIONCREATEPROCEDURECREATERULECREATETABLECREATEVIEW971. 授予語句權限GRANT{ALL|statement_list}TOname_list98假設“倉儲訂貨”數(shù)據(jù)庫有用戶tang、qiao、wu等,并據(jù)此完成下面實例的操作。
例8-37:數(shù)據(jù)庫管理員授予用戶名為tang的用戶CREATETABLE的權限。GRANTCREATETABLETOtang99練習以用戶tang的身份在“倉儲”架構下執(zhí)行CREATETABLE命令創(chuàng)建表;以用戶tang的身份在“訂貨”架構下執(zhí)行CREATETABLE命令創(chuàng)建表。
結果如何?1002. 收回語句權限REVOKE{ALL|statement_list}FROMname_list101例8-38:從用戶tang收回創(chuàng)建表的權限。REVOKECREATETABLEFROMtang1028.4.5查詢授權情況使用系統(tǒng)存儲過程sp_helprotect查詢授權的情況103一個用戶的權限包括?自己固有的權限其他用戶直接授予的權限作為角色成員繼承到的權限8.4.6禁止權限禁止從角色繼承的權限不禁止從其他用戶獲得的直接授權8.4.6禁止權限禁止架構權限的命令格式如下:DENYpermission[,...n]}ONSCHEMA::schema_nameTOdatabase_principal[,...n][CASCADE][ASdenying_principal]禁止對象權限的命令格式如下:DENY{ALL[PRIVILEGES]|permission_list}{[(column_list)]ON{table|view}|ON{table|view}[(column_list)]|ONstored_procedure|ONuser_defined_function}TOname_list[CASCADE]禁止語句權限的命令格式如下:DENY{ALL|statement_list}TOname_list1068.4.6禁止權限通過禁止用戶或角色的權限可以:刪除以前授予用戶、組或角色的權限;停用從其他角色繼承的權限;確保用戶、組或角色將來不繼承更高級別的組或角色的權限。107例8-39:禁止用戶wu使用CREATETABLE語句,除非給他顯式授予權限。DENYCREATETABLETOwu108例8-40:禁止用戶qiao和tang對“倉庫”表進行修改(UPDATE)和刪除(DELETE)操作,除非以后用GRANT語句直接給他們授予權限相應權限。DENYUPDATE,DELETEON倉儲.倉庫TOqiao,tang1098.4.7所有權鏈接首先假設:1.用戶U1對S1架構擁有ALTER權限;2.U1用戶被拒絕訪問架構S2中的表T1;3.S1架構和S2架構由同一所有者擁有。110越權情景1U1用戶對數(shù)據(jù)庫擁有CREATEPROCEDURE權限,并對S1架構擁有EXECUTE權限。因此,U1用戶可以創(chuàng)建一個存儲過程,然后在該存儲過程中訪問被拒絕訪問的表T1。111越權情景2U1用戶對數(shù)據(jù)庫擁有CREATESYNONYM(創(chuàng)建同義詞)權限,并對S1架構擁有SELECT權限。因此,U1用戶可以在S1架構中為被拒絕的表T1創(chuàng)建同義詞,然后使用該同義詞訪問被拒絕的表T1。112越權情景3U1用戶對數(shù)據(jù)庫擁有CREATEVIEW權限,并對S1架構擁有SELECT權限。因此,U1用戶可以在S1架構中創(chuàng)建視圖,以便從被拒絕訪問的表T1中查詢數(shù)據(jù),然后使用該視圖訪問被拒絕的訪問的表T1。113安全管理的復雜性管理不當一些用戶就會通過隱式方式“翻墻”完成一些未經(jīng)授權的操作,可能會危及數(shù)據(jù)庫的安全。8.4.8角色與存取控制對用戶和用戶組的權限管理是典型的自主存取控制方式;而改用角色的概念,即可以從自主存取控制的角度管理用戶權限,又可以間接實現(xiàn)強制存取控制的功能。按層次定義角色和管理權限。115如何實現(xiàn)按層次定義角色和管理權限?8.5數(shù)據(jù)加密117明文密文密鑰加密算法解密算法對稱密鑰非對稱密鑰SQLServer支持對稱加密和非對稱加密。加密的一般步驟1.創(chuàng)建數(shù)據(jù)庫主密鑰;2.創(chuàng)建用于加密的密鑰;3.打開密鑰;4.操作(如插入或修改)、同時對列數(shù)據(jù)進行加密(使用加密函數(shù)——密鑰和列數(shù)據(jù)做參數(shù))。118解密數(shù)據(jù)列的一般步驟1.打開密鑰;2.使用密鑰訪問被加密的數(shù)據(jù)列。119加密例子:USEAdventureWorksGO--創(chuàng)建數(shù)據(jù)庫主密鑰IFNOTEXISTS(SELECT*FROMsys.symmetric_keysWHEREsymmetric_key_id=101)CREATEMASTERKEYENCRYPTIONBYPASSWORD='23987hxJKL969#ghf0%94467GRkjg5k3fd117r$$#1946kcj$n44nhdlj'GO--創(chuàng)建加密證書CREATECERTIFICATEHumanResources037WITHSUBJECT='EmployeeSocialSecurityNumbers';GO120--創(chuàng)建對稱密鑰CREATESYMMETRICKEYSSN_Key_01WITHALGORITHM=A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)企業(yè)采購合同模板
- 公寓出租租房合同范例
- 冷鏈勞務服務合同范例
- 大望路租房合同范例
- 廠房免租合同范例
- 寫真退款合同范例
- 工廠物料出售合同范例
- 委托貼牌灌裝合同范例
- 廢舊瓷罐出售合同范例
- 快遞裝卸合同模板
- 芯片設計基礎知識題庫100道及答案(完整版)
- 2025屆高考語文一輪復習:文言文概括和分析 課件
- 年產(chǎn)10萬套新能源車電池托盤項目可行性研究報告寫作模板-申批備案
- 《大學美育》 課件 4.模塊五 第二十四章 時空綜合的影視藝術之美
- 2022-2023學年廣東省廣州市天河區(qū)六年級(上)期末數(shù)學試卷(含答案)
- grc墻體拆除施工方案
- 2024年全國職業(yè)院校技能大賽高職組(智慧物流賽項)考試題庫(含答案)
- 2024年新人教版七年級上冊歷史 第11課 西漢建立和“文景之治”
- 北師大版(三起)(2024)三年級上冊英語Unit 1 Family單元測試卷(含答案)
- 2024水利云播五大員考試題庫及答案
- 妊娠合并泌尿系結石診斷治療中國專家共識解讀課件
評論
0/150
提交評論