Я использую следующий код для создания SQL шифрования ключейКак создать резервную копию Symmetric Key в SQL Server?
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Pass>'
CREATE CERTIFICATE MyEncryptCert WITH SUBJECT = 'Descryption', EXPIRY_DATE = '2115-1-1'
CREATE SYMMETRIC KEY MySymmetricKey WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE MyEncryptCert
Как зашифровать данные
OPEN SYMMETRIC KEY MySymmetricKey DECRYPTION BY CERTIFICATE MyEncryptCert
SET @Result = ENCRYPTBYKEY(KEY_GUID('MySymmetricKey'), '<String to encrypt>')
CLOSE SYMMETRIC KEY MySymmetricKey
Я могу резервное копирование базы данных Master Key и сертификат.
BACKUP MASTER KEY TO FILE = 'c:\temp\key' ENCRYPTION BY PASSWORD = '<Pass>';
BACKUP CERTIFICATE MyEncryptCert TO FILE = 'c:\temp\cert' WITH PRIVATE KEY(ENCRYPTION BY PASSWORD='<Pass>', FILE='C:\temp\cert.pvk')
Но я не могу создать резервную копию Symmetric Key. Без этого я не могу расшифровать зашифрованные данные, если переместить зашифрованную таблицу в другую базу данных.
Есть ли какие-либо решения?
P.S. Я пробовал следующий код, но кажется, что это не безопасно для меня, потому что если вы знаете KEY_SOURCE и IDENTITY_VALUE вы на самом деле не нужен оригинальный мастер-ключ базы данных и сертификат для расшифровки данных
CREATE SYMMETRIC KEY MySymmetricKey WITH KEY_SOURCE = '<Pass1>', ALGORITHM = AES_256, IDENTITY_VALUE = '<Pass2>' ENCRYPTION BY CERTIFICATE MyEncryptCert
Благодарим за ответ. Вывод: я не могу выполнить резервное копирование Symmetric Key. –
Не напрямую. Но вы можете воссоздать один и тот же ключ, предоставив тот же ключевой материал во время создания. Который так хорош, как резервное копирование. –