首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2008 透明資料加密 (TDE) 完整實作指南

     編輯:關於SqlServer

資料庫備份檔(.mdf/.ldf/.bak)一旦外洩,直接掛載至另一實例即可存取資料。SQL Server 2008 引入 透明資料加密 (Transparent Data Encryption, TDE),在 資料庫層級 對資料檔、記錄檔、備份檔執行即時加密/解密,應用程式完全無感,無需修改程式碼。

TDE 運作架構

  1. 服務主要金鑰 (Service Master Key):由 DPAPI 保護,實例層級根金鑰。
  2. 資料庫主要金鑰 (Database Master Key):受服務主要金鑰保護,儲存於 master 資料庫。
  3. 憑證:受資料庫主要金鑰保護,含公開/私鑰組,用於加密 DEK。
  4. 資料庫加密金鑰 (DEK):受憑證保護,儲存於資料庫啟動記錄,實際執行頁面級 AES 加密。

TDE 加密金鑰階層架構圖

啟用 TDE 步驟

-- 1. 建立主要金鑰 (master DB)
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Str0ngP@ssw0rd!';

-- 2. 建立憑證
CREATE CERTIFICATE TDE_Cert WITH SUBJECT = 'TDE Certificate';

-- 3. 切換至目標資料庫,建立 DEK 並啟用加密
USE UserDB;
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE TDE_Cert;
ALTER DATABASE UserDB SET ENCRYPTION ON;

驗證加密狀態

SELECT name, is_encrypted FROM sys.databases WHERE name = 'UserDB';
-- is_encrypted = 1 表示已加密

備份與還原關鍵點

  • 備份檔自動加密,還原至另一實例需先匯入相同憑證(含私鑰)。
  • 憑證備份指令:
BACKUP CERTIFICATE TDE_Cert
TO FILE = 'D:\Backup\TDE_Cert.cer'
WITH PRIVATE KEY (
    FILE = 'D:\Backup\TDE_Cert.pvk',
    ENCRYPTION BY PASSWORD = 'Str0ngP@ssw0rd!'
);
  • 新實例還原憑證後,方可 RESTORE DATABASE。

效能與限制

  • 加密/解密發生於 緩衝集區與磁碟之間,CPU 額外負擔約 3~5%(AES-NI 指令集下更低)。
  • 不加密:Filestream 檔案、記憶體內資料、網路傳輸封包(需另配 SSL/TLS)、tempdb(自動加密但不受使用者控制)。
  • 啟用 TDE 後,立即壓縮備份效果大幅降低**(加密資料熵高),建議改用備份壓縮 + TDE 組合(SQL 2008 支援)。

金鑰管理最佳實務

  1. 憑證私鑰備份離線保存,分離存放於備份檔之外。
  2. 定期輪換憑證(ALTER DATABASE ENCRYPTION KEY REGENERATE WITH ALGORITHM = AES_256),並同步更新所有備份還原環境。
  3. 納入災難復原演練:模擬憑證遺失情境,驗證還原流程。

結語

TDE 以最小改動提供靜態資料加密,符合合規與資安審計需求。關鍵在於金鑰管理流程:憑證備份、離線存放、輪換機制、災難演練缺一不可。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved