SQL Server 資料庫備份 加密

在 SQL Server Management Studio (SSMS) 中要備份資料庫可以使用滑鼠右鍵點擊 資料庫 > 工作 > 備份:

在「備份選項」中有「加密」的區塊,但是預設是無法勾選:

依照文字描述,需要到「媒體選項」勾選「備份至新的媒體集,並清除所有現有的備份組」才可以勾選「加密」:

但是回到「加密」區塊,會發現不論選擇什麼「演算法」,「憑證或非對稱金鑰」都是空的,沒有任何選項可以選擇:

我們可以使用指令來建立憑證。

首先要先切換到 master 資料庫:
    
USE master;
    

建立主金鑰(Master Key):
    
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MY_PASSWORD123';
    

建立完成後可以使用下面的語法查詢到已建立的主金鑰:
    
SELECT * FROM sys.symmetric_keys;
    

建立憑證:
    
CREATE CERTIFICATE MyCert WITH SUBJECT = 'My Cert';
    

建立完成後可以使用下面的語法查詢到已建立的憑證:
    
SELECT * FROM sys.certificates;
    

建立對稱金鑰(SymmetricKey):
    
CREATE SYMMETRIC KEY MySymmetricKey  
WITH ALGORITHM = AES_256  
ENCRYPTION BY CERTIFICATE MyCert;
    

建立完成後可以使用下面的語法查詢到已建立的對稱金鑰:
    
SELECT * FROM sys.symmetric_keys;
    

為了避免金鑰遺失,我們可以使用下面的指令備份金鑰:
    
BACKUP CERTIFICATE MyCert 
TO FILE = 'C:\Backup\MyCert.cer'
WITH PRIVATE KEY 
(
    FILE = 'C:\Backup\MyCert.pvk',
    ENCRYPTION BY PASSWORD = 'MY_PASSWORD123'
);
    

建立資料庫加密金鑰 (DEK, Database Encryption Key):
    
USE mydb; -- 切換到要備份的資料庫
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyCert;
GO
    

再回到「備份選項」>「加密」的「憑證或非對稱金鑰」就可以找到剛剛建立的憑證了:



參考資料:
Microsoft.Learn - Backup encryption

留言