6.4.4.3 Использование плагина keyring_encrypted_file для ключей, хранящихся в зашифрованных файлах
Плагин keyring_encrypted_file — это расширение, включенное в MySQL Enterprise Edition, коммерческий продукт. Более подробную информацию о коммерческих продуктах можно найти на странице https://www.mysql.com/products/.
Плагин keyring_encrypted_file хранит данные ключей в зашифрованном файле с парольной защитой на локальном диске сервера. Для файла необходимо указать пароль. Данный плагин доступен начиная с MySQL 5.7.21.
Плагин keyring_encrypted_file не предназначен для решения задач соответствия нормативным требованиям относительно управления ключами шифрования. Для обеспечения безопасности, в соответствии со стандартами, такими как PCI, FIPS и другими, необходимо использовать системы управления ключами для защиты, управления и обеспечения конфиденциальности ключей шифрования в хранилищах ключей или модулях аппаратной безопасности (HSM).
Для установки keyring_encrypted_file используйте общие инструкции, приведенные в разделе 6.4.4.1 «Установка плагина keyring», а также конфигурационную информацию, специфичную для keyring_encrypted_file, приведенную здесь.
Для использования keyring_encrypted_file во время запуска сервера его необходимо загрузить с помощью параметра --early-plugin-load. Чтобы указать пароль для шифрования файла данных ключей, установите системную переменную keyring_encrypted_file_password. (Пароль обязателен; если он не указан при запуске сервера, инициализация keyring_encrypted_file завершается неудачно.) Системная переменная keyring_encrypted_file_data (по желанию) настраивает расположение файла, используемого плагином keyring_encrypted_file для хранения данных. Значение по умолчанию зависит от платформы. Чтобы явно задать расположение файла, установите значение переменной при запуске. Например, используйте эти строки в файле конфигурации сервера my.cnf, изменяя суффикс .so и расположение файла в соответствии с вашей платформой и подставляя выбранный пароль:
[mysqld]
early-plugin-load=keyring_encrypted_file.so
keyring_encrypted_file_data=/usr/local/mysql/mysql-keyring/keyring-encrypted
keyring_encrypted_file_password=password
Поскольку файл my.cnf хранит пароль при записи, как показано выше, ему следует задать ограниченный режим доступа, и он должен быть доступен только учетной записи, используемой для запуска сервера MySQL.
Операции с ключами являются транзакционными: плагин keyring_encrypted_file использует резервную копию файла во время операций записи, чтобы гарантировать возможность возврата к исходному файлу в случае сбоя операции. Резервный файл имеет то же имя, что и значение системной переменной keyring_encrypted_file_data с суффиксом .backup.
Дополнительную информацию о системных переменных, используемых для настройки плагина keyring_encrypted_file, см. в разделе 6.4.4.12 «Системные переменные для keyring».
Чтобы обеспечить очистку ключей только в том случае, если существует правильный файл хранения keyring, keyring_encrypted_file хранит контрольную сумму SHA-256 keyring в файле. Перед обновлением файла плагин проверяет, что он содержит ожидаемую контрольную сумму. Кроме того, keyring_encrypted_file шифрует содержимое файла с помощью AES перед записью и расшифровывает содержимое после считывания файла.
Плагин keyring_encrypted_file поддерживает функции, составляющие стандартный интерфейс службы MySQL Keyring. Доступ к операциям с ключами, выполняемым этими функциями, осуществляется на двух уровнях:
SQL-интерфейс: в SQL-запросах вызывайте функции, описанные в разделе 6.4.4.8 «Функции управления ключами общего назначения для keyring».
C-интерфейс: в коде на языке C вызывайте функции службы keyring, описанные в разделе 5.5.6.2 «Служба keyring».
Пример (используя SQL-интерфейс):
SELECT keyring_key_generate('MyKey', 'AES', 32);
SELECT keyring_key_remove('MyKey');
Дополнительную информацию о характеристиках разрешенных значений ключей, используемых плагином keyring_encrypted_file, см. в разделе 6.4.4.6 «Поддерживаемые типы и длины ключей keyring».
© 2025 Oracle
Licensed under the GPLv2 License.