请考虑以下图像,该图显示了SQL Server中使用的加密层次结构。请注意第一个蓝色块,表示SMK使用DPAPI加密。 DPAPI使用当前登录的用户凭据(+更多)来加密数据,因此它是特定于机器的。这意味着SMK(以及DMK和任何派生密码)将是特定于机器的(实际上它是由SQL Server的设置生成的)。 OTOH,我可以在SQL Server中创建/备份X.509证书(使用CREATE CERTIFICATE,BACKUP CERTIFICATE等)。
情景/问题:
我正在开发一个需要在数据库列中加密和存储CC信息的Web App。我需要稍后在另一台机器上访问这些数据,这样在另一台机器上恢复时,db备份应该是实际可读的(尽管对于有权访问上述证书的人来说)。
我想知道当SMK特定于当前的SQL Server实例时,我应该如何在另一台机器上恢复备份?一旦在另一台机器上恢复这些加密数据,我该怎么办?
更新:如果我错了,请纠正我!
我们可以使用BACKUP SERVICE MASTER KEY TO FILE
命令来支持当前使用的SMK。但是,可以使用RESTORE SERVICE MASTER KEY FROM FILE
命令在任何其他SQLServer(在同一台机器上/外)恢复此密钥。恢复SMK后,使用DPAPI再次对其进行加密,以便密钥本身可以存储在计算机的某个位置。
任何帮助都将受到高度赞赏,
答案 0 :(得分:0)
该图显示证书可以通过DMK或密码进行保护。如果只用密码保护它,它应该是可移植的。