Microsoft SQL Server 2008 提供三種不同的加解密方式:
- Cell-Level encryption
微軟由SQL Server 2005開始提供Cell-Level Encryption的功能。讓使用者可以針對Cell-Level 或是 Column-Level 的資料進行加密及解密的動作。 - Full Database-Level encryption
SQL Server 2008 Enterprise Edition,則提供TDE (Transparent Database Encryption),可以針對Database-Level提供加密及解密的功能。 - File-Level encryption
則指的是利用Windows 本身的功能,例如:Encrytpting File System (EFS)或是BitLockerTM Driven Encryption,對Database的實體檔案(*.mdf, *.ldf)進行加密及解密的功能,以保持資料的安全性。
Why we use TDE ?
微軟在Microsoft SQL Server 20008 提供Transparent database encryption (DTE),為了解決部份在Cell-Level Encryption 所遇到的問題。
如果你使用Cell-Level Encryption 有下列幾個問題:
- 欄位的資料型態必須改變,一般而言會換成 varbinary。
- 搜尋時,無法使用範圍查詢或是等號查詢。
- 應用系統必須使用SQL Server所建立的物件來進行資料的維護 (因為必須在SQL Server 上進行加、解密的動作),例如使用Stored Procedure, 或是 View。
- 甚至,你無法使用Index, PK, FK…等功能。
若你使用 DTE 進行整個資料庫的加密,則不會有上述的這些問題。所有的動作與未加密之前相同,也不需要再去變動應用程式的程式碼。
Hot to enable Transparent Database Encryption (TDE)
要啟動TDE功能,首先你必須要擁有可以建立database master key 及在master 資料建立憑證的權限。同時,你也必須擁有要加密的某一資料庫的控制權。
依據下列的動作來建啟用 TDE,:
首先在master 資料庫:
- 建立 master key
1: CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'KevinTsui'
- 建立 Certficate
CREATE CERTIFICATE swKey WITH SUBJECT = 'Systemweb's PWP Certificate'
- 備份 Certificate
BACKUP CERTIFICATE swKey TO FILE = 'path_to_file'
WITH PRIVATE KEY (
FILE = 'path_to_private_key_file'
ENCRYPTOIN BY PASSWORD = 'cert password');
在要加密的資料庫中:
- 建立資料庫加密使用的Key – database encryption key (DEK)
這把Key 必須使用server certificate 來產生 (非database certificate)CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256ENCRYPTION BY SERVER CERTIFICATE swKey - 啟用TDE。(會在背景執行資料庫加密的動作)
ALTER DATABASE myDatabase
SET ENCRYPTION ON - 檢視資料庫加密的狀況,以確定資料庫已經完成加密 (需要VIEW SERVER STATE權限)
SELECT db_name(database_id), encryption_stateFROM sys.dm_database_encryption_keys
Summary
原本我以為TDE,可以解決我的需求。我的需求是不希望客戶動到我們公司建立的資料,甚至讀取資料內容。後來,發現TDE解決的是客戶端的問題,例如:資料庫本身的實體檔案或備份檔被盜取後,讓偷取者無法在另一台機器上無法正常的掛上去或是還原,以保證資料的安全性。
看來,想解決我的需求,還是得使用Cell-Level Encryption。
0 意見:
張貼意見