У меня небольшое затруднение, с которым мне нужна помощь. Мы находимся в процессе миграции версии SQL Server 2014 Enterprise с локальной системы на систему AWS SQL Server 2017 Enterprise.
Текущая система содержит как 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, я получаю следующую ошибку:
Msg 15329, уровень 16, состояние 30, строка 43
Текущий главный ключ не может быть расшифрован. Если это главный ключ базы данных, вы должны попытаться открыть его в сеансе перед выполнением этой операции. Параметр FORCE можно использовать, чтобы игнорировать эту ошибку и продолжить операцию, но данные, зашифрованные старым главным ключом, будут потеряны.
Я попытался открыть главный ключ и получил сообщение об ошибке, но использую тот же пароль, который использовал для его открытия при резервном копировании DBMK.
Msg 15313, уровень 16, состояние 1, строка 41
Ключ не зашифрован с помощью указанного дешифратора.
Опция принудительного действия тоже не работает, равно как и создание нового мастер-ключа.
Кто-нибудь видит, что, черт возьми, я здесь делаю неправильно? Единственное, что я могу сделать прямо сейчас, - это отключить все шифрование перед миграцией, но я не очень-то фанат этой опции.
Цените помощь.