У нас есть сервер с базой данных, которая имеет симметричный ключ (База данных-> безопасность-> Симметричный ключ). У нас есть резервные дублирующиеся базы данных, что мы используем в качестве теста базы данных, но у нас нет этого ключа там.
Как я могу сделать этот симметричный дубликат ключа (или сделать новый точно как старое), и поместите его в существующие базы данных? Это должно иметь то же значение и ключевое имя как другое.
Это находится на SQL Server 2008.
Прежде всего при создании симметричного ключа убедитесь, что вы используете параметры KEY_SOURCE, IDENTITY_VALUE и ALGORITHM.
Если вы еще этого не сделали, создайте главный ключ базы данных и сертификат для защиты симметричного ключа.
-- Create Database Master Key
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = 'Your Database Master Key Password here'
GO
-- Create Encryption Certificate
CREATE CERTIFICATE MyCertificateName
WITH SUBJECT = 'Your Certificate Description Here'
GO
-- Create Symmetric Key
CREATE SYMMETRIC KEY MyKeyName WITH
IDENTITY_VALUE = 'Enter a key description',
ALGORITHM = AES_256,
KEY_SOURCE = 'Enter a key phrase here (keep very secret)'
ENCRYPTION BY CERTIFICATE MyCertificateName;
Параметр IDENTITY_VALUE используется для создания guid в таблице sys.symmetric_keys, которая для работы должна быть одинаковой в обеих базах данных.
Параметр KEY_SOURCE используется для создания самого ключа, поэтому убедитесь, что он точно такой же и хорошо защищен.
АЛГОРИТМ - это, конечно, алгоритм, который SQL-сервер использует для шифрования и дешифрования данных, который для работы должен быть одинаковым.
Вы должны иметь возможность запустить приведенный выше сценарий в обеих базах данных (конечно, с заменой ваших собственных значений), и он успешно расшифрует данные, зашифрованные в другой базе данных.
Если ваш существующий ключ не был создан таким образом, вам придется расшифровать все с помощью вашего старого ключа и повторно зашифровать его с помощью нового.
Здесь можно найти несколько хороших источников по созданию ключей: