TDE是否需要在DR服务器/测试服务器上备份服务主密钥(SMK)和数据库主密钥(DMK)

时间:2019-08-20 15:50:17

标签: sql sql-server

我正在尝试通过执行以下步骤来实现TDE

在源服务器上:服务主密钥已经存在

  1. 在主数据库上创建主密钥

  2. 在主数据库上创建证书

  3. 在用户数据库上创建数据库加密密钥并在此数据库上启用TDE

  4. 具有私钥(.pvk)和密码的备份证书(.cer)

当我需要在灾难恢复/测试服务器上恢复启用TDE的数据库时

测试服务器:

  1. 从源服务器的备份创建证书

  2. 还原数据库

我发现我们也可以备份服务主密钥(SMK)和数据库主密钥(DMK)。

我的问题是:

  1. 为什么我们需要备份SMK和DMK?仅证书备份文件.cer和私钥文件.pvk和密码还不够?

  2. 我需要从源服务器使用相同的SMK和DMK来还原测试/ DR服务器上的数据库备份吗?

  3. 为什么在下面的文章中他们没有还原SMK和DMK?

https://www.mssqltips.com/sqlservertip/3572/recovering-a-sql-server-tde-encrypted-database-successfully/

在测试服务器上,如果SQL安装中已经存在服务主密钥。

如果我创建数据库主密钥(是否需要从源备份中还原)

那么接下来的步骤仅仅是从源服务器还原证书,然后还原数据库吗?

请阐明一下。

1 个答案:

答案 0 :(得分:1)

简短的答案:您无需从源服务器备份DMK或SMK即可恢复数据库;该证书就足够了。

更长的答案是,SMK和DMK均旨在对encryption hierarchy中的内容进行加密。对于TDE,主数据库的DMK对TDE证书的私钥部分进行加密。主数据库的DMK由SMK加密。这样一来,SQL无需用户干预即可打开证书,这又使数据库 start 无需用户干预。只要您拥有包含公钥和私钥部分的证书备份,就可以将其还原到所需的任何服务器,并使用目标服务器的主数据库DMK加密私钥部分,并且您的密码应该是g2g。 >

一个特定于DMK和可用性组的警告是,如果您的用户数据库位于具有DMK的AG中,则您希望SMK在AG中的所有服务器上都相同。为了进行物理锁模拟,您要对DMK的私钥进行锁,并确保所有服务器都具有相同密钥的副本。如果您这样做,那么当您进行故障转移时,新的主服务器的密钥将无法放入锁中,您将必须使用拥有的密钥(即密码)来打开它。然后重新键入锁(即alter master key add encryption by service master key)。