Как я могу продублировать симметричный ключ SQL Server? - PullRequest
5 голосов
/ 03 апреля 2010

У нас есть сервер с базой данных, которая имеет симметричный ключ (База данных -> Безопасность -> Симметричный ключ). У нас есть резервные копии дублирующих баз данных, которые мы используем в качестве тестовых баз данных, но у нас нет этого ключа там.

Как мне продублировать этот симметричный ключ (или сделать новый точно такой же, как старый) и поместить его в существующие базы данных? У него должно быть то же значение и имя ключа, что и у другого.

Это на SQL Server 2008.

альтернативный текст http://i39.tinypic.com/mhwnds.png

1 Ответ

7 голосов
/ 07 апреля 2010

Когда вы создаете симметричный ключ, убедитесь, что вы используете параметры 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 для шифрования и дешифрования данных, который должен быть одинаковым для работы.

Вы должны быть в состоянии запустить вышеупомянутый сценарий в обеих базах данных (конечно, вместо ваших собственных значений), и он успешно расшифрует данные, зашифрованные в другой базе данных.

Если ваш существующий ключ не был создан таким образом, вам придется расшифровать все с помощью старого ключа и повторно зашифровать его с новым.

Несколько хороших источников по созданию ключей можно найти здесь:

...