Sql-Server

是否可以使用密碼證書加密創建加密備份?

  • November 2, 2017

我已通過密碼證書加密,我想將其用於備份加密。問題是我無法使用證書(在 T-SQL 語句或維護計劃中),因為我無法打開它 - 似乎沒有OPEN CERTIFICATE命令。

我希望通過密碼對證書進行加密,因為我們的目標是只有一個使用者負責在 SQL Server 實例中創建/插入證書。其他人將無法導出證書並恢復加密備份。

是否有可能,或者為了進行加密備份,我必須始終使用數據庫主密鑰加密證書?

據我所見:不,不能在命令中使用受密碼保護的證書BACKUP;證書或非對稱密鑰需要由數據庫主密鑰 (DMK) 保護。

  1. 命令語句的語法BACKUP無法為證書或非對稱密鑰指定密碼。不,您沒有OPEN證書(甚至沒有非對稱密鑰)。您只有OPEN對稱密鑰和數據庫主密鑰(它們是對稱密鑰)。
  2. 嘗試使用受密碼保護的證書時,會出現以下錯誤(已添加重點):

消息 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 之外處理這個問題。如:

  1. 執行備份
  2. 加密**.bak**文件

您可以通過以下幾種方式完成此操作:

  1. 通過儲存過程:

  2. BACKUP...

  3. xp_cmdshell加密

  4. SQL 代理作業

  5. T-SQL 步驟執行BACKUP...

  6. 作業系統命令PowerShell 步驟進行加密

  7. CMD腳本:

  8. SQLCMD.EXE執行BACKUP...

  9. 加密

引用自:https://dba.stackexchange.com/questions/188754