Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
В этом разделе описывается, как создать идентичные симметричные ключи на двух разных серверах в SQL Server с помощью Transact-SQL. Для расшифровки текста необходим ключ, который был использован для его шифрования. Если шифрование и расшифровка выполняются в той же базе данных, ключ будет храниться в базе данных и будет доступным для шифрования и расшифровки в зависимости от разрешений. Но если шифрование и расшифровка выполняются в разных базах данных или на разных серверах, ключ будет храниться в одной из них и будет недоступным для использования в другой.
ограничения и ограничения
После создания симметричный ключ должен быть зашифрован с помощью хотя бы одного из следующих средств: сертификат, пароль, симметричный ключ, асимметричный ключ или PROVIDER. Ключ может быть зашифрован более чем один раз для каждого типа шифрования. Другими словами, один симметричный ключ может быть зашифрован с использованием нескольких сертификатов, симметричных ключей и асимметричных ключей одновременно.
Если симметричный ключ шифруется с использованием пароля вместо открытого ключа главного ключа базы данных, то используется алгоритм шифрования TRIPLE DES. Поэтому ключи, созданные с помощью сильных алгоритмов шифрования, таких как AES, защищены с помощью более слабого алгоритма.
Безопасность
Разрешения
Требуется разрешение ALTER ANY SYMMETRIC KEY в базе данных. Если AUTHORIZATION задано, требуется разрешение IMPERSONATE для пользователя базы данных или разрешения ALTER для роли приложения. Если шифрование выполняется с использованием сертификата или асимметричного ключа, требуется разрешение VIEW DEFINITION для сертификата или асимметричного ключа. Только имена входа Windows, имена входа SQL Server и роли приложений могут принадлежать симметричным ключам. Симметричные ключи не могут принадлежать группам и ролям.
Использование Transact-SQL
Создание идентичных симметричных ключей на двух разных серверах
В обозревателе объектов подключитесь к экземпляру ядра СУБД.
На стандартной панели выберите пункт Создать запрос.
Создайте ключ, выполнив следующие операторы: CREATE MASTER KEY, CREATE CERTIFICATE и CREATE SYMMETRIC KEY. Замените
<password>допустимым паролем.CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>'; GO CREATE CERTIFICATE [cert_keyProtection] WITH SUBJECT = 'Key Protection'; GO CREATE SYMMETRIC KEY [key_DataShare] WITH KEY_SOURCE = 'My key generation bits. This is a shared secret!', ALGORITHM = AES_256, IDENTITY_VALUE = 'Key Identity generation bits. Also a shared secret' ENCRYPTION BY CERTIFICATE [cert_keyProtection]; GOПодключитесь к отдельному экземпляру сервера, откройте новое окно запросов и выполните приведенные выше SQL-инструкции для создания того же ключа на втором сервере.
Проверьте ключи, сначала выполнив OPEN SYMMETRIC KEY инструкцию и инструкцию SELECT ниже на первом сервере.
OPEN SYMMETRIC KEY [key_DataShare] DECRYPTION BY CERTIFICATE cert_keyProtection; GO SELECT encryptbykey(key_guid('key_DataShare'), 'MyData' ) GO -- For example, the output might look like this: 0x2152F8DA8A500A9EDC2FAE26D15C302DA70D25563DAE7D5D1102E3056CE9EF95CA3E7289F7F4D0523ED0376B155FE9C3На втором сервере вставьте результат выполнения предыдущего оператора SELECT в следующий код в качестве значения
@blob, а затем запустите этот код, чтобы проверить, что ключ-дубликат может расшифровать шифротекст.OPEN SYMMETRIC KEY [key_DataShare] DECRYPTION BY CERTIFICATE cert_keyProtection; GO DECLARE @blob varbinary(8000); SELECT CONVERT(varchar(8000), decryptbykey(@blob)); GOЗакройте симметричные ключи на обоих серверах.
CLOSE SYMMETRIC KEY [key_DataShare]; GO
Изменения шифрования в SQL Server 2017 CU2
Для шифрования в SQL Server 2016 используется алгоритм хэширования SHA1. Начиная с SQL Server 2017, вместо него используется SHA2. Это означает, что расшифровка в SQL Server 2017 элементов, которые были зашифрованы в SQL Server 2016, может потребовать дополнительных действий. Вот дополнительные шаги.
- Убедитесь, что в SQL Server 2017 установлен по меньшей мере накопительный пакет обновления 2 (CU2).
- См. накопительное обновление 2 для SQL Server 2017 для получения важных сведений.
- После установки CU2 включите флаг трассировки 4631 в SQL Server 2017:
DBCC TRACEON(4631, -1);- Флаг трассировки 4631 впервые появился в SQL Server 2017. Флаг трассировки 4631 должен быть
ONглобально до создания главного ключа, сертификата или симметричного ключа в SQL Server 2017. Так эти элементы будут пригодны для взаимодействия с SQL Server 2016 и более ранних версий. Этот флаг трассировки должен быть временно включен только для повторного шифрования данных с помощью ключей, производных ОТ SHA2.
- Флаг трассировки 4631 впервые появился в SQL Server 2017. Флаг трассировки 4631 должен быть
Дополнительные сведения см. в разделе: