通明數據加密(TDE)庫的備份和復原。本站提示廣大學習愛好者:(通明數據加密(TDE)庫的備份和復原)文章只能為提供參考,不一定能成為您想要的結果。以下是通明數據加密(TDE)庫的備份和復原正文
想到TDE(Transparent Data Encryption)。
TDE MSDN 解釋:
“通明數據加密”(TDE) 可對數據和日記文件履行及時 I/O 加密息爭密。這類加密應用數據庫加密密鑰 (DEK),該密鑰存儲在數據庫引誘記載中以供恢復時應用。DEK 是應用存儲在辦事器的 master 數據庫中的證書掩護的對稱密鑰,或許是由 EKM 模塊掩護的非對稱密鑰。TDE 掩護“處於休眠狀況”的數據,即數據和日記文件。它供給了服從很多司法、律例和各個行業樹立的原則的才能。軟件開辟人員籍此可使用 AES 和 3DES 加密算法來加密數據,且無需更改現有的運用法式。
其實吸引我的是“無需更改現有的運用法式”,由於我須要加密的庫辦事於一個異常穩固的體系,並且如許做一切工作DBA可控。
TDE加密系統構造:
測試進程:
--創立主密鑰(Master Key)
USE master
GO
--DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD=N'1qaz@WSX';
GO
--備份主密鑰
BACKUP MASTER KEY TO FILE=N'C:\master_key.cer'
ENCRYPTION BY PASSWORD=N'!QAZ2wsx'
GO
--創立基於主密鑰的證書。用於掩護數據庫加密密鑰(Database Encryption Key)
--DROP CERTIFICATE SDB_Cert
CREATE CERTIFICATE SDB_Cert
WITH SUBJECT=N'Certificate for SecretDB'
go
--應用私鑰加密的方法備份主密鑰的證書
BACKUP CERTIFICATE SDB_Cert
TO FILE=N'C:\SDB_Cert.cer'
WITH PRIVATE KEY
(
FILE =N'C:\SDB_Cert.pvk',
ENCRYPTION BY PASSWORD='!QAZ2wsx'
)
GO
--創立測試庫SecretDB
USE master
GO
CREATE DATABASE SecretDB
GO
USE SecretDB
GO
CREATE TABLE SDB_TB
(ID INT,VAL NVARCHAR(20));
INSERT INTO SDB_TB
VALUES (1,N'A'),(2,N'B'),(3,N'C');
GO
USE SecretDB
go
--創立數據庫加密密鑰
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM=AES_128
ENCRYPTION BY SERVER CERTIFICATE SDB_Cert;
GO
--啟用數據庫加密
USE SecretDB
go
ALTER DATABASE SecretDB SET ENCRYPTION ON
go
--備份SecretDB,用於後續的異機復原測試
USE master
go
BACKUP DATABASE SecretDB TO DISK=N'D:\SecretDB.bak'
go
在完成這些後,SecretDB庫曾經加密,而且獲得其加密後的備份文件,接上去須要在另台復原這個備份。
我把SecretDB.bak,SDB_Cert.cer,SDB_Cert.pvk拷到別一台機。直接復原的話,會報錯。須要創立本來用於加密的證書來復原數據庫備份。我的目標到達了!
--在異機上恢復SecretDB的備份
USE master
GO
CREATE DATABASE SecretDB
GO
RESTORE DATABASE SecretDB
FROM DISK=N'D:\SecretDB.bak'
WITH REPLACE
GO
--新聞 33111,級別 16,狀況 3,第 1 行
--找不到指紋為 '0x0106000000000009010000009C529FFD5C7FD72FD0AAE9EDF46C5F69946FFED0' 的辦事器 證書。
--新聞 3013,級別 16,狀況 1,第 1 行
--RESTORE DATABASE 正在異常終止。
創立證書並復原。
USE master
GO
CREATE CERTIFICATE SDB_Cert
FROM FILE=N'C:\SDB_Cert.cer'
WITH PRIVATE KEY
(
FILE=N'C:\SDB_Cert.pvk',
DECRYPTION BY PASSWORD=N'!QAZ2wsx'
)
GO
RESTORE DATABASE SecretDB
FROM DISK=N'D:\SecretDB.bak'
WITH REPLACE
GO
總結:
其其實做TDE前應當細心浏覽BOL的解釋:ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.zh-CHS/s10de_4deptrbl/html/c75d0d4b-4008-4e71-9a9d-cee2a566bd3b.htm
個中說到:
假如應用 TDE 對數據庫停止加密,備份緊縮將沒法明顯緊縮備份存儲。
復制不會以加密情勢從啟用了 TDE 的數據庫中主動復制數據。假如您想掩護分發和定閱辦事器數據庫,則必需零丁啟用 TDE。
某些限制和留意事項,會影響TDE的安排和應用。