Spec-Zone.ru › MariaDB

Шифрование бинарных логов

Сервер MariaDB может шифровать серверные бинарные логи и логи реле. Это гарантирует, что ваши бинарные логи доступны только через MariaDB.

Основные настройки

Начиная с MariaDB 10.1.7, MariaDB также может шифровать бинарные логи (включая логи реле). Шифрование бинарных логов настраивается переменной системы encrypt_binlog.

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

[mariadb]
...

# File Key Management
plugin_load_add = file_key_management
file_key_management_filename = /etc/mysql/encryption/keyfile.enc
file_key_management_filekey = FILE:/etc/mysql/encryption/keyfile.key
file_key_management_encryption_algorithm = AES_CTR

# Binary Log Encryption
encrypt_binlog=ON

Ключи шифрования

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

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

Ротация ключей

Некоторые плагины управления ключами и шифрования позволяют автоматически вращать и добавлять версии ваших ключей шифрования. Если плагин поддерживает ротацию ключей и выполняет её, потоки фонового шифрования InnoDB могут заново зашифровать страницы InnoDB, которые используют старую версию ключа, с новой версией ключа. Однако, бинарный лог не имеет подобного механизма, что означает, что существующие бинарные логи остаются зашифрованными с более старой версией ключа, но новые бинарные логи будут зашифрованы с новой версией ключа. Дополнительную информацию можно найти на странице MDEV-20098.

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

Включение шифрования

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

  • Сначала остановите сервер.
  • Затем, задайте encrypt_binlog=ON в файле конфигурации MariaDB.
  • Затем запустите сервер.

После этого все новые бинарные логи будут зашифрованы. Чтобы удалить старые незашифрованные бинарные логи, можно использовать RESET MASTER или PURGE BINARY LOGS.

Отключение шифрования

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

  • Сначала остановите сервер.
  • Затем, задайте encrypt_binlog=OFF в файле конфигурации MariaDB.
  • Затем запустите сервер.

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

Понимание шифрования бинарных логов

При запуске с шифрованием бинарных логов сервер MariaDB записывает Format_descriptor_log_event и START_ENCRYPTION_EVENT, а затем шифрует все последующие события для бинарного лога.

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

Влияние шифрования данных в состоянии покоя на репликацию

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

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

Влияние шифрования данных в состоянии покоя на mariadb-binlog

mariadb-binlog в настоящее время не имеет возможности расшифровывать зашифрованные бинарные логи самостоятельно (см. MDEV-8813 по этому вопросу). Для использования mariadb-binlog с зашифрованными бинарными логами, необходимо использовать параметр командной строки --read-from-remote-server, чтобы сервер смог расшифровать бинарные логи для mariadb-binlog.

Обратите внимание, использование параметра --read-from-remote-server в версиях утилиты mariadb-binlog, которые не имеют исправления MDEV-20574 (<=MariaDB 10.4.9, MariaDB 10.3.19, MariaDB 10.2.28) может повредить позиции бинарного лога при зашифрованном бинарном логе.

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

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/encrypting-binary-logs/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API