Поделиться через


Прозрачное шифрование данных (TDE)

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

Функция прозрачного шифрования данных выполняет шифрование и дешифрование ввода-вывода в реальном времени для файлов данных и журналов. При шифровании используется ключ шифрования базы данных (DEK), который хранится в загрузочной записи базы данных, где можно получить к нему доступ при восстановлении. Ключ шифрования базы данных является симметричным ключом, защищенным сертификатом, который хранится в базе данных master на сервере, или асимметричным ключом, защищенным модулем расширенного управления ключами. Функция прозрачного шифрования данных защищает "неактивные" данные, то есть файлы данных и журналов. Благодаря ей обеспечивается соответствие требованиям различных законов, постановлений и рекомендаций, действующих в разных отраслях. Это позволяет разработчикам программного обеспечения шифровать данные с помощью алгоритмов шифрования AES и 3DES, не меняя существующие приложения.

Важно!

Функция прозрачного шифрования данных не обеспечивает шифрование каналов связи. Дополнительные сведения о способах шифрования данных, передаваемых по каналам связи, см. в разделе Включение шифрования соединений в ядре СУБД (диспетчер конфигурации SQL Server).

См. также:

Сведения о прозрачном шифровании данных (TDE)

Шифрование файлов базы данных выполняется на уровне страницы. Страницы в зашифрованной базе данных шифруются до записи на диск и дешифруются при чтении в память. Прозрачное шифрование данных не увеличивает размер зашифрованной базы данных.

Сведения, применимые к База данных SQL

При использовании TDE с База данных SQL версии 12 версии 12 (предварительная версия в некоторых регионах) сертификат уровня сервера, хранящийся в базе данных master, автоматически создается База данных SQL. Чтобы переместить базу данных TDE на База данных SQL необходимо расшифровать базу данных, переместить базу данных, а затем повторно включить TDE на целевом База данных SQL. Пошаговые инструкции по прозрачному шифрованию данных в База данных SQL см. в статье Прозрачное шифрование данных с помощью базы данных Azure SQL.

Предварительная версия состояния TDE применяется даже в подмножестве географических регионов, где семейство версий V12 База данных SQL теперь объявлено как общедоступное. TDE для База данных SQL не предназначено для использования в рабочих базах данных до тех пор, пока корпорация Майкрософт не объявит о повышении уровня TDE с предварительной версии до общедоступной версии. Дополнительные сведения о База данных SQL версии 12 см. в статье Новые возможности базы данных Azure SQL.

Сведения, применимые к SQL Server

После защиты базы данных ее можно восстановить с помощью правильного сертификата. Дополнительные сведения о сертификатах см. в разделе SQL Server Certificates and Asymmetric Keys.

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

Иерархия средств шифрования

На рисунке ниже показана архитектура прозрачного шифрования данных. При использовании TDE на База данных SQL настраиваются только элементы уровня базы данных (части ключа шифрования базы данных и инструкции ALTER DATABASE).

Отображает иерархию, описанную в разделе .

Использование прозрачного шифрования данных

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

Применимо к: SQL Server.
  • Создайте главный ключ

  • Создайте или получите сертификат, защищенный главным ключом

  • Создайте ключ шифрования базы данных и защитите его с помощью сертификата

  • Задайте ведение шифрования базы данных

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

USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';
go
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';
go
USE AdventureWorks2012;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2012
SET ENCRYPTION ON;
GO

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

Внимание!

Файлы резервных копий баз данных, в которых включено TDE, также шифруются с помощью ключа шифрования базы данных. Поэтому для восстановления таких резервных копий необходимо иметь сертификат, защищающий ключ шифрования базы данных. Это значит, что помимо резервного копирования базы данных обязательно необходимо сохранять резервные копии сертификатов серверов, чтобы не допустить потери данных. Если сертификат станет недоступным, это приведет к потере данных. Дополнительные сведения см. в статье SQL Server Certificates and Asymmetric Keys.

Команды и функции

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

Важно!

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

В следующей таблице представлены ссылки и объяснения команд и функций TDE.

Команда или функция Назначение
CREATE DATABASE ENCRYPTION KEY (Transact-SQL) Создает ключ, используемый для шифрования базы данных.
ALTER DATABASE ENCRYPTION KEY (Transact-SQL) Изменяет ключ, используемый для шифрования базы данных.
DROP DATABASE ENCRYPTION KEY (Transact-SQL) Удаляет ключ, использовавшийся для шифрования базы данных.
Параметры ALTER DATABASE SET (Transact-SQL) Объясняет параметр ALTER DATABASE, который используется для включения TDE.

Представления каталога и динамические административные представления

В следующей таблице показаны представления каталогов и динамические административные представления TDE.

Представление каталога или динамическое административное представление Назначение
sys.databases (Transact-SQL) Представление каталога со сведениями о базе данных.
sys.certificates (Transact-SQL) Представление каталога с сертификатами из базы данных.
sys.dm_database_encryption_keys (Transact-SQL) Динамическое административное представление со сведениями о ключах шифрования, используемых в базе данных, и состоянии шифрования базы данных.

Разрешения

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

Для просмотра метаданных, связанных с TDE, необходимо разрешение VIEW DEFINITION на сертификат.

Рекомендации

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

Состояние шифрования базы данных можно определить с помощью динамического административного представления sys.dm_database_encryption_keys. Дополнительные сведения см. выше в подразделе "Представления каталога и динамические административные представления" этого раздела.

В режиме TDE все файлы и файловые группы зашифрованы. Если какие-либо файловые группы в базе данных помечены признаком READ ONLY, то операция шифрования базы данных завершится сбоем.

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

Важно!

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

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

Ограничения

При первом шифровании базы данных, изменении ключа или дешифровании базы данных не допускаются следующие операции:

  • удаление файла из файловой группы в базе данных;

  • удаление базы данных;

  • перевод базы данных в режим «вне сети»;

  • отсоединение базы данных;

  • перевод базы данных или файловой группы в состояние READ ONLY.

При выполнении инструкций CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY или ALTER DATABASE...SET ENCRYPTION не допускаются следующие операции:

  • удаление файла из файловой группы в базе данных;

  • Удаление базы данных.

  • перевод базы данных в режим «вне сети»;

  • отсоединение базы данных;

  • перевод базы данных или файловой группы в состояние READ ONLY;

  • использование команды ALTER DATABASE;

  • запуск резервного копирования базы данных или файла базы данных;

  • запуск восстановления базы данных или файла базы данных;

  • создание моментального снимка.

Следующие операции или условия запрещают выполнение инструкций CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY или ALTER DATABASE...SET ENCRYPTION.

  • база данных предназначена только для чтения, или в ней есть файловые группы, доступные только для чтения;

  • выполняется команда ALTER DATABASE;

  • выполняется какая-либо операция резервного копирования;

  • база данных находится в состоянии восстановления или в состоянии «вне сети»;

  • идет создание моментального снимка;

  • выполняется задача обслуживания базы данных.

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

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

Прозрачное шифрование данных и журналы транзакций

Включение TDE в базе данных приводит к «обнулению» оставшейся части виртуального журнала транзакций и принудительному началу нового виртуального журнала транзакций. Это гарантирует, что после включения шифрования базы данных в журналах транзакций не останется простого текста. Состояние шифрования файла журнала можно определить, просмотрев столбец encryption_state в представлении sys.dm_database_encryption_keys, как показано в примере:

USE AdventureWorks2012;
GO
/* The value 3 represents an encrypted state 
   on the database and transaction logs. */
SELECT *
FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;
GO

Дополнительные сведения об архитектуре файла журнала SQL Server см. в разделе Журнал транзакций (SQL Server).

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

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

Прозрачное шифрование данных и системная база данных tempdb

Системная база данных tempdb будет зашифрована, если любая другая база данных в экземпляре SQL Server зашифрована с помощью TDE. Это может повлиять на производительность незашифрованных баз данных на том же экземпляре SQL Server. Дополнительные сведения о системной базе данных tempdb см. в разделе База данных tempdb.

Прозрачное шифрование данных и репликация

Репликация данных не выполняется автоматически в зашифрованном виде из базы данных с включенным TDE. Необходимо отдельно включить TDE, если нужно защитить базы данных распространителя и подписчика. При репликации моментальных снимков и начальном распределении данных для репликации транзакций и репликации слиянием данные могут храниться в незашифрованных промежуточных файлах, например файлах BCP. Во время репликации транзакций или репликации слиянием шифрование можно включить для защиты каналов связи. Дополнительные сведения см. в статье Включение шифрования соединений в компоненте Database Engine (диспетчер конфигурации SQL Server).

Прозрачное шифрование данных и данные FILESTREAM

Данные FILESTREAM не шифруются, даже если включено прозрачное шифрование данных.

Прозрачное шифрование и расширение буферного пула

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

Прозрачное шифрование данных и In-Memory OLTP

Прозрачное шифрование данных можно включить в базе данных, которая содержит объекты OLTP в памяти. Записи журнала OLTP в памяти шифруются, если TDE включено. Данные в файловой группе MEMORY_OPTIMIZED_DATA не шифруются при включенном TDE.

См. также:

Перемещение базы данных, защищенной TDE, в другую SQL ServerВместить TDE с помощьюпрозрачного шифрования данных расширенного управления ключами с Azure SQL База данных SQL Server ШифрованиеSQL Server и Ключи шифрования базы данных (ядро СУБД)Центр безопасности для базы данных SQL Server Ядро и база данных Azure SQL FILESTREAM(SQL Server)