數(shù)據(jù)庫管理:SQL Server 2008安全性探討
Ruby 發(fā)表于:12年09月06日 11:18 [轉(zhuǎn)載] DOIT.com.cn
SQL Server加密
關(guān)于SQL Server 2008使用的加密層級結(jié)構(gòu),頂層是Windows層,其中包括Windows Data Protection API (DPAPI)。DPAPI負(fù)責(zé)使用本地機(jī)器密鑰加密服務(wù)的服務(wù)主密鑰。服務(wù)主密鑰是SQL環(huán)境中加密鏈的頂層。首次創(chuàng)建低級別的密鑰時,系統(tǒng)會自動生成服務(wù)主密鑰。
服務(wù)主密鑰的下面是數(shù)據(jù)庫主密鑰Database Master Key。數(shù)據(jù)庫主密鑰可以保護(hù)數(shù)據(jù)庫中所有證書的私鑰和非對稱密鑰的私鑰。它是采用3DES加密算法和密碼加密的對稱密鑰。該密鑰的副本使用服務(wù)主密鑰加密,并存儲在主數(shù)據(jù)庫和應(yīng)用它的數(shù)據(jù)庫中。如果數(shù)據(jù)庫被轉(zhuǎn)移到另一個服務(wù)器上,可以使用OPEN MASTER KEY語句并提供加密密碼來解密數(shù)據(jù)庫主密鑰。
在數(shù)據(jù)庫作用域中,還有可用于加密數(shù)據(jù)庫的對稱密鑰和非對稱密鑰,以及可以用于數(shù)字簽名和實(shí)現(xiàn)不可否認(rèn)性的證書。
應(yīng)該首先創(chuàng)建數(shù)據(jù)庫主密鑰,記住數(shù)據(jù)庫主密鑰是對稱密鑰,用來加密數(shù)據(jù)庫中的所有私有密鑰數(shù)據(jù)。如果使用非對稱密鑰或證書,這是非常有用的,因?yàn)閯?chuàng)建它們時不需要提供密碼或其它保護(hù)與雙方關(guān)聯(lián)的私鑰的機(jī)制。要為AdventureWorks2008數(shù)據(jù)庫創(chuàng)建一個新的主密鑰,可以執(zhí)行下面的命令:
創(chuàng)建主密鑰需要數(shù)據(jù)庫的CONTROL權(quán)限,如果已經(jīng)創(chuàng)建了一個主密鑰,那么要想創(chuàng)建新的主密鑰,必須刪除現(xiàn)有的主密鑰。如果現(xiàn)有的主密鑰已被用來加密數(shù)據(jù)庫中的一個私鑰,那么就不能刪除它了。一旦創(chuàng)建了主密鑰,就可以查詢sys.database目錄視圖,通過 is_master_key_encrypted_by_server列查看該數(shù)據(jù)庫主密鑰是否已經(jīng)使用服務(wù)主密鑰加密。該列使用一個布爾值表明數(shù)據(jù)庫主密鑰是否使用服務(wù)主密鑰加密。如果數(shù)據(jù)庫主密鑰是在另一個服務(wù)器上創(chuàng)建的,該值就為0
- SELECT NAME, [is_master_key_encrypted_by_server] FROM sys.databases
在繼續(xù)討論使用其他密鑰之前,讓我們看一下如何備份服務(wù)主密鑰和數(shù)據(jù)庫主密鑰。如果必須進(jìn)行災(zāi)難恢復(fù),且需要恢復(fù)使用這些密鑰之一加密的數(shù)據(jù),那么這將是相當(dāng)有用的。梁宗密鑰的語法是相似的,但需要額外的一部來備份加密的數(shù)據(jù)庫主密鑰。
首先看服務(wù)主密鑰,在BACKUP SERVICE MASTER KEY語句中使用一個文件路徑,可以是一個本地或UNC路徑,以及一個滿足密碼復(fù)雜度要求的密碼,備份文件時使用密碼可以防止他人將您的主密鑰還原到另一臺服務(wù)器上,然后解密您的數(shù)據(jù)庫主密鑰
- BACKUP SERVICE MASTER KEY TO FILE='C:\KyeBackups\ServiceMasterKey' ENCRYPTION BY PASSWORD='c@MplexP@ssw0rd'; --如果需要還原該服務(wù)主密鑰,可使用
- RESTORE SERVICE MASTER KEY FROM FILE='C:\KyeBackups\ServiceMasterKey' DECRYPTION BY PASSWORD='c@MplexP@ss0rd';
備份和還原數(shù)據(jù)庫主密鑰的方法如下:
- --Backup the database master key
- USE AdventureWorks2008; OPEN MASTER KEY DECRYPTION BY PASSWORD='P@ssw0rd'
- BACKUP MASTER KEY TO FILE='C:\KyeBackups\AWorksMasterKey' ENCRYPTION BY PASSWORD='dn9e8h93ndwjKJD'; GO
- --Restore the database master key
- USE AdventureWorks2008; RESTORE MASTER KEY FROM FILE='C:\KyeBackups\ServiceMasterKey'
- DECRYPTION BY PASSWORD='dn9e8h93ndwjKJD' ENCRYPTION BY PASSWORD='P@ss0rd'
- GO
公司簡介 | 媒體優(yōu)勢 | 廣告服務(wù) | 客戶寄語 | DOIT歷程 | 誠聘英才 | 聯(lián)系我們 | 會員注冊 | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.