在這個時代,敏感資料都需要加密。但問題不在於是否要加密,而在於採用哪種加密方法。這有幾種選擇,以下是三種廣泛使用的主要資料庫加密方法:
- 應用程式介面(API)-應用程式層級
- 外掛程式-資料庫層級
- 透明資料加密-磁碟或作業系統層級
越接近應用程式層級,就需要更多的原始碼變更。相反,越接近作業系統層級,開發人員需要付出更少的努力。磁碟加密也是最安全的,因為即使黑客存取物理資料庫伺服器,也無法讀取資料。
Microsoft 的透明資料加密(TDE)適用於 SQL Server 2008、Azure SQL Database 和Azure SQL Data Warehouse 資料檔案,在資料寫入磁碟時加密資料庫。同樣,從磁碟讀取時會解密資料。因此,只有在記憶體時,資料才處於未加密狀態。
預設情況下,SQL Server 根本不會加密資料,更不用說加密磁碟了。啟用加密需要幾個步驟。在今天的文章中,我們將重溫如何在 SQL Server 中開啟 TDS。
- 建立主要金鑰 USE master;
- 建立或取得受主要金鑰保護的憑證 USE master;
- 建立資料庫加密金鑰並用憑證保護它 USE MyDatabase
- 將資料庫設定為使用加密 ALTER DATABASE MyDatabase SET ENCRYPTION ON;
GO
CREATE MASTER KEY ENCRYPTION
BY PASSWORD='Use a Strong Password For the Database Master Key';
GO
GO
CREATE CERTIFICATE My_TDE_Certificate
WITH SUBJECT='Certificate for TDE';
GO
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE TDE_Certificate;
GO
備份憑證
雖然使用 TDE 加密資料庫不需要此步驟,但是如果主要資料庫損壞,可以從資料庫備份中復原加密資料是很重要的。如果要將加密資料庫移動到另一部伺服器,你還應該備份憑證。這是完成備份的程式碼:
USE master;GO
BACKUP CERTIFICATE TDE_CERT_For_MyData
TO FILE = 'C:\temp\TDE_Cert_For_MyData.cer'
WITH PRIVATE KEY (file='C:\temp\TDE_CertKey.pvk',
ENCRYPTION BY PASSWORD='Use a Strong Password for Backup Here');
請確保將備份密碼儲存在安全的地方。如果必須重新建立裝載加密資料庫的伺服器執行個體或需要將資料庫移動到另一部伺服器,則需要此密碼才能還原憑證。
資料庫備份
使用 TDE 加密資料庫的好處之一是資料庫備份也將被加密,從而增強資料安全性。從 SQL Server 2016 開始,你還可以套用壓縮至啟用了 TDE 的資料庫備份。壓縮資料庫備份是很重要的,因為它可以透過產生比資料庫細的備份檔案來節省磁碟空間。此外,它還縮短了復原資料庫所需的時間。
以下是如何套用壓縮至啟用了 TDE 的資料庫備份:
BACKUP DATABASE [MyDatabase]TO DISK = N'E:\backup\MyDatabase_TDE_Compressed.bak'
WITH NOFORMAT, NOINIT, NAME = N'MyDatabase_TDE-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10
GO