|
在SQL Server中的加密由層次結(jié)構(gòu)形式進(jìn)行處理以提供多級(jí)別的安全。SQL Server包含兩個(gè)用于加密數(shù)據(jù)的密鑰類型。如下圖:
1、服務(wù)器主密鑰(Service Master Key),位于層次結(jié)構(gòu)的最頂端,并且在安裝SQL Server時(shí)自動(dòng)創(chuàng)建,用于加密系統(tǒng)數(shù)據(jù)、鏈接的服務(wù)器登錄名以及數(shù)據(jù)庫(kù)主密鑰。在第一次通過(guò)SQL Server使用服務(wù)主密鑰來(lái)加密證書(shū)、數(shù)據(jù)庫(kù)主密鑰或鏈接的服務(wù)器主密碼時(shí),服務(wù)主密鑰會(huì)自動(dòng)生成,并且使用SQL Server服務(wù)賬戶的Windows證書(shū)來(lái)生成它。如果必須改變SQL Server服務(wù)賬號(hào),微軟建議使用SQL Server配置管理器,因?yàn)檫@個(gè)工具將執(zhí)行生成新服務(wù)主密鑰需要的合適的解密和加密方法,而且可以使加密層次結(jié)構(gòu)保持完整。服務(wù)主密鑰也用于加密其下的數(shù)據(jù)庫(kù)主密鑰。
2、數(shù)據(jù)庫(kù)主密鑰(Database Master Key),用于加密證書(shū),以及非對(duì)稱密鑰和對(duì)稱密鑰。所有數(shù)據(jù)庫(kù)都可以只包含一個(gè)數(shù)據(jù)庫(kù)主密鑰,在創(chuàng)建它時(shí),通過(guò)服務(wù)主密鑰對(duì)其加密。創(chuàng)建非對(duì)稱密鑰時(shí),可以決定在加密非對(duì)稱密鑰對(duì)應(yīng)的私鑰是否包含密碼。如果示包含密碼,將使用數(shù)據(jù)庫(kù)主密鑰來(lái)加密私鑰。
我們看一組例子:
示例一、備份及還原服務(wù)主密鑰
用到以下兩個(gè)sql命令:
BACKUP SERVICE MASTER KEY 導(dǎo)出服務(wù)主密鑰。(http://msdn.microsoft.com/zh-cn/library/ms190337.ASPx)
RESTORE SERVICE MASTER KEY從備份文件中導(dǎo)入服務(wù)主密鑰。(http://msdn.microsoft.com/zh-cn/library/ms187972.ASPx)
--以下語(yǔ)句備份服務(wù)主密鑰到C:/SqlBackup/SMK.bak
BACKUP SERVICE MASTER KEY
TO FILE = 'C:/SqlBackup/SMK.bak'
ENCRYPTION BY PASSWORD = 'MakeItAGoodOne!1AB'----注意該密碼可以使用單引號(hào)
go
--恢復(fù)服務(wù)主密鑰
RESTORE SERVICE MASTER KEY
FROM FILE = 'H:/SqlBackup/SMK.bak'
DECRYPTION BY PASSWORD = 'MakeItAGoodOne!1AB'
go
it知識(shí)庫(kù):SQL Server 2008中的代碼安全(四):主密鑰,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。