Обзор шифрования данных в состоянии покоя
Обзор
Шифрование таблиц делает практически невозможным доступ или кражу жесткого диска с последующим доступом к исходным данным. MariaDB получила шифрование данных в состоянии покоя с версией MariaDB 10.1. Эта функциональность также известна как «Прозрачное шифрование данных (TDE)».
Предполагается, что ключи шифрования хранятся на другой системе.
Использование шифрования влечет за собой дополнительную нагрузку примерно в 3-5%.
Какие СУБД поддерживает шифрование MariaDB?
Шифрование MariaDB полностью поддерживается для СУБД InnoDB. Шифрование также поддерживается для СУБД Aria, но только для таблиц, созданных с использованием ROW_FORMAT=PAGE (по умолчанию), и для бинарного лога (журнала репликации).
MariaDB позволяет пользователю гибко настраивать, что именно шифровать. В InnoDB можно выбрать шифрование:
- всего — всех табличных пространств (со всеми таблицами)
- отдельных таблиц
- всего, за исключением отдельных таблиц
Кроме того, можно выбрать шифрование файлов журнала InnoDB (рекомендуется).
Ограничения
В реализации шифрования данных в состоянии покоя существуют следующие ограничения:
- Шифруется только данные и только в состоянии покоя. Метаданные (например, файлы
.frm) и данные, отправляемые клиенту, не шифруются (но см. Безопасные соединения). - Только сервер MariaDB знает, как расшифровать данные, в частности
- mariadb-binlog может считывать зашифрованные бинарные логи только при использовании --read-from-remote-server (MDEV-8813).
- Percona XtraBackup не может создавать резервные копии экземпляров с зашифрованным InnoDB. Однако, ответвление MariaDB, MariaDB Backup, может создавать резервные копии зашифрованных экземпляров.
- Дисковый Galera gcache не шифруется в сообществе MariaDB Server (MDEV-9639). Однако этот файл шифруется в MariaDB Enterprise Server 10.4.
- Плагин Audit не может создавать зашифрованный вывод. Отправьте его в syslog и настройте защиту там.
- Базовые журналы запросов (general query log) и журналы медленных запросов (slow query log) не могут быть зашифрованы (MDEV-9639).
- Журнал Aria не шифруется (MDEV-8587). Это влияет только на невременные таблицы Aria.
- Журнал ошибок MariaDB (error log) не шифруется. Журнал ошибок может содержать текст запроса и данные в некоторых случаях, включая сбои, ошибки утверждений и случаи, когда InnoDB отправляет вывод монитора записи в журнал для помощи в отладке. Он также может быть отправлен в syslog, если это необходимо.
Управление ключами шифрования
Для шифрования данных в состоянии покоя MariaDB требует использования плагина управления ключами и шифрования. Эти плагины отвечают как за управление ключами шифрования, так и за фактическое шифрование и расшифрование данных.
MariaDB поддерживает использование нескольких ключей шифрования. Каждый ключ шифрования использует 32-битовое целое число в качестве идентификатора ключа. Если конкретный плагин поддерживает вращение ключей, то ключи шифрования также могут быть повернуты, что создает новую версию ключа шифрования.
Способ управления ключами шифрования MariaDB зависит от выбранного решения для управления ключами шифрования. В настоящее время у MariaDB есть три варианта:
- Плагин управления ключами файла
- Плагин управления ключами AWS
- Плагин управления ключами Eperi
- Плагин управления ключами Hashicorp
После настройки и конфигурации плагина управления ключами и шифрования для вашего сервера вы можете начать использовать параметры шифрования для повышения безопасности ваших данных.
Шифрование данных
Шифрование происходит всякий раз, когда MariaDB записывает страницы на диск. Для шифрования данных таблицы необходимо установить плагин управления ключами и шифрования, например, плагин Управление ключами файла. После настройки и конфигурации плагина вы можете включить шифрование для ваших таблиц InnoDB и Aria.
Шифрование данных таблиц
MariaDB поддерживает шифрование данных в состоянии покоя для СУБД InnoDB и Aria. Кроме того, он поддерживает шифрование журнала InnoDB redo и внутренних временных таблиц на диске, использующих СУБД Aria.
Шифрование временных файлов
MariaDB также создает временные файлы на диске. Например, кэш бинарного журнала будет записан во временный файл, если кэш бинарного журнала превысит binlog_cache_size или binlog_stmt_cache_size, и временные файлы часто используются для сортировки файлов во время выполнения запроса. С версии MariaDB 10.1.5 эти временные файлы также могут быть зашифрованы, если установлен параметр encrypt_tmp_files=ON.
С MariaDB 10.1.27, MariaDB 10.2.9 и MariaDB 10.3.2 временные файлы, созданные внутри InnoDB, такие как те, которые используются для сортировки слиянием и логов строк, также могут быть зашифрованы, если установлен innodb_encrypt_log=ON. Эти файлы шифруются независимо от того, зашифрованы ли участвующие таблицы или нет, и независимо от того, установлен ли encrypt_tmp_files.
Шифрование бинарных журналов
MariaDB также может шифровать бинарные журналы (включая relay logs).
Шифрование и сжатие страниц
Шифрование данных в состоянии покоя и сжатие страниц InnoDB могут использоваться вместе. Когда они используются вместе, данные сначала сжимаются, а затем шифруются. В этом случае вы экономите место и все равно защищаете свои данные.
Благодарности
- Шифрование табличных пространств было передано в проект MariaDB компанией Google.
- Поддержка шифрования по таблицам и идентификатора ключей была передана в проект MariaDB компанией eperi.
Мы благодарны этим компаниям за поддержку MariaDB!
См. также
- Функции шифрования
- DES_DECRYPT()
- DES_ENCRYPT()
- Статья в блоге о шифровании таблиц с результатами тестирования производительности
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/data-at-rest-encryption/