- Прозрачное шифрование данных (TDE)
- Сведения о прозрачном шифровании данных (TDE)
- Сведения, применимые к База данных SQL
- Сведения, применимые к SQL Server
- Иерархия средств шифрования
- Включить TDE
- Команды и функции
- Представления каталога и динамические административные представления
- Разрешения
- Рекомендации
- Ограничения
- Проверка TDE
- TDE и журналы транзакций
- TDE и системная база данных tempdb
- TDE и репликация
- TDE и Always On
- TDE и данные FILESTREAM
- Удаление TDE
- TDE и расширение буферного пула
- TDE и выполняющаяся в памяти OLTP
Прозрачное шифрование данных (TDE)
Применимо к: SQL Server (все поддерживаемые версии) База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Параллельное хранилище данных
Прозрачное шифрование данных (TDE) позволяет шифровать файлы данных SQL Server, База данных SQL Azure и Azure Synapse Analytics. Это так называемое шифрование неактивных данных.
Чтобы защитить базу данных, можно принять следующие меры предосторожности.
- Разработка безопасной системы.
- Шифрование конфиденциальных ресурсов.
- Создание брандмауэра вокруг серверов баз данных.
Но если злоумышленник украдет физический носитель, например диски или ленты резервного копирования, то он сможет восстановить или подключить базу данных и просмотреть ее данные.
Одним из решений может стать шифрование конфиденциальных данных в базе данных и использование сертификата для защиты ключей шифрования данных. Таким образом, пользователи без ключей не смогут использовать эти данные. Но этот тип защиты необходимо запланировать заранее.
Функция прозрачного шифрования данных выполняет шифрование и дешифрование ввода-вывода в реальном времени для файлов данных и журналов. Шифрование использует ключ шифрования базы данных (DEK). Загрузочная запись базы данных хранит ключ для доступности во время восстановления. DEK является симметричным ключом. Он защищен сертификатом, который хранится в базе данных master сервера, или асимметричным ключом, который защищает модуль расширенного управления ключами.
Функция прозрачного шифрования данных защищает неактивные данные, то есть файлы данных и журналов. Благодаря ей обеспечивается соответствие требованиям различных законов, постановлений и рекомендаций, действующих в разных отраслях. Это позволяет разработчикам программного обеспечения шифровать данные с помощью алгоритмов шифрования AES и 3DES, не меняя существующие приложения.
Функция прозрачного шифрования данных не обеспечивает шифрование каналов связи. Дополнительные сведения о способах шифрования данных, передаваемых по каналам связи, см. в разделе Включение шифрования соединений в ядре СУБД (диспетчер конфигурации SQL Server).
См. также:
Сведения о прозрачном шифровании данных (TDE)
Шифрование файлов базы данных выполняется на уровне страницы. Страницы в зашифрованной базе данных шифруются до записи на диск и дешифруются при чтении в память. Прозрачное шифрование данных не увеличивает размер зашифрованной базы данных.
Сведения, применимые к База данных SQL
При использовании прозрачного шифрования данных с База данных SQL версии 12 База данных SQL автоматически создает сертификат на уровне сервера, хранящийся в базе данных master. Чтобы переместить базу данных TDE в База данных SQL, расшифровывать ее не нужно. Дополнительные сведения об использовании прозрачного шифрования данных с База данных SQL см. в статье Прозрачное шифрование данных в базе данных SQL Azure.
Сведения, применимые к SQL Server
После защиты базы данных ее можно восстановить с помощью правильного сертификата. Дополнительные сведения о сертификатах см. в разделе SQL Server Certificates and Asymmetric Keys.
После включения прозрачного шифрования данных немедленно создайте резервную копию сертификата и связанного с ним закрытого ключа. Если сертификат становится недоступным или вы восстанавливаете или подключаете базу данных на другом сервере, вам потребуются резервные копии сертификата и закрытого ключа. В противном случае вы не сможете открыть базу данных.
Храните сертификат шифрования, даже если вы отключили прозрачное шифрование данных в базе данных. Несмотря на то что база данных не зашифрована, части журнала транзакций могут оставаться защищенными. Вам также может потребоваться сертификат для некоторых операций, пока не будет выполнено полное резервное копирование базы данных.
Сертификат, который превысил свой срок действия, все еще может быть использован для шифрования и расшифровки данных с помощью прозрачного шифрования данных.
Иерархия средств шифрования
На рисунке ниже показана архитектура прозрачного шифрования данных. При использовании прозрачного шифрования данных в База данных SQL пользователь может настраивать только элементы уровня базы данных (ключ шифрования базы данных и фрагменты ALTER DATABASE).
Включить TDE
Чтобы использовать прозрачное шифрование данных, выполните следующие действия.
Применимо к: SQL Server.
Создайте главный ключ.
Создайте или получите сертификат, защищенный главным ключом.
Создайте ключ шифрования базы данных и защитите его с помощью сертификата.
Задайте шифрование базы данных.
В следующем примере демонстрируется шифрование и дешифрование базы данных AdventureWorks2012 с помощью сертификата с именем MyServerCert , установленного на сервере.
Операции шифрования и дешифрования запланированы в фоновых потоках SQL Server. Состояние этих операций можно просмотреть в представлениях каталога и динамических административных представлениях в таблице далее в этой статье.
Файлы резервной копии для баз данных с TDE-шифрованием также шифруются с помощью ключа шифрования базы данных. Поэтому для восстановления таких резервных копий необходимо иметь сертификат, защищающий ключ шифрования базы данных. Следовательно, в дополнение к резервному копированию базы данных обязательно сохраняйте резервные копии сертификатов сервера. Если сертификат станет недоступным, это приведет к потере данных.
Команды и функции
Чтобы использовать следующие инструкции для приема сертификатов 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 версии, предшествующей SQL Server 2008, импортируются в базу данных с помощью SQL Server 2008 или более поздней версии и шифруются с помощью TDE.
Чтобы отслеживать изменения в состоянии прозрачного шифрования для базы данных, используйте аудит базы данных SQL или подсистему аудита SQL Server. Для SQL Server прозрачное шифрование данных отслеживается в группе действий аудита DATABASE_CHANGE_GROUP, которую можно найти в списке Действия и группы действий подсистемы аудита SQL Server.
Ограничения
При первом шифровании базы данных, изменении ключа или дешифровании базы данных не допускаются следующие операции:
удаление файла из файловой группы в базе данных;
удаление базы данных;
перевод базы данных в автономный режим;
отсоединение базы данных;
перевод базы данных или файловой группы в состояние 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
Чтобы включить TDE в базе данных, SQL Server должен выполнить проверку шифрования. Проверка считывает каждую страницу из файлов данных в буферный пул, а затем записывает зашифрованные страницы обратно на диск.
Чтобы обеспечить более полный контроль над проверкой шифрования, SQL Server 2019 (15.x) вводит сканирование TDE, которое имеет синтаксис приостановки и возобновления. Вы можете приостановить сканирование, когда рабочая нагрузка в системе будет очень высокой или в течение критически важного для бизнеса периода, а затем возобновить сканирование позже.
Чтобы приостановить сканирование шифрования TDE, используйте следующий синтаксис:
Подобным образом вы можете возобновить сканирование шифрования TDE с помощью следующего синтаксиса:
Столбец encryption_scan_state добавлен в динамическое административное представление sys.dm_database_encryption_keys. Он показывает текущее состояние сканирования шифрования. Кроме того, появился столбец encryption_scan_modify_date, который содержит дату и время последнего изменения состояния сканирования шифрования.
Если экземпляр SQL Server перезапускается, когда сканирование шифрования приостановлено, в журнал ошибок при запуске заносится сообщение. Сообщение указывает, что существующее сканирование приостановлено.
Функция приостановки и возобновления TDE сейчас недоступна в Базе данных SQL Azure, Управляемом экземпляре SQL Azure и Azure Synapse Analytics.
TDE и журналы транзакций
Использование TDE для базы данных удаляет оставшуюся часть текущего журнала виртуальных транзакций. Удаление приводит к принудительному созданию следующего журнала транзакций. Это поведение гарантирует, что после включения шифрования базы данных в журналах не останется простого текста.
Состояние шифрования файла журнала можно определить, просмотрев столбец encryption_state в представлении sys.dm_database_encryption_keys , как показано в примере:
Дополнительные сведения об архитектуре файлов журнала SQL Server см. в разделе Журнал транзакций (SQL Server).
До изменения ключа шифрования базы данных все данные, записанные в журнале транзакций, будут зашифрованы с помощью предыдущего ключа шифрования базы данных.
Если необходимо дважды изменить ключ шифрования базы данных, необходимо выполнить резервное копирование журнала, прежде чем можно будет снова изменить ключ шифрования базы данных.
TDE и системная база данных tempdb
Системная база данных tempdb будет шифроваться, если с помощью TDE шифруется любая другая база данных в экземпляре SQL Server. Это может влиять на производительность незашифрованных баз данных в том же экземпляре SQL Server. Дополнительные сведения о системной базе данных tempdb см. в разделе База данных tempdb.
TDE и репликация
Репликация данных не выполняется автоматически в зашифрованном виде из базы данных с включенным TDE. Необходимо отдельно включить TDE, если нужно защитить базы данных распространителя и подписчика.
Репликация моментальных снимков может хранить данные в незашифрованных промежуточных файлах, таких как BCP-файлы. Это возможно и для начального распределения данных для транзакций и репликации слиянием. Во время такой репликации можно включить шифрование для защиты канала связи.
TDE и Always On
Чтобы зашифровать базы данных, которые входят в группу доступности, создайте главный ключ и сертификаты или асимметричный ключ (EKM) во всех вторичных репликах перед созданием ключа шифрования базы данных на первичной реплике.
Если сертификат используется для защиты ключа шифрования базы данных (DEK), сделайте резервную копию сертификата, созданного на первичной реплике, а затем создайте сертификат из файла во всех вторичных репликах перед созданием ключа шифрования базы данных на первичной реплике.
TDE и данные FILESTREAM
Данные FILESTREAM не шифруются, даже если включено прозрачное шифрование данных.
Удаление TDE
Удалите шифрование из базы данных с помощью инструкции ALTER DATABASE .
Состояние базы данных можно просмотреть с помощью динамического административного представления sys.dm_database_encryption_keys.
Дождитесь завершения расшифровки, прежде чем удалять ключ шифрования базы данных, с помощью DROP DATABASE ENCRYPTION KEY.
Создайте резервную копию главного ключа и сертификата, используемых для TDE, в надежном расположении. Главный ключ и сертификат необходимы для восстановления резервных копий, которые были созданы, когда база данных была зашифрована с помощью TDE. После удаления ключа шифрования базы данных создайте резервную копию журнала, а затем новую полную резервную копию расшифрованной базы данных.
TDE и расширение буферного пула
Если вы шифруете базу данных с помощью TDE, файлы, касающиеся расширения буферного пула (BPE), не шифруются. Для этих файлов используйте средства шифрования на уровне файловой системы, такие как BitLocker или файловая система EFS.
TDE и выполняющаяся в памяти OLTP
Прозрачное шифрование данных можно включить в базе данных, которая содержит объекты OLTP в памяти. В SQL Server 2016 (13.x); и База данных SQL Azure записи журнала выполняющейся в памяти OLTP шифруются, если включено TDE. В SQL Server 2014 (12.x) записи журнала выполняющейся в памяти OLTP шифруются, если включено TDE, однако файлы в файловой группе MEMORY_OPTIMIZED_DATA не шифруются.
Источник