Sql-Server

為什麼 SQL Server 需要私鑰來加密備份?

  • August 28, 2019

我正在設置一個實驗,我在伺服器上只有證書的公鑰部分。證書是在另一台伺服器上生成的,我沒有恢復私鑰。

當我嘗試使用該證書加密備份數據庫時,我收到此錯誤:

Msg 15556, Level 16, State 1, Line 15
Cannot decrypt or encrypt using the specified certificate, either because it has no private key or because the password provided for the private key is incorrect.
Msg 3013, Level 16, State 1, Line 15
BACKUP DATABASE is terminating abnormally.

那是 SQL Server 清楚地告訴我它需要私鑰進行加密。

但這是為什麼呢?

我的理解是,BACKUP 會即時生成對稱密鑰,使用證書中的公鑰保護對稱密鑰,並將其與備份內容一起儲存。然後使用對稱密鑰加密實際的備份內容,因為對稱加密通常(總是?)比非對稱加密快。

為了恢復備份,我需要與加密中使用的公鑰對應的私鑰。這是預期的。

我只是不明白為什麼在備份操作期間需要私鑰。在文件或其他任何地方都沒有找到答案。有人可以解釋一下或指出一些文件說明為什麼會這樣嗎?

我只是不明白為什麼在備份操作期間需要私鑰。

簡答

這就是它目前的實施方式。

更長的答案

我沒有查看所有其他呼叫是否需要所有依賴項(從邏輯上講,不需要加密數據,只需按照您已經說明的方式解密),但它已被檢查並因此給出了目前編寫和實現方式的錯誤。

如果您擔心在同一台伺服器或多台伺服器上擁有密鑰以進行備份操作,您可能需要考慮使用與備份加密集成的 HSM。

您可以將加密密鑰與擴展密鑰管理 (EKM) 提供程序集成。

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