8.4.4.2 Установка компонента хранилища ключей
Потребителям сервиса хранилища ключей требуется установка компонента или плагина хранилища ключей:
Для использования компонента хранилища ключей начните с инструкций здесь.
Для использования плагина хранилища ключей вместо этого начните с раздела 8.4.4.3 «Установка плагина хранилища ключей».
Если вы планируете использовать функции хранилища ключей в сочетании с выбранным компонентом или плагином хранилища ключей, установите функции после установки этого компонента или плагина, используя инструкции в разделе 8.4.4.12 «Общие функции управления ключами хранилища ключей».
Одновременно должен быть включен только один компонент или плагин хранилища ключей. Включение нескольких компонентов или плагинов хранилища ключей не поддерживается, и результаты могут отличаться от ожидаемых.
MySQL предоставляет следующие варианты компонентов хранилища ключей:
component_keyring_file: Хранит данные хранилища ключей в файле, локальном для хоста сервера. Доступно в дистрибутивах MySQL Community Edition и MySQL Enterprise Edition.component_keyring_encrypted_file: Хранит данные хранилища ключей в зашифрованном, защищенном паролем файле, локальном для хоста сервера. Доступно в дистрибутивах MySQL Enterprise Edition.component_keyring_oci: Хранит данные хранилища ключей в хранилище Oracle Cloud Infrastructure Vault. Доступно в дистрибутивах MySQL Enterprise Edition.
Для использования компонентом сервером, файл библиотеки компонента должен быть расположен в каталоге плагинов MySQL (каталог, указанный переменной системы plugin_dir). При необходимости, настройте расположение каталога плагинов, установив значение plugin_dir при запуске сервера.
Компонент или плагин хранилища ключей должен быть загружен на ранней стадии последовательности запуска сервера, чтобы другие компоненты могли получить к нему доступ по мере необходимости во время собственной инициализации. Например, движок хранения данных InnoDB использует хранилище ключей для шифрования табличных пространств, поэтому компонент или плагин хранилища ключей должен быть загружен и доступен до инициализации InnoDB.
Компонент хранилища ключей должен быть включен в экземпляре MySQL-сервера, если необходимо обеспечить безопасное хранение сохраненных значений переменных системы. Плагин хранилища ключей не поддерживает эту функцию. См. Сохранение конфиденциальных переменных системы.
В отличие от плагинов хранилища ключей, компоненты хранилища ключей не загружаются с помощью опции сервера --early-plugin-load или настраиваются с помощью переменных системы. Вместо этого сервер определяет, какой компонент хранилища ключей загрузить во время запуска, используя манифест, а загруженный компонент обращается к своему собственному файлу конфигурации при инициализации. Поэтому для установки компонента хранилища ключей необходимо:
Написать манифест, который сообщает серверу, какой компонент хранилища ключей загрузить.
Написать файл конфигурации для этого компонента хранилища ключей.
Первым шагом в установке компонента хранилища ключей является написание манифеста, указывающего, какой компонент загрузить. Во время запуска сервер пытается прочитать либо глобальный манифест, либо глобальный манифест в паре с локальным манифестом:
Сервер пытается прочитать свой глобальный манифест из каталога, в котором установлен сервер.
Если глобальный манифест указывает на использование локального манифеста, сервер пытается прочитать свой локальный манифест из каталога данных.
Хотя глобальные и локальные манифестные файлы находятся в разных каталогах, имя файла является
mysqld.myв обоих местах.Отсутствие файла манифеста не является ошибкой. В этом случае сервер не пытается загрузить компонент, связанный с этим файлом.
Локальные манифестные файлы позволяют настроить загрузку компонентов для нескольких экземпляров сервера, при этом инструкции по загрузке для каждого экземпляра сервера специфичны для данного экземпляра каталога данных. Это позволяет разным экземплярам MySQL использовать различные компоненты хранилища ключей.
Файлы манифеста сервера имеют следующие свойства:
Файл манифеста должен иметь допустимый формат 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. Чтобы загрузить другой компонент хранилища ключей, замените его имя на component_keyring_file.
-
Для использования только глобального манифеста содержимое файла выглядит следующим образом:
{ "components": "file://component_keyring_file" }Создайте этот файл в каталоге установки mysqld.
-
В качестве альтернативы, для использования глобального и локального манифестного файла пара, глобальный файл выглядит следующим образом:
{ "read_local_manifest": true }Создайте этот файл в каталоге установки mysqld.
Локальный файл выглядит следующим образом:
{ "components": "file://component_keyring_file" }Создайте этот файл в каталоге данных.
После того, как манифест готов, переходите к настройке компонента хранилища ключей. Для этого ознакомьтесь с примечаниями к выбранному компоненту хранилища ключей, чтобы получить инструкции по настройке, специфичные для этого компонента:
component_keyring_file: раздел 8.4.4.4 «Использование компонента хранилища ключей на основе файлов component_keyring_file».component_keyring_encrypted_file: раздел 8.4.4.5 «Использование компонента хранилища ключей на основе зашифрованных файлов component_keyring_encrypted_file».component_keyring_oci: раздел 8.4.4.9 «Использование компонента хранилища ключей хранилища Oracle Cloud Infrastructure».
После выполнения любой настройки, специфичной для компонента, запустите сервер. Проверьте установку компонента, изучив таблицу 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.