是否可以使用密碼證書加密創建加密備份?
我已通過密碼證書加密,我想將其用於備份加密。問題是我無法使用證書(在 T-SQL 語句或維護計劃中),因為我無法打開它 - 似乎沒有
OPEN CERTIFICATE
命令。我希望通過密碼對證書進行加密,因為我們的目標是只有一個使用者負責在 SQL Server 實例中創建/插入證書。其他人將無法導出證書並恢復加密備份。
是否有可能,或者為了進行加密備份,我必須始終使用數據庫主密鑰加密證書?
據我所見:不,不能在命令中使用受密碼保護的證書
BACKUP
;證書或非對稱密鑰需要由數據庫主密鑰 (DMK) 保護。
- 命令語句的語法
BACKUP
無法為證書或非對稱密鑰指定密碼。不,您沒有OPEN
證書(甚至沒有非對稱密鑰)。您只有OPEN
對稱密鑰和數據庫主密鑰(它們是對稱密鑰)。- 嘗試使用受密碼保護的證書時,會出現以下錯誤(已添加重點):
消息 33101,級別 16,狀態 1,第 123 行
無法使用證書“BackupEncryption”,因為其私鑰不存在或不受數據庫主密鑰的保護。SQL Server 需要能夠自動訪問用於此操作的證書的私鑰。
我非常希望創建一個受 DMK 保護的證書,該證書由服務主密鑰 (SMK) 刪除,因為這通常會迫使您首先執行
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password';
才能對 DMK 執行任何操作,而我做到了必須這樣做才能創建證書,但是,一旦創建了證書(是的,我確實執行CLOSE MASTER KEY;
了),該BACKUP
語句仍然有效,無需顯式打開 DMK。這很奇怪,因為證書的私鑰不應該在不執行OPEN
的情況下使用,並且私鑰絕對是加密內容所必需的(嘗試使用已刪除其私鑰的證書進行加密備份將失敗)。太好了,看起來您需要在 SQL Server 之外處理這個問題。如:
- 執行備份
- 加密**.bak**文件
您可以通過以下幾種方式完成此操作:
通過儲存過程:
BACKUP...
xp_cmdshell
加密SQL 代理作業
T-SQL 步驟執行
BACKUP...
作業系統命令或PowerShell 步驟進行加密
CMD腳本:
SQLCMD.EXE執行
BACKUP...
加密