當一個用戶數據庫可用且已啟用TDE時,在寫入到磁盤時在頁級實現加密。在數據頁讀入內存時解密。如果數據庫文件或數據庫備份被盜,沒有用來加密的原始證書將無法訪問。這幾乎是SQL Server2008安全選項中最激動人心的功能了,有了它,我們至少可以將一些初級的惡意窺視拒之見外。
下面的兩個例子將展示如何啟用和維護透明數據加密。
示例一、啟用透明加密(TDE)
/********************TDE**************** [email protected] ****************/注意:一旦在數據庫應用了加密,應該立刻備份服務器級證書!
沒有加密DEK的證書,該數據庫將無法打開,附加到別的服務器也無法使用,數據庫文件亦不會被Hack。如果一個DBA想要合法地將數據庫從一個SQL Server實例移動到另一個SQL Server實例,那麼她應該首先備份服務器級證書,然後在新的SQL Server實例中創建證書。此時可以合法地備份、還原數據庫或附加數據及日志文件。
示例二、管理和移除透明加密(TDE)
復制代碼 代碼如下:
USE DB_Encrypt_Demo
GO
--修改加密算法
ALTER DATABASE ENCRYPTION KEY
REGENERATE WITH ALGORITHM = AES_128
Go
SELECT DB_NAME(database_id) databasenm,
CASE encryption_state
WHEN 0 THEN 'No encryption'
WHEN 1 THEN 'Unencrypted'
WHEN 2 THEN 'Encryption in progress'
WHEN 3 THEN 'Encrypted'
WHEN 4 THEN 'Key change in progress'
WHEN 5 THEN 'Decryption in progress'
END encryption_state,
key_algorithm,
key_length
FROM sys.dm_database_encryption_keys
/*
對所有用戶數據庫的加密處理也包含對tempdb的處理
databasenm encryption_state key_algorithm key_length
tempdb Encrypted AES 256
DB_Encrypt_Demo Encrypted AES 128
*/
注意:對所有用戶數據庫的加密處理也包含對tempdb的處理
除了更改DEK的算法,我們也可以更改用來加密DEK的服務器級證書(該證書應該定期更改)
復制代碼 代碼如下:
USE master
GO
CREATE CERTIFICATE TDE_Server_Certificate_V2
WITH SUBJECT = 'Server-level cert for TDE V2'
GO
USE DB_Encrypt_Demo
GO
ALTER DATABASE ENCRYPTION KEY
ENCRYPTION BY SERVER CERTIFICATE TDE_Server_Certificate_V2--用新證書修改DEK
--移除數據庫透明加密
ALTER DATABASE DB_Encrypt_Demo
SET ENCRYPTION OFF
GO
--移除TDE後,可以刪除DEK
USE DB_Encrypt_Demo
GO
Drop DATABASE ENCRYPTION KEY
Go
注意:如果刪除DEK是SQL Server實例中最後一個使用TDE的用戶定義數據庫,在SQL Server實例重啟後,tempdb也將變為不加密的狀態。
小結:
1、本文主要介紹透明數據加密(TDE)的使用。
2、對DEK的修改同時影響到tempdb數據庫的加密狀態。
SQL Server安全系列至此暫告一段落。謝謝各位耐心看完,歡迎對邀月提出指正。[email protected]