婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQLServer 2008中的代碼安全(四) 主密鑰

SQLServer 2008中的代碼安全(四) 主密鑰

熱門標簽:舞鋼市地圖標注app 浙江地圖標注 電銷機器人虛擬號碼 創業電銷機器人 滄州營銷外呼系統軟件 松原導航地圖標注 海南自動外呼系統價格 沈陽智能外呼系統代理 九鹿林外呼系統怎么收費
如下圖:

邀月工作室

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

如果該密鑰沒有實際變化,而執行密鑰恢復時,會收到提示:

--The old and new master keys are identical. No data re-encryption is required.

示例二、創建、再生成和刪除數據庫主密鑰

用到以下兩個sql命令:

CREATE MASTER KEY 創建數據庫主密鑰(http://technet.microsoft.com/zh-cn/library/ms174382.aspx)

ALTER MASTER KEY 重新生成數據庫主密鑰(http://msdn.microsoft.com/en-us/library/ms186937%28SQL.90%29.aspx)

DROP MASTER KEY 刪除數據庫主密鑰(http://msdn.microsoft.com/en-us/library/ms180071.aspx)

當數據庫主密鑰被顯式創建時,會同時自動生成一個額外生成的安全層,用于加密數據庫中的新證書和非對稱密鑰,更進一步保護已加密的數據。

復制代碼 代碼如下:

IF NOT EXISTS (SELECT name
FROM sys.databases
WHERE name = 'BookStore')
BEGIN
CREATE DATABASE BookStore
END
GO

USE BookStore
GO
--創建數據庫主密鑰
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password'
go

USE BookStore
GO
--重新生成數據庫主密鑰
ALTER MASTER KEY
[FORCE] REGENERATE WITH ENCRYPTION BY PASSWORD = 'password'

--刪除數據庫主密鑰
USE BookStore
GO
DROP MASTER KEY

注意:如果該數據庫主密鑰仍然被其他數據庫對象使用,則不能被刪除,這點與架構類似。

同時一旦創建數據庫主密鑰,就立刻備份它是一個好的習慣。

示例三、備份、恢復一個數據庫主密鑰

語法:

BACKUP MASTER KEY導出服務主密鑰。(http://technet.microsoft.com/en-us/library/ms174387.aspx)

RESTORE MASTER KEY從備份文件中導入數據庫主密鑰。(http://msdn.microsoft.com/en-us/library/ms186336.aspx)

下面是一個完整示例:

復制代碼 代碼如下:

--備份數據庫主密鑰
USE BookStore
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MagneticFields!'
GO
BACKUP MASTER KEY TO FILE = 'H:\SqlBackup\BookStore_Master_Key.BAK'
ENCRYPTION BY PASSWORD = '4D280837!!!'

--恢復數據庫主密鑰
RESTORE MASTER KEY FROM FILE = 'H:\SqlBackup\BookStore_Master_Key.BAK'
DECRYPTION BY PASSWORD = '4D280837!!!'
ENCRYPTION BY PASSWORD = 'MagneticFields!'

與服務主密鑰類似,如果沒有修改,則會收到如下提示:

The old and new master keys are identical. No data re-encryption is required.

示例三、從數據庫主密鑰刪除服務主密鑰

當一個數據庫主密鑰被創建時,它被默認使用兩種方式加密:服務主密鑰和被使用CREATE MASTER KEY 命令中使用的密碼。如果你不想使用服務主密碼加密數據庫主密鑰(這種情況下,擁有sysadmin特權的login在不知道數據庫主密鑰的前提下將不能訪問加密數據),你可以使用ALTER MASTER KEY 命令刪除服務主密鑰。

簡略語法如下:

ALTER MASTER KEY

ADD ENCRYPTION BY SERVICE MASTER KEY |

DROP ENCRYPTION BY SERVICE MASTER KEY

由于服務主密鑰允許擁有足夠許可(如sysadmin)的用戶自動使用數據庫主密鑰解密,因此,一旦刪除了服務主密鑰的加密,而再想修改數據庫主密鑰時,你必須使用一個新的命令訪問它。OPEN MASTER KEY, 語法如下:

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'

下面是一個例子:

復制代碼 代碼如下:

ALTER MASTER KEY DROP ENCRYPTION BY SERVICE MASTER KEY
--一旦執行,任何數據庫主密鑰的修改需要使用OPEN MASTER KEY的口令訪問,這樣是為了重新應用服務主密鑰的加密
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'MagneticFieldS!'
--一旦服務主密鑰被用于加密數據庫主密鑰,數據庫主密鑰不再需要被顯式打開或關閉。
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
--關閉數據庫主密鑰
CLOSE MASTER KEY

小結:

1、本文主要介紹服務主密鑰的備份與還原,數據庫的主密鑰的創建、重新生成、刪除和備份、還原。

2、一旦創建主密鑰,立刻備份它是一個很好的習慣。

下文將主要介紹非對稱密鑰加密(Asymmetric Key Encryption)

邀月

標簽:海口 日喀則 西藏 公主嶺 臺灣 商洛 寶雞 咸寧

巨人網絡通訊聲明:本文標題《SQLServer 2008中的代碼安全(四) 主密鑰》,本文關鍵詞  SQLServer,2008,中的,代碼,安全,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQLServer 2008中的代碼安全(四) 主密鑰》相關的同類信息!
  • 本頁收集關于SQLServer 2008中的代碼安全(四) 主密鑰的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 南京市| 棋牌| 那坡县| 建始县| 广水市| 余庆县| 那曲县| 葵青区| 和田县| 江川县| 呈贡县| 黄石市| 台东市| 邳州市| 江西省| 栾川县| 开原市| 磴口县| 南康市| 格尔木市| 丽水市| 朝阳县| 河西区| 双桥区| 建水县| 尤溪县| 陵水| 新源县| 常州市| 南郑县| 聂拉木县| 灵川县| 陵川县| 封丘县| 托克托县| 林西县| 柯坪县| 类乌齐县| 莱西市| 昆山市| 逊克县|