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