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

SQL Server 2008 透明資料加密 (TDE) 完整啟用與管理指南

     編輯:SQL Server 2008

前言

透明資料加密 (Transparent Data Encryption, TDE) 是 SQL Server 2008 Enterprise 版引入的重量級安全功能。啟用後,資料在寫入磁碟時於頁面層級自動加密,讀入記憶體時自動解密,應用程式完全無感。即使資料庫檔案 (.mdf/.ldf) 或備份檔被竊取,若無加密用的伺服器層級憑證,資料將無法讀取。

範例一:啟用 TDE 完整步驟

-- 1. 在 master 建立資料庫主金鑰 (DMK)
USE master; GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'B19ACE32-AB68-4589-81AE-010E9092FC6B'; GO

-- 2. 建立伺服器層級憑證,供 TDE 使用
CREATE CERTIFICATE TDE_Server_Certificate
WITH SUBJECT = 'Server-level cert for TDE'; GO

-- 3. 切換至目標資料庫,建立資料庫加密金鑰 (DEK)
USE DB_Encrypt_Demo; GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = TRIPLE_DES_3KEY
ENCRYPTION BY SERVER CERTIFICATE TDE_Server_Certificate; GO

-- 4. 開啟加密開關
ALTER DATABASE DB_Encrypt_Demo SET ENCRYPTION ON; GO

-- 5. 驗證加密狀態
SELECT is_encrypted FROM sys.databases WHERE name = 'DB_Encrypt_Demo';

驗證 is_encrypted = 1

⚠ 關鍵警告:一旦套用加密,必須立即備份伺服器層級憑證 (含私鑰)!若憑證遺失,資料庫將永無法附加、還原或開啟。

-- 備份憑證範例
BACKUP CERTIFICATE TDE_Server_Certificate
TO FILE = 'D:\Backup\TDE_Cert.cer'
WITH PRIVATE KEY (
    FILE = 'D:\Backup\TDE_Cert_PK.pvk',
    ENCRYPTION BY PASSWORD = 'StrongPwd!@#');

範例二:管理與移除 TDE

1. 變更 DEK 演算法

USE DB_Encrypt_Demo; GO
ALTER DATABASE ENCRYPTION KEY REGENERATE WITH ALGORITHM = AES_128; GO

2. 監控加密狀態 (含 tempdb)

SELECT DB_NAME(database_id) AS 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 AS encryption_state,
       key_algorithm, key_length
FROM sys.dm_database_encryption_keys;

加密狀態查詢結果

注意:啟用任何使用者資料庫的 TDE 會自動導致 tempdb 也被加密,這是設計使然,不可關閉。

3. 輪換保護 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; GO

4. 移除 TDE 並清理

ALTER DATABASE DB_Encrypt_Demo SET ENCRYPTION OFF; GO
USE DB_Encrypt_Demo; GO
DROP DATABASE ENCRYPTION KEY; GO

若該實例已無其他啟用 TDE 的使用者資料庫,重啟服務後 tempdb 將自動回復為未加密狀態。

小結

  1. TDE 提供「靜態資料加密」,防禦檔案層級竊取,應用程式零修改。
  2. 金鑰階層:SMK → DMK → 憑證 → DEK → 資料頁;備份憑證是生命線。
  3. DEK 變更會連動影響 tempdb 加密狀態。
  4. 跨伺服器移動啟用 TDE 的資料庫,必須先在目標伺服器建立相同憑證(由備份還原)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved