搜尋本站文章

2013-03-21

如何移除「透明資料加密(Transparent Data Encryption,TDE)


示範版本:SQL Server 2012

如何移除「透明資料加密(Transparent Data Encryption,TDE)

(1) 如果資料庫經過加密,您必須先使用 ALTER DATABASE ... SET ENCRYPTION OFF 陳述式,先從資料庫移除加密。

(2) 等候解密完成,然後再使用 DROP DATABASE ENCRYPTION KEY  移除資料庫加密金鑰。




移除「透明資料加密(Transparent Data Encryption,TDE)

請參考以下的範例程式碼


-- 01_檢視關於資料庫加密狀態的資訊
/*
sys.dm_database_encryption_keys 
傳回關於資料庫加密狀態及其相關聯之資料庫加密金鑰的資訊。

--
資料行名稱:encryption_state 

指出資料庫已加密或未加密。

0 = 沒有資料庫加密金鑰存在,未加密
1 = 未加密
2 = 加密進行中
3 = 已加密
4 = 金鑰變更進行中
5 = 解密進行中
6 = 保護變更進行中 (正在變更用於加密資料庫加密金鑰的憑證或非對稱金鑰)。

資料行名稱:percent_complete
資料庫加密狀態變更的完成百分比。如果沒有狀態變更,這將會是 0。
*/
USE master
GO
SELECT DB_NAME(database_id) N'資料庫',encryption_state N'加密狀態',percent_complete N'完成百分比',
 key_algorithm N'演算法', key_length N'金鑰長度', encryptor_type N'加密程式的類型', encryptor_thumbprint N'加密程式的指模',create_date N'建立加密金鑰的日期'
FROM sys.dm_database_encryption_keys
GO


-- 圖01_檢視關於資料庫加密狀態的資訊



-- 02_先設定此資料庫移除加密功能
/*
如果資料庫經過加密,您必須使用 ALTER DATABASE 陳述式,先從資料庫移除加密。
等候解密完成,然後再移除資料庫加密金鑰。

ALTER DATABASE SET 選項

ENCRYPTION {ON | OFF}
設定資料庫要加密 (ON) 或是不要加密 (OFF)。 
在資料庫層級啟用加密時,所有的檔案群組都會加密。 任何新的檔案群組都會繼承加密的屬性。 如果資料庫內有任何檔案群組設定為 READ ONLY,則資料庫加密作業將會失敗。
*/

ALTER DATABASE Northwind_TDE 
SET ENCRYPTION OFF
GO

-- 03_移除資料庫加密功能後,檢視關於資料庫加密狀態的資訊
USE master
GO
SELECT DB_NAME(database_id) N'資料庫',encryption_state N'加密狀態',percent_complete N'完成百分比',
 key_algorithm N'演算法', key_length N'金鑰長度', encryptor_type N'加密程式的類型', encryptor_thumbprint N'加密程式的指模',create_date N'建立加密金鑰的日期'
FROM sys.dm_database_encryption_keys
GO


-- 圖02_移除資料庫加密功能後,檢視關於資料庫加密狀態的資訊




雖然資料庫 Northwind_TDE 的加密狀態是:1 (未加密)。

但此資料庫仍未完成解密,必須要再使用 DROP DATABASE ENCRYPTION KEY  移除資料庫加密金鑰。



-- 04_卸除資料庫透明加密中所使用的資料庫加密金鑰
/*
DROP DATABASE ENCRYPTION KEY 

卸除資料庫透明加密中所使用的資料庫加密金鑰。
如果資料庫經過加密,您必須使用 ALTER DATABASE 陳述式,先從資料庫移除加密。 等候解密完成,然後再移除資料庫加密金鑰。
*/
USE Northwind_TDE
GO
DROP DATABASE ENCRYPTION KEY;
GO

-- 05_卸除資料庫透明加密中所使用的資料庫加密金鑰後,檢視關於資料庫加密狀態的資訊
USE master
GO
SELECT DB_NAME(database_id) N'資料庫',encryption_state N'加密狀態',percent_complete N'完成百分比',
 key_algorithm N'演算法', key_length N'金鑰長度', encryptor_type N'加密程式的類型', encryptor_thumbprint N'加密程式的指模',create_date N'建立加密金鑰的日期'
FROM sys.dm_database_encryption_keys
GO



-- 圖03_卸除資料庫透明加密中所使用的資料庫加密金鑰後,檢視關於資料庫加密狀態的資訊





系統資料庫 tempdb 要等到下次重新啟動後,將自動移除資料庫透明加密功能。




參考資料

ALTER DATABASE SET 選項 (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/bb522682.aspx

DROP DATABASE ENCRYPTION KEY (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/bb630256.aspx

新手學SQL Server 2008「透明資料加密(Transparent Data Encryption,TDE)」(1) : 技術文章
http://sharedderrick.blogspot.com/2008/10/1.html

新手學SQL Server 2008「透明資料加密(Transparent Data Encryption,TDE)」(2) : 技術文章
http://sharedderrick.blogspot.tw/2008/10/2.html