SQL Server и ключи шифрования базы данных (компонент ядра СУБД)

Область применения:SQL Server

SQL Server использует ключи шифрования для защиты данных, учетных данных и сведений о подключении, хранящихся в базе данных сервера. SQL Server имеет два типа ключей: симметричный и асимметричный. В симметричных ключах для шифрования и расшифровки данных используется одинаковый пароль. При использовании асимметричных ключей один пароль применяется для шифрования данных ( открытый ключ), а другой для расшифровки данных ( закрытый ключ).

В SQL Server ключи шифрования включают сочетание открытых, частных и симметричные ключей, которые используются для защиты конфиденциальных данных. Симметричный ключ создается во время инициализации SQL Server при первом запуске экземпляра SQL Server. Ключ используется SQL Server для шифрования конфиденциальных данных, хранящихся в SQL Server. Открытые и закрытые ключи создаются операционной системой и используются для защиты симметричного ключа. Пара открытого и закрытого ключей создается для каждого экземпляра SQL Server, в которой хранятся конфиденциальные данные в базе данных.

Применение ключей SQL Server и базы данных

В SQL Server есть два основных варианта использования ключей: главный ключ службы (SMK), создаваемый в экземпляре SQL Server и для него, и главный ключ базы данных (DMK), используемый для базы данных.

Главный ключ службы

Главный ключ службы является корнем иерархии шифрования SQL Server. SMK создается автоматически при первом запуске экземпляра SQL Server и используется для шифрования пароля связанного сервера, учетных данных и главного ключа базы данных в каждой базе данных. SMK шифруется с использованием ключа локального компьютера через Windows Data Protection API (DPAPI). DPAPI использует ключ, производный от учетных данных Windows учетной записи службы SQL Server и учетных данных компьютера. Главный ключ службы может быть расшифрован лишь той учетной записью службы, под которой он был создан, или участником, имеющим доступ к учетным данным компьютера.

Главный ключ службы может быть открыт только учетной записью службы Windows, под которой он был создан, либо участником, имеющим доступ к имени и паролю учетной записи службы.

SQL Server использует алгоритм шифрования AES для защиты главного ключа службы (SMK) и главного ключа базы данных (DMK). AES - это новый алгоритм шифрования, отличный от алгоритма 3DES, используемого в более ранних версиях. После обновления экземпляра компонента ядро СУБД до SQL Server необходимо пересоздать SMK и DMK, чтобы перевести мастер-ключи на AES. Дополнительные сведения о повторном создании SMK см. в статьях ALTER SERVICEALTER SERVICE MASTER KEY (Transact-SQL) и ALTER MASTER KEY (Transact-SQL).

Главный ключ базы данных

Главный ключ базы данных — это симметричный ключ, который применяется для защиты закрытых ключей сертификатов и асимметричный ключей, которые есть в базе данных. Он также может использоваться для шифрования данных, но он имеет ограничения длины, которые делают его менее практическим для данных, чем использование асимметричного ключа. Чтобы включить автоматическую расшифровку главного ключа базы данных, копия этого ключа шифруется с использованием главного ключа службы (SMK). Ключ хранится как в базе данных, где используется ключ, так и в системной базе данных master .

Копия DMK, хранящаяся в системной базе данных master, незаметно обновляется при каждом изменении DMK. Однако это значение по умолчанию можно изменить с помощью параметра DROP ENCRYPTION BY SERVICE MASTER KEY инструкции ALTER MASTER KEY . DmK, который не зашифрован главным ключом службы, должен быть открыт с помощью OPEN MASTER KEY инструкции и пароля.

Управление ключами SQL Server и базы данных

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

Для управления симметричными ключами можно использовать средства, включенные в SQL Server, для выполнения следующих действий:

  • Создайте резервную копию ключей сервера и базы данных, чтобы использовать их для восстановления установки сервера или в рамках плановой миграции.

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

  • Удаление зашифрованных данных из базы данных в маловероятной ситуации, когда не удается обратиться к зашифрованным данным.

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

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

Важная информация по безопасности

Для доступа к объектам, защищенным главным ключом службы, требуется учетная запись службы SQL Server, которая использовалась для создания ключа или учетной записи компьютера (компьютера). Т. е. учетная запись компьютера привязана к системе, в которой был создан ключ. Вы можете изменить учетную запись службы SQL Server или учетную запись компьютера без потери доступа к ключу. Однако если изменить обе учетные записи, доступ к главному ключу службы будет потерян. Если доступ к главному ключу службы будет потерян без одного из этих элементов, то не удастся расшифровать данные и объекты, зашифрованные с помощью первоначального ключа.

Соединения, защищенные с помощью главного ключа службы, не могут быть восстановлены без него.

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

Внимание

Если любой доступ к описанным выше ключам потерян, будет потерян доступ к объектам, соединениям и данным, защищенным этими ключами. Можно восстановить главный ключ службы, как описано в приведенных ссылках, или вернуться к первоначальной системе шифрования, чтобы восстановить доступ. Не существует никакого «обходного пути» для восстановления доступа.

В этом разделе

Расширенное управление ключами (EKM)
Объясняет, как использовать сторонние системы управления ключами с SQL Server.

Создание резервной копии главного ключа службы

Восстановление главного ключа службы

Создание главного ключа базы данных

Создание резервной копии главного ключа базы данных

Восстановление главного ключа базы данных

Создание идентичных симметричных ключей на двух серверах

Включение TDE в SQL Server с помощью EKM

Расширенное управление ключами с помощью Azure Key Vault (SQL Server)

Шифрование столбца данных

CREATE MASTER KEY (Transact-SQL)

ALTER SERVICE ALTER SERVICE MASTER KEY (Transact-SQL)

Восстановление главного ключа базы данных

См. также

Резервное копирование и восстановление ключей шифрования служб Reporting Services
Удаление и повторное создание ключей шифрования (диспетчер конфигурации служб SSRS)
Добавление и удаление ключей шифрования для масштабного развертывания (диспетчер конфигурации служб SSRS)
Прозрачное шифрование данных (TDE)