【文章內(nèi)容簡(jiǎn)介】
執(zhí)行結(jié)果:成功增加了SELECT權(quán)限和收回了刪除權(quán)限。拒絕角色test_role對(duì)Student表的SELECT,DELETE權(quán)限,再讓SELECT權(quán)限生效。 SQL語句:deny select,delete on student to test_role grant select on student to test_role 執(zhí)行結(jié)果:執(zhí)行成功。應(yīng)用程序角色應(yīng)用程序角色允許用戶為特定的應(yīng)用程序創(chuàng)建密碼保護(hù)的角色。創(chuàng)建一個(gè)程序角色:create application role app1 with password=39。12345639。企業(yè)管理器:對(duì)著“應(yīng)用程序角色”新建程序角色,輸入角色名稱、架構(gòu)和密碼即可。應(yīng)用程序角色授權(quán)與數(shù)據(jù)據(jù)角色授權(quán)相同,可參考上面的例子,故不再詳細(xì)敘述。視圖,簡(jiǎn)單來說就是一種虛擬表,和真實(shí)的數(shù)據(jù)表一樣,視圖包含了一系列帶有名稱的行數(shù)據(jù)。視圖機(jī)制把要保密的數(shù)據(jù)對(duì)無權(quán)存取這些數(shù)據(jù)的用戶隱藏起來,從而自動(dòng)地對(duì)數(shù)據(jù)提供一定程度的安全保護(hù)。視圖機(jī)制更主要的功能在于提供數(shù)據(jù)獨(dú)立性,其安全保護(hù)功能太不精細(xì),往往遠(yuǎn)不能達(dá)到應(yīng)用系統(tǒng)的要求。在實(shí)際應(yīng)用中通常是視圖機(jī)制與授權(quán)機(jī)制配合使用,首先用視圖機(jī)制屏蔽掉一部分保密數(shù)據(jù),然后在視圖上面再進(jìn)一步定義存取權(quán)限。這時(shí)視圖機(jī)制實(shí)際上間接實(shí)現(xiàn)了支持存取謂詞的用戶權(quán)限定義。實(shí)驗(yàn)案列:建立IS系所開設(shè)的課程的視圖,把對(duì)該視圖的SELECT和UPDATE權(quán)限授予用戶user1,把所有權(quán)限授予user1。建立視圖: create view IS_course as select * From coursewhere cdept=39。IS39。執(zhí)行結(jié)果:成功生成視圖。 授予權(quán)限: grant select,update on IS_course to user1執(zhí)行結(jié)果:成功授權(quán)。 grant all privileges to user2執(zhí)行結(jié)果:ALL 權(quán)限已不再推薦使用,并且只保留用于兼容性目的。它并不表示對(duì)實(shí) 體定義了ALL 權(quán)限。(SQL SERVER 2008不允許SQL語句賦值全部授權(quán))解決方法:運(yùn)用企業(yè)管理器的可視化操作,把所要授予的權(quán)限打勾即可。權(quán)限驗(yàn)證:用戶user1登錄zhangfaguang。然后查詢和修改“數(shù)據(jù)庫安全性”數(shù)據(jù)庫的視圖IS_course的數(shù)據(jù)。查詢:select * from IS_course執(zhí)行結(jié)果:命令執(zhí)行成功。驗(yàn)證結(jié)果:用戶uer1擁有了對(duì)視圖IS_course的查詢權(quán)限。更改:已知C1課程的學(xué)分為4,把這門課的學(xué)分修改成5。update IS_course set credit=5 where o=39。c139。執(zhí)行結(jié)果:(1 行受影響)驗(yàn)證結(jié)果:用戶uer1擁有了對(duì)視圖IS_course的更新權(quán)限。收回用戶user1的對(duì)視圖IS_course的SELECT權(quán)限。回收權(quán)限:revoke select on IS_course from user1執(zhí)行結(jié)果:命令已成功完成回收權(quán)限驗(yàn)證:用戶user1登錄zhangfaguang,然后查詢“數(shù)據(jù)庫安全性”數(shù)據(jù)庫的視圖IS_course的數(shù)據(jù)。select * from IS_course執(zhí)行結(jié)果:拒絕了對(duì)對(duì)象39。IS_course39。 (數(shù)據(jù)庫39。實(shí)驗(yàn)四安全性39。,架構(gòu)39。dbo39。)的SELECT 權(quán)限。驗(yàn)證結(jié)果:成功收回uer1對(duì)視圖IS_course的查詢權(quán)限。 加密是指通過使用密鑰或密碼對(duì)數(shù)據(jù)進(jìn)行模糊處理的過程。在SQL Server中,加密并不能替代其他的安全設(shè)置,比如防止未被授權(quán)的人訪問數(shù)據(jù)庫或是數(shù)據(jù)庫實(shí)例所在的Windows系統(tǒng),甚至是數(shù)據(jù)庫所在的機(jī)房,而是作為當(dāng)數(shù)據(jù)庫被破解或是備份被竊取后的最后一道防線。通過加密,使得未被授權(quán)的人在沒有密鑰或密碼的情況下所竊取的數(shù)據(jù)變得毫無意義。 SQL Server 2008中引入了透明數(shù)據(jù)加密(TDE),所謂的透明數(shù)據(jù)加密,就是加密在數(shù)據(jù)庫中進(jìn)行,但從程序的角度來看就好像沒有加密一樣,和列級(jí)加密不同的是,TDE加密的級(jí)別是整個(gè)數(shù)據(jù)庫。使用TDE加密的數(shù)據(jù)庫文件或備份在另一個(gè)沒有證書的實(shí)例上是不能附加或恢復(fù)的。 數(shù)據(jù)加密一般分為兩大類,對(duì)稱加密和非對(duì)稱加密。對(duì)稱加密是那些加密和解密使用同一個(gè)密鑰的加密算法。非對(duì)稱加密是指加密和解密使用不同密鑰的加密算法,用于加密的密鑰稱之為公鑰,用于解密的密鑰稱之為私鑰。 由于SQL Server的加密機(jī)制比較復(fù)雜,為了方便理解,這里先介紹SQL Server中的加密層次結(jié)構(gòu)。如圖: 從上圖可以獲取以下幾點(diǎn)重要信息: 在SQL Server中。 每一個(gè)數(shù)據(jù)庫實(shí)例都擁有一個(gè)服務(wù)主密鑰,這個(gè)密鑰是整個(gè)實(shí)例的根密鑰,在實(shí)例安裝的時(shí)候自動(dòng)生成,其本身由Windows提供的數(shù)據(jù)保護(hù)API進(jìn)行保護(hù)。 在服務(wù)主密鑰之下的是數(shù)據(jù)庫主密鑰,這個(gè)密鑰由服務(wù)主密鑰進(jìn)行加密。這是一個(gè)數(shù)據(jù)庫級(jí)別的密鑰??梢杂糜跒閯?chuàng)建數(shù)據(jù)庫級(jí)別的證書或非對(duì)稱密鑰提供加密。每一個(gè)數(shù)據(jù)庫只能有一個(gè)數(shù)據(jù)庫主密鑰。實(shí)驗(yàn)案例:先創(chuàng)建一個(gè)數(shù)據(jù)主密鑰:create master key encryption by password =39。12345639。然后使用數(shù)據(jù)庫密鑰創(chuàng)建對(duì)稱密鑰,非對(duì)稱密鑰和證書: 創(chuàng)建證書:create certificate zhengshu encryption by password=39。12345639。with subject=39。安全證書39。, /*證書主題*/ start