老闆又有命令了,要求我們的資料庫進行加密,有把這個任務交給了資料庫,沒有辦法,資料庫DBA的辛苦就在這裡了,以前對資料庫加密有一定瞭解,但是不深入,從設定欄位加密和TDE的步驟只會照抄MSDN或網路上的,通過兩天的研究和學習,自認為有了比較深刻的認識。
關於欄位加密的可以參考微軟的MSDN寫的非常不錯:http://msdn.microsoft.com/en-us/library/ms189586(v=sql.105).aspx
關於TDE加密的步驟可以參考:http://msdn.microsoft.com/en-us/library/bb934049(d=printer,v=sql.105).aspx
這裡不多說了,我要說的是認證,對稱性和非對稱性密鑰的本身:
- Service master key 和database master key 都是一種Symmetric key.
- 正常的情況下,認證/對稱性密鑰/非對稱性密鑰 每次產生的都不一樣。即使命令相同。
- 對於非對稱性密鑰,密鑰不可以備份或複製。建立好後永遠一樣。
- 對於認證,如果要想保證認證相同,我可以使用備份和恢複的方法使用認證的複製。
--備份認證
BACKUP CERTIFICATE master_database_cert TO FILE = 'D:\master_database_cert_20121226.cer'
WITH PRIVATE KEY (
FILE = 'D:\master_Database_priv_201212261431.pvk' ,
ENCRYPTION BY PASSWORD = 'Gaupeng123' );
--恢複認證
CREATE CERTIFICATE master_server_cert
FROM FILE = 'D:\GWSZAPP03_Cert\master_database_cert_20121226.cer'
WITH PRIVATE KEY (FILE = 'D:\GWSZAPP03_Cert\master_Database_priv_201212261431.pvk',
DECRYPTION BY PASSWORD = 'Gaupeng123');
5. 對於對稱性密鑰,設定其中的參數,也可以實現不同實體間的認證複製。
通過 KEY_SOURCE/IDENTITY_VALUE 參數來實現。
--建立對稱性密鑰
CREATE SYMMETRIC KEY [key_DataShare] WITH
KEY_SOURCE = 'My key generation bits. This is a shared secret!',
ALGORITHM = AES_256,
IDENTITY_VALUE = 'Key Identity generation bits. Also a shared secret'
ENCRYPTION BY CERTIFICATE [cert_keyProtection];
--在另外的資料庫中產生對稱性密鑰
CREATE SYMMETRIC KEY [key_DataShare001] WITH
KEY_SOURCE = 'My key generation bits. This is a shared secret!',
ALGORITHM = AES_256,
IDENTITY_VALUE = 'Key Identity generation bits. Also a shared secret'
ENCRYPTION BY CERTIFICATE [cert_keyProtection001];
--一下是查詢的結果,發現兩個對稱金鑰相同。
以上是我倉促總結出來的,還希望大家多多指教。