sql server迁移和加密问题

lrl1mhuk  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(533)

我有点左右为难,需要一些帮助。我们正在将sql server 2014 enterprise edition从本地迁移到aws sql server 2017 enterprise system。
当前系统包含用于列级加密的tde和对称密钥加密。这就是乐趣的开始。我能够将数据库还原到新的2017示例,并且tde在还原后正常工作。对称密钥列级加密不起作用。
使用以下代码创建对称加密:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'passwowrd'; 
CREATE CERTIFICATE AUPW WITH SUBJECT = 'AccountsUsers-Credentials'; 
CREATE SYMMETRIC KEY AccountsUsers_Credentials
    WITH ALGORITHM = AES_256 
    ENCRYPTION BY CERTIFICATE AUPW;

然后,在尝试将主密钥和对称密钥恢复到新服务器时,我将执行以下步骤。
在sql server 2014示例上:

OPEN MASTER KEY DECRYPTION BY PASSWORD = N'password';
GO
BACKUP MASTER KEY
    TO FILE = N'...\MSSQL\DATA\masterkey.dmk'
    ENCRYPTION BY PASSWORD = 'password'
GO
BACKUP CERTIFICATE AUPW
    TO FILE ='...\MSSQL\DATA\AUPW.cer'  
      WITH PRIVATE KEY   
      (FILE ='...\MSSQL\DATA\AUPW.pk', ENCRYPTION BY PASSWORD ='password')

在sql server 2017示例上,在还原数据库并确保tde正常工作且数据库可访问之后,我尝试运行以下代码:

USE NewDB
GO
RESTORE MASTER KEY 
FROM FILE = N'...\MSSQL\DATA\Masterkey.dmk'
decryption by password = 'password'
encryption by password = 'password'
GO

CREATE CERTIFICATE AUPW FROM FILE ='...\MSSQL\DATA\AUPW.cer'
WITH PRIVATE KEY(FILE='...\MSSQL\DATA\AUPW.pk',
DECRYPTION BY PASSWORD='password',
ENCRYPTION BY PASSWORD='password');

但是,在运行restore master key命令时,出现以下错误:
消息15329,级别16,状态30,第43行
无法解密当前主密钥。如果这是数据库主密钥,则应在执行此操作之前尝试在会话中打开它。force选项可用于忽略此错误并继续操作,但由旧主密钥加密的数据将丢失。
我试着打开主密钥,得到了错误,但是我使用的密码与备份dbmk时打开它时使用的密码相同。
消息15313,16级,状态1,第41行
密钥未使用指定的解密程序加密。
force选项也不起作用,创建新的主密钥也不起作用。
有人看到我做错什么了吗?我现在唯一想做的另一件事是在迁移之前关闭所有加密,但我并不真正喜欢这个选项。
谢谢你的帮助。

z31licg0

z31licg01#

目标中出现错误的原因是由于目标中的服务主密钥(在sql server示例级别)与源中的不同。
数据库主密钥由源服务器上的服务主密钥加密。参考第条

因此,在源代码中,在备份之前,首先需要删除服务主密钥加密,并添加额外的密码加密。

alter master key add encryption by password = 'Pass@1234'

alter master key drop encryption by service master key

恢复后,在目标中,必须执行以下步骤:

open master key decryption by password = 'Pass@1234'

alter master key add encryption by service master key

alter master key drop encryption by password = 'Pass@1234'

请参阅以下文章:
加密步骤
启用加密的数据库的备份和还原步骤

相关问题