將 TDE 數據庫備份和恢復到不同的伺服器
似乎有很多關於備份和恢復 TDE 數據庫的資訊,但它們通常都是相同的資訊,並且在某些點上似乎存在一些矛盾。我有一些具體的問題希望有人能回答。
- 我必須備份數據庫主密鑰並恢復它嗎?或者使用相同的密碼重新創建它就足夠了嗎?
- 與 #1 類似,我是否需要備份和恢復服務主密鑰?
- 如果我已備份 TDE 加密證書和證書密鑰,是否可以將其還原到具有不同 DMK(和 SMK)的不同數據庫而不會失去數據?
- 如果#3是肯定的,那麼如果您可以在恢復Cert時生成新的,那麼備份DMK和SMK的目的是什麼?
您需要參考TDE 加密架構
我必須備份數據庫主密鑰並恢復它嗎?或者使用相同的密碼重新創建它就足夠了嗎?
是和否。始終備份您的 DMK!
是的
數據庫主密鑰用於加密數據庫內的其他密鑰和證書。如果它被刪除或損壞,SQL Server 可能無法解密這些密鑰,並且使用它們加密的數據將實際上失去。因此,您應該備份數據庫主密鑰並將備份儲存在安全的異地位置。
是- 當您必須在 DR 方案期間恢復數據庫時(重建伺服器)。
否- 當您沒有證書私鑰密碼並且想要將證書還原到不同的伺服器時,您可以簡單地使用新密碼備份證書並在不同的伺服器上還原。
請記住 - DMK 不會加密數據庫。它用於加密證書和其他密鑰以保護它們。
與 #1 類似,我是否需要備份和恢復服務主密鑰?
一種罕見的情況,但最好將其作為最佳實踐的一部分進行備份。SMK (
##MS_ServiceMasterKey##
) 是加密的根,在第一次需要加密另一個密鑰時自動生成。如果 SMK 已損壞,則您可能需要將其還原。對於 3 和 4 ..
你可以,但你為什麼要這樣做?
您必須關閉加密,使用新私鑰創建新證書,然後打開加密。根據您的數據庫大小,這可能需要一些時間。
請記住,DEK 是對數據庫進行加密和解密的工具。
作為旁注,請參閱此腳本以獲取有關數據庫、加密狀態以及其他有用資訊的資訊。
了解如何管理將 TDE 加密數據庫從一台伺服器移動到另一台伺服器的關鍵是了解證書的私鑰是解密啟用 TDE 的數據庫中的數據庫加密密鑰所需的唯一密鑰。證書下方的加密層次結構可以包含不同的密鑰值,只要它功能齊全。恢復 TDE 證書和私鑰後,伺服器將使用主數據庫中的 DMK 對其進行加密。如果 DMK 不存在並且您創建一個新的,那麼它將使用新的 DMK 保護證書私鑰。當您執行創建 DMK 的命令時,伺服器會使用您提供的密碼對其進行加密,並使用 SMK 對其進行加密,因此您不需要 不需要使用相同的密碼創建它,因為伺服器可以在需要時使用 SMK 對其進行解密。只要層次結構中的每個密鑰都可以解密後續密鑰,TDE 就可以工作。
SQL Server 中的加密層次結構是基於 ansi x.917 標準實現的。雖然備份和恢復 DMK 可能不適用於 TDE,但它在恢復具有列級加密的數據庫時效果很好。如果沒有備份 DMK 和 SMK 的命令,那麼使用列加密恢復數據庫將需要恢復主數據庫並在目標伺服器上實現相同的服務帳戶以重新控制加密的列數據,這實際上是在重建伺服器恢復一個數據庫。