實作 TDE 保護資料庫備份檔 (.bak/.mdf/.ldf) 防止外洩被掛載竊取。本文以 Northwind 範例資料庫示範完整流程:建立金鑰階層、啟用加密、驗證備份檔加密、跨實例還原測試。
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Str0ngP@ssw0rd!';
CREATE CERTIFICATE TDE_Cert WITH SUBJECT = 'TDE Certificate for Northwind';
USE Northwind;
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE TDE_Cert;
ALTER DATABASE Northwind SET ENCRYPTION ON;
SELECT name, is_encrypted FROM sys.databases WHERE name = 'Northwind';
-- is_encrypted = 1
BACKUP DATABASE Northwind TO DISK = 'C:\Backup\Northwind_UNENCRYPTED.bak' WITH INIT;
-- 用記事本開啟搜尋 'Aria Cruz' 可見明文
BACKUP DATABASE Northwind TO DISK = 'C:\Backup\Northwind_TDE.bak' WITH INIT;
-- 用記事本開啟搜尋 'Aria Cruz' 亂碼不可讀

-- 來源實例先備份憑證
BACKUP CERTIFICATE TDE_Cert
TO FILE = 'C:\Certs\TDE_Cert.cer'
WITH PRIVATE KEY (
FILE = 'C:\Certs\TDE_Cert.pvk',
ENCRYPTION BY PASSWORD = 'Str0ngP@ssw0rd!'
);
-- 目標實例建立主要金鑰 (若無)
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Str0ngP@ssw0rd!';
-- 匯入憑證
CREATE CERTIFICATE TDE_Cert
FROM FILE = 'C:\Certs\TDE_Cert.cer'
WITH PRIVATE KEY (
FILE = 'C:\Certs\TDE_Cert.pvk',
DECRYPTION BY PASSWORD = 'Str0ngP@ssw0rd!'
);
RESTORE DATABASE Northwind FROM DISK = 'C:\Backup\Northwind_TDE.bak'; — 成功。Msg 33111: Cannot find server certificate with thumbprint ...WITH COMPRESSION 先壓後加 (SQL 2008 支援)。TDE 以最小改動提供靜態加密,核心在於**金鑰階層建立正確**與**憑證備份/輪換/異地保存流程落地**。跨實例還原測試是驗證整個保護鏈完整性的唯一標準。