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

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

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

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

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

Копия DMK, хранящаяся в master системной базе данных, молча обновляется при каждом изменении DMK. Вы можете изменить это значение по умолчанию, используя параметр DROP ENCRYPTION BY SERVICE MASTER KEYALTER MASTER KEY (Transact-SQL). DMK, не зашифрованный мастер-ключом сервиса, должен быть открыт с помощью инструкции OPEN MASTER KEY OPEN MASTER KEY (Transact-SQL) и пароля.

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

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

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

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

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

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

Вы не сможете восстановить соединения, защищённые сервисным мастер-ключом, если у вас нет этого ключа.

Чтобы получить доступ к объектам и данным, защищённым мастер-ключом базы данных, нужен только пароль, который помогает защитить ключ.

Внимание

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