自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server 2008中的代碼安全之主密鑰詳解

數(shù)據(jù)庫 SQL Server
本文我們主要介紹了SQL Server 2008中的代碼安全之主密鑰的相關知識,包括:服務器主密鑰和數(shù)據(jù)庫主密鑰,并給出了四個示例加以說明,希望能夠對您有所幫助。

SQL Server 2008中的代碼安全之主密鑰的相關知識是本文我們主要要介紹的內容,在SQL Server中的加密由層次結構形式進行處理以提供多級別的安全。SQL Server包含兩個用于加密數(shù)據(jù)的密鑰類型。如下圖:

SQL Server 2008中的代碼安全之主密鑰詳解

1、服務器主密鑰(Service Master Key):位于層次結構的最頂端,并且在安裝SQL Server時自動創(chuàng)建,用于加密系統(tǒng)數(shù)據(jù)、鏈接的服務器登錄名以及數(shù)據(jù)庫主密鑰。在***次通過SQL Server使用服務主密鑰來加密證書、數(shù)據(jù)庫主密鑰或鏈接的服務器主密碼時,服務主密鑰會自動生成,并且使用SQL Server服務賬戶的Windows證書來生成它。如果必須改變SQL Server服務賬號,微軟建議使用SQL Server配置管理器,因為這個工具將執(zhí)行生成新服務主密鑰需要的合適的解密和加密方法,而且可以使加密層次結構保持完整。服務主密鑰也用于加密其下的數(shù)據(jù)庫主密鑰。

2、數(shù)據(jù)庫主密鑰(Database Master Key):用于加密證書,以及非對稱密鑰和對稱密鑰。所有數(shù)據(jù)庫都可以只包含一個數(shù)據(jù)庫主密鑰,在創(chuàng)建它時,通過服務主密鑰對其加密。創(chuàng)建非對稱密鑰時,可以決定在加密非對稱密鑰對應的私鑰是否包含密碼。如果示包含密碼,將使用數(shù)據(jù)庫主密鑰來加密私鑰。

我們看一組例子:

示例一、備份及還原服務主密鑰

用到以下兩個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.

  1. BACKUP SERVICE MASTER KEY  
  2. TO FILE = 'C:\SqlBackup\SMK.bak' 
  3. ENCRYPTION BY PASSWORD = 'MakeItAGoodOne!1AB'----注意該密碼可以使用單引號  
  4. go 

--恢復服務主密鑰

  1. RESTORE SERVICE MASTER KEY  
  2. FROM FILE = 'H:\SqlBackup\SMK.bak' 
  3. DECRYPTION BY PASSWORD = 'MakeItAGoodOne!1AB' 
  4. go 

如果該密鑰沒有實際變化,而執(zhí)行密鑰恢復時,會收到提示:--The old and new master keys are identical. No data re-encryption is required.

示例二、創(chuàng)建、再生成和刪除數(shù)據(jù)庫主密鑰

用到以下兩個sql命令:

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

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

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

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

  1. IF NOT EXISTS (SELECT name  
  2. FROM sys.databases  
  3. WHERE name = 'BookStore')  
  4. BEGIN  
  5. CREATE DATABASE BookStore  
  6. END  
  7. GO  
  8.  
  9. USE BookStore  
  10. GO 

--創(chuàng)建數(shù)據(jù)庫主密鑰

  1. CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password' 
  2. go  
  3.  
  4. USE BookStore  
  5. GO 

--重新生成數(shù)據(jù)庫主密鑰

  1. ALTER MASTER KEY  
  2. [FORCE] REGENERATE WITH ENCRYPTION BY PASSWORD = 'password' 

--刪除數(shù)據(jù)庫主密鑰

  1. USE BookStore  
  2. GO  
  3. DROP MASTER KEY 

注意:如果該數(shù)據(jù)庫主密鑰仍然被其他數(shù)據(jù)庫對象使用,則不能被刪除,這點與架構類似。同時一旦創(chuàng)建數(shù)據(jù)庫主密鑰,就立刻備份它是一個好的習慣。

示例三、備份、恢復一個數(shù)據(jù)庫主密鑰

語法:

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

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

下面是一個完整示例:

--備份數(shù)據(jù)庫主密鑰

  1. USE BookStore  
  2. GO  
  3. CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MagneticFields!' 
  4. GO  
  5. BACKUP MASTER KEY TO FILE = 'H:\SqlBackup\BookStore_Master_Key.BAK' 
  6. ENCRYPTION BY PASSWORD = '4D280837!!!' 

--恢復數(shù)據(jù)庫主密鑰

  1. RESTORE MASTER KEY FROM FILE = 'H:\SqlBackup\BookStore_Master_Key.BAK' 
  2. DECRYPTION BY PASSWORD = '4D280837!!!' 
  3. ENCRYPTION BY PASSWORD = 'MagneticFields!' 

與服務主密鑰類似,如果沒有修改,則會收到如下提示:The old and new master keys are identical. No data re-encryption is required.

示例四、從數(shù)據(jù)庫主密鑰刪除服務主密鑰

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

簡略語法如下:

  1. ALTER MASTER KEY  
  2. ADD ENCRYPTION BY SERVICE MASTER KEY |  
  3. DROP ENCRYPTION BY SERVICE MASTER KEY 

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

下面是一個例子:

ALTER MASTER KEY DROP ENCRYPTION BY SERVICE MASTER KEY一旦執(zhí)行,任何數(shù)據(jù)庫主密鑰的修改需要使用OPEN MASTER KEY的口令訪問,這樣是為了重新應用服務主密鑰的加密.

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'MagneticFieldS!'一旦服務主密鑰被用于加密數(shù)據(jù)庫主密鑰,數(shù)據(jù)庫主密鑰不再需要被顯式打開或關閉。

ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY關閉數(shù)據(jù)庫主密鑰CLOSE MASTER KEY.

小結:

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

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

關于SQL Server 2008中的代碼安全之主密鑰的知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!

【編輯推薦】

  1. SQL Server多表查詢優(yōu)化方案總結
  2. SQL Server數(shù)據(jù)庫ISNULL函數(shù)的應用實例
  3. SQL Server數(shù)據(jù)庫DATEPART的語法及使用實例
  4. SQL Server根據(jù)子節(jié)點查詢所有父節(jié)點的代碼示例
  5. SQL Server臟讀方式數(shù)據(jù)提取之NOLOCK和READPAST
責任編輯:趙鵬 來源: 博客園
相關推薦

2011-03-14 15:06:49

SQL Server 安全

2011-03-10 15:03:40

SQL Server主密鑰

2011-03-15 09:51:09

2011-03-14 10:38:10

SQL Server非對稱密鑰加密

2009-04-16 18:07:39

2011-03-18 10:27:00

SQL Server目錄索引

2010-10-14 09:32:52

SQL Server

2011-03-16 08:42:22

SQL Server證書加密

2009-04-16 17:34:19

2011-03-18 09:11:14

SQL Server透明加密

2011-03-03 10:45:51

2011-08-19 11:00:54

SQL Server WaitFor命令

2011-08-19 10:40:27

SQL Server Merge命令

2009-02-16 16:10:49

安全審計安裝SQL Server

2010-10-11 09:05:40

SQL Server

2009-04-16 18:25:55

2009-04-16 17:44:31

2009-04-16 18:15:19

動作審核審核活動SQL Server

2009-11-12 10:12:21

主數(shù)據(jù)管理SQL Server

2011-03-15 10:22:42

SQL Server 聯(lián)機事務處理
點贊
收藏

51CTO技術棧公眾號