8.4.4.2 Установка компонента keyring
Потребителям службы keyring необходимо установить компонент или плагин keyring:
Для использования компонента keyring начните с инструкций здесь.
Чтобы использовать плагин keyring вместо этого, начните с раздела 8.4.4.3 «Установка плагина keyring».
Если вы планируете использовать функции keyring совместно с выбранным компонентом или плагином keyring, установите функции после установки этого компонента или плагина, используя инструкции в разделе 8.4.4.13 «Общие функции управления ключами keyring».
Одновременно должен быть активен только один компонент или плагин keyring. Включение нескольких компонентов или плагинов keyring не поддерживается, и результаты могут не соответствовать ожиданиям.
MySQL предоставляет следующие варианты компонентов keyring:
component_keyring_file: Хранит данные keyring в файле, локальном для хоста сервера. Доступен в дистрибутивах MySQL Community Edition и MySQL Enterprise Edition.component_keyring_encrypted_file: Хранит данные keyring в зашифрованном файле, защищенном паролем, локальном для хоста сервера. Доступен в дистрибутивах MySQL Enterprise Edition.component_keyring_oci: Хранит данные keyring в хранилище Oracle Cloud Infrastructure Vault. Доступен в дистрибутивах MySQL Enterprise Edition.component_keyring_aws: Связывается с AWS Key Management Service для генерации ключей и использует локальный файл для хранения ключей. Доступен в дистрибутивах MySQL Enterprise Edition.
Для использования компонентом сервером, библиотечный файл компонента должен находиться в каталоге плагинов MySQL (каталог, указанный переменной системной переменной plugin_dir). При необходимости настройте расположение каталога плагинов, установив значение plugin_dir при запуске сервера.
Компонент или плагин keyring необходимо загрузить на ранней стадии процесса запуска сервера, чтобы другие компоненты могли получить к нему доступ по мере необходимости во время собственной инициализации. Например, хранилище InnoDB использует keyring для шифрования табличных пространств, поэтому компонент или плагин keyring должен быть загружен и доступен до инициализации InnoDB.
Компонент keyring должен быть включен на экземпляре MySQL сервера, если необходимо поддерживать безопасное хранение сохраненных значений системных переменных. Плагин keyring эту функцию не поддерживает. См. Сохранение чувствительных системных переменных.
В отличие от плагинов keyring, компоненты keyring не загружаются с помощью параметра сервера --early-plugin-load или не настраиваются с помощью системных переменных. Вместо этого сервер определяет, какой компонент keyring загрузить во время запуска, используя манифест, и загруженный компонент консультируется с собственным файлом конфигурации при инициализации. Таким образом, для установки компонента keyring необходимо:
Создать манифест, указывающий, какой компонент keyring загрузить.
Создать файл конфигурации для этого компонента keyring.
Первым шагом в установке компонента keyring является создание манифеста, указывающего, какой компонент загрузить. Во время запуска сервер читает либо глобальный файл манифеста, либо глобальный файл манифеста вместе с локальным файлом манифеста:
Сервер пытается прочитать свой глобальный файл манифеста из каталога, где установлен сервер.
Если глобальный файл манифеста указывает на использование локального файла манифеста, сервер пытается прочитать свой локальный файл манифеста из каталога данных.
Хотя глобальные и локальные файлы манифеста находятся в разных каталогах, имя файла —
mysqld.myв обоих местах.Отсутствие файла манифеста не является ошибкой. В этом случае сервер не пытается загрузить компонент, связанный с файлом.
Локальные файлы манифеста позволяют настроить загрузку компонентов для нескольких экземпляров сервера, так что инструкции по загрузке для каждого экземпляра сервера специфичны для данного экземпляра каталога данных. Это позволяет разным экземплярам MySQL использовать разные компоненты keyring.
Файлы манифеста сервера имеют следующие свойства:
Файл манифеста должен быть в формате JSON.
-
Файл манифеста позволяет использовать следующие элементы:
-
"read_local_manifest": Этот элемент разрешен только в глобальном файле манифеста. Если элемент отсутствует, сервер использует только глобальный файл манифеста. Если элемент присутствует, его значение равноtrueилиfalse, что указывает, должен ли сервер читать информацию о загрузке компонента из локального файла манифеста.Если элемент
"read_local_manifest"присутствует в глобальном файле манифеста наряду с другими элементами, сервер сначала проверяет значение элемента"read_local_manifest":Если значение равно
false, сервер обрабатывает другие элементы в глобальном файле манифеста и игнорирует локальный файл манифеста.Если значение равно
true, сервер игнорирует другие элементы в глобальном файле манифеста и пытается прочитать локальный файл манифеста.
"components": Этот элемент указывает, какой компонент загрузить. Значение элемента — строка, определяющая допустимый URN компонента, например,"file://component_keyring_file". URN компонента начинается сfile://и указывает базу имени библиотечного файла, расположенного в каталоге плагинов MySQL, который реализует компонент.
-
Доступ сервера к файлу манифеста должен быть только для чтения. Например, файл манифеста сервера
mysqld.myможет принадлежатьrootи быть доступен для чтения/записи дляroot, но должен быть только для чтения для учетной записи, используемой для запуска MySQL сервера. Если во время запуска сервер обнаружит, что файл манифеста доступен для чтения/записи этой учетной записью, сервер запишет предупреждение в журнал ошибок, предложив сделать файл только для чтения.Администратор базы данных несет ответственность за создание любых файлов манифеста для использования и за обеспечение правильности их режима доступа и содержимого. Если произойдет ошибка, запуск сервера завершится неудачей, и администратор должен исправить любые проблемы, указанные в диагностике в журнале ошибок сервера.
Учитывая указанные выше свойства файла манифеста, чтобы настроить сервер на загрузку component_keyring_file, создайте глобальный файл манифеста с именем mysqld.my в каталоге установки mysqld и, необязательно, создайте локальный файл манифеста, также с именем mysqld.my, в каталоге данных. Следующие инструкции описывают загрузку component_keyring_file. Чтобы загрузить другой компонент keyring, замените его имя на component_keyring_file.
-
Чтобы использовать только глобальный файл манифеста, содержимое файла выглядит следующим образом:
{ "components": "file://component_keyring_file" }Создайте этот файл в каталоге установки mysqld.
-
В качестве альтернативы, чтобы использовать пару глобального и локального файлов манифеста, глобальный файл выглядит следующим образом:
{ "read_local_manifest": true }Создайте этот файл в каталоге установки mysqld.
Локальный файл выглядит следующим образом:
{ "components": "file://component_keyring_file" }Создайте этот файл в каталоге данных.
После создания манифеста перейдите к настройке компонента keyring. Для этого ознакомьтесь с заметками по вашему выбранному компоненту keyring, чтобы получить инструкции по настройке, специфичные для этого компонента:
component_keyring_file: раздел 8.4.4.4 «Использование компонента keyring_file на основе файлов».component_keyring_encrypted_file: раздел 8.4.4.5 «Использование компонента keyring_encrypted_file на основе зашифрованных файлов».component_keyring_oci: раздел 8.4.4.10 «Использование компонента keyring Oracle Cloud Infrastructure Vault».
После выполнения всех специфичных для компонента настроек запустите сервер. Проверьте установку компонента, просмотрев таблицу Performance Schema keyring_component_status:
mysql> SELECT * FROM performance_schema.keyring_component_status;
+---------------------+-------------------------------------------------+
| STATUS_KEY | STATUS_VALUE |
+---------------------+-------------------------------------------------+
| Component_name | component_keyring_file |
| Author | Oracle Corporation |
| License | GPL |
| Implementation_name | component_keyring_file |
| Version | 1.0 |
| Component_status | Active |
| Data_file | /usr/local/mysql/keyring/component_keyring_file |
| Read_only | No |
+---------------------+-------------------------------------------------+
Значение Component_status равно Active указывает на то, что компонент был успешно инициализирован.
Если компонент не может быть загружен, запуск сервера завершается ошибкой. Проверьте журнал ошибок сервера для диагностических сообщений. Если компонент загружается, но не может быть инициализирован из-за проблем с конфигурацией, сервер запускается, но значение Component_status имеет значение Disabled. Проверьте журнал ошибок сервера, исправьте проблемы с конфигурацией и используйте оператор ALTER INSTANCE RELOAD KEYRING для перезагрузки конфигурации.
Компоненты keyring должны загружаться только с помощью файла манифеста, а не с помощью оператора INSTALL
COMPONENT. Компоненты keyring, загруженные с помощью этого оператора, могут быть доступны слишком поздно в последовательности запуска сервера для некоторых компонентов, использующих keyring, таких как InnoDB, так как они регистрируются в таблице системы mysql.component и загружаются автоматически для последующих перезапусков сервера. Но mysql.component является таблицей InnoDB, поэтому любые компоненты, указанные в ней, могут быть загружены только после инициализации InnoDB.
Если при попытке компонента получить доступ к службе keyring не доступен ни один компонент или плагин keyring, эта служба не может быть использована этим компонентом. В результате компонент может не пройти инициализацию или пройти её с ограниченными функциями. Например, если InnoDB обнаруживает зашифрованные табличные пространства при инициализации, он пытается получить доступ к keyring. Если keyring недоступен, InnoDB может получить доступ только к незашифрованным табличным пространствам.
© 2025 Oracle
Licensed under the GPLv2 License.