6.4.4.4 Использование плагина keyring_okv KMIP
Плагин keyring_okv — это расширение, включенное в MySQL Enterprise Edition, коммерческий продукт. Чтобы узнать больше о коммерческих продуктах, см. https://www.mysql.com/products/.
Протокол межсетевого взаимодействия для управления ключами (KMIP) позволяет осуществлять обмен криптографическими ключами между сервером управления ключами и его клиентами. Плагин keyring_okv keyring использует протокол KMIP 1.1 для безопасного взаимодействия в качестве клиента для бэкэнда KMIP. Данные keyring генерируются исключительно бэкэндом, а не keyring_okv. Плагин работает с этими совместимыми с KMIP продуктами:
Oracle Key Vault
Gemalto SafeNet KeySecure Appliance
Townsend Alliance Key Manager
Каждый экземпляр MySQL Server должен быть зарегистрирован отдельно как клиент для KMIP. Если два или более экземпляров MySQL Server используют один и тот же набор учетных данных, это может мешать их работе.
Плагин keyring_okv поддерживает функции, которые составляют стандартный интерфейс службы MySQL Keyring. К операциям 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_okv, см. в Разделе 6.4.4.6 «Поддерживаемые типы и длины ключей keyring».
Для установки keyring_okv используйте общие инструкции, приведенные в Разделе 6.4.4.1 «Установка плагина keyring», вместе со специфичной для keyring_okv конфигурационной информацией, приведенной здесь.
Общие настройки keyring_okv
Независимо от того, какой бэкэнд KMIP использует плагин keyring_okv для хранения keyring, системная переменная keyring_okv_conf_dir настраивает расположение каталога, используемого keyring_okv для своих вспомогательных файлов. Значение по умолчанию пустое, поэтому необходимо установить переменную, указав правильно настроенный каталог, прежде чем плагин сможет взаимодействовать с бэкэндом KMIP. В противном случае keyring_okv запишет сообщение в журнал ошибок во время запуска сервера о невозможности взаимодействия:
[Warning] Plugin keyring_okv reported: 'For keyring_okv to be
initialized, please point the keyring_okv_conf_dir variable to a directory
containing Oracle Key Vault configuration file and ssl materials'
Переменная keyring_okv_conf_dir должна указывать на каталог, содержащий следующие элементы:
okvclient.ora: Файл, содержащий данные о бэкэнде KMIP, с которымkeyring_okvвзаимодействует.ssl: Каталог, содержащий сертификаты и файлы ключей, необходимые для установления защищенного соединения с бэкэндом KMIP:CA.pem,cert.pemиkey.pem. Начиная с MySQL 5.7.20, если файл ключа защищен паролем, каталогsslможет содержать текстовый файл с единственной строкой, названныйpassword.txt, содержащий пароль, необходимый для дешифрования файла ключа.
Оба файла — okvclient.ora и ssl каталог с сертификатами и файлами ключей — необходимы для правильной работы keyring_okv. Процедура заполнения конфигурационного каталога этими файлами зависит от бэкэнда KMIP, используемого с keyring_okv, как описано в другом месте.
Каталог конфигурации, используемый keyring_okv в качестве местоположения для своих вспомогательных файлов, должен иметь ограниченные права доступа и быть доступен только учетной записи, используемой для запуска сервера MySQL. Например, на системах Unix и Unix-подобных системах, чтобы использовать каталог /usr/local/mysql/mysql-keyring-okv, следующие команды (выполненные как root) создают каталог и устанавливают его права и владение:
cd /usr/local/mysql
mkdir mysql-keyring-okv
chmod 750 mysql-keyring-okv
chown mysql mysql-keyring-okv
chgrp mysql mysql-keyring-okv
Для использования keyring_okv во время процесса запуска сервера его необходимо загрузить, используя параметр --early-plugin-load. Также необходимо установить системную переменную keyring_okv_conf_dir, чтобы указать keyring_okv местоположение своего конфигурационного каталога. Например, используйте эти строки в файле сервера my.cnf, скорректировав суффикс .so и расположение каталога для вашей платформы по мере необходимости:
[mysqld]
early-plugin-load=keyring_okv.so
keyring_okv_conf_dir=/usr/local/mysql/mysql-keyring-okv
Дополнительную информацию о keyring_okv_conf_dir см. в Разделе 6.4.4.12 «Системные переменные keyring».
Настройка keyring_okv для Oracle Key Vault
В данном обсуждении предполагается, что вы знакомы с Oracle Key Vault. Некоторые полезные источники информации:
В терминологии Oracle Key Vault клиенты, которые используют Oracle Key Vault для хранения и извлечения объектов безопасности, называются конечными точками. Для связи с Oracle Key Vault необходимо зарегистрироваться как конечная точка и пройти регистрацию, загрузив и установив файлы поддержки конечной точки. Обратите внимание, что для каждого экземпляра MySQL Server необходимо зарегистрировать отдельную конечную точку. Если два или более экземпляров MySQL Server используют одну и ту же конечную точку, они могут мешать работе друг друга.
Следующая процедура кратко описывает процесс настройки keyring_okv для использования с Oracle Key Vault:
Создайте директорию конфигурации для использования плагина
keyring_okv.Зарегистрируйте конечную точку в Oracle Key Vault, чтобы получить токен регистрации.
Используйте токен регистрации для получения загрузки клиента
okvclient.jar.Установите клиентское программное обеспечение, чтобы заполнить директорию конфигурации
keyring_okv, которая содержит файлы поддержки Oracle Key Vault.
Используйте следующую процедуру для настройки keyring_okv и Oracle Key Vault для совместной работы. Это описание только обобщенно рассказывает о взаимодействии с Oracle Key Vault. Для получения подробной информации посетите сайт Oracle Key Vault и проконсультируйтесь с руководством администратора Oracle Key Vault.
Создайте директорию конфигурации, содержащую файлы поддержки Oracle Key Vault, и убедитесь, что системная переменная
keyring_okv_conf_dirустановлена в имя этой директории (подробнее см. Общие настройки keyring_okv).Войдите в консоль управления Oracle Key Vault как пользователем с ролью системного администратора.
Выберите вкладку Конечные точки, чтобы перейти на страницу Конечные точки. На странице Конечные точки нажмите Добавить.
Укажите необходимую информацию о конечной точке и нажмите Зарегистрировать. Тип конечной точки должен быть Другой. Успешная регистрация приведет к получению токена регистрации.
Выйдите из сервера Oracle Key Vault.
Подключитесь снова к серверу Oracle Key Vault, но на этот раз без входа. Используйте токен регистрации конечной точки, чтобы пройти регистрацию и запросить загрузку программного обеспечения
okvclient.jar. Сохраните этот файл на вашей системе.-
Установите файл
okvclient.jarс помощью следующей команды (у вас должна быть JDK 1.4 или выше):java -jar okvclient.jar -d
dir_name[-v]Имя директории после опции
-d— это место, куда будут установлены извлеченные файлы. Опция-v, если указана, генерирует журнальные записи, которые могут быть полезны, если команда завершится с ошибкой.Когда команда запросит пароль Oracle Key Vault, не вводите его. Вместо этого нажмите Enter. (В результате при подключении конечной точки к Oracle Key Vault пароль не требуется.)
Представленная команда генерирует файл
okvclient.ora, который должен находиться в этом месте в директории, названной опцией-dв предыдущей команде java -jar:install_dir/conf/okvclient.ora
Ожидаемое содержимое файла включает строки, похожие на эту:
SERVER=
host_ip:port_numSTANDBY_SERVER=host_ip:port_numПримечаниеЕсли существующий файл не имеет такого формата, создайте новый файл со строками, показанными в предыдущем примере. Также рекомендуется создать резервную копию файла
okvclient.oraперед выполнением команды okvutil. При необходимости восстановите файл.Плагин
keyring_okvпытается связаться с сервером, работающим на хосте, указанном переменнойSERVER, и переходит к резервному вариантуSTANDBY_SERVER, если это не удается:Для переменной
SERVERобязательна настройка в файлеokvclient.ora.-
Для переменной
STANDBY_SERVERнастройка в файлеokvclient.oraнеобязательна начиная с MySQL 5.7.19. До MySQL 5.7.19 настройкаSTANDBY_SERVERбыла обязательна; еслиokvclient.oraсгенерирован без настройки дляSTANDBY_SERVER,keyring_okvне может быть инициализирован. Рабочим вариантом является проверкаoraclient.oraи добавление “фиктивной” настройки дляSTANDBY_SERVER, если она отсутствует. Например:STANDBY_SERVER=127.0.0.1:5696
-
Перейдите в директорию установщика Oracle Key Vault и протестируйте настройку, выполнив эту команду:
okvutil/bin/okvutil list
Вывод должен выглядеть примерно так:
Unique ID Type Identifier 255AB8DE-C97F-482C-E053-0100007F28B9 Symmetric Key - 264BF6E0-A20E-7C42-E053-0100007FB29C Symmetric Key -
Для нового сервера Oracle Key Vault (сервера без ключей) вывод будет другим, указывая на отсутствие ключей в хранилище:
no objects found
-
Используйте эту команду для извлечения директории
ssl, содержащей SSL-материалы, из файлаokvclient.jar:jar xf okvclient.jar ssl
Скопируйте файлы поддержки Oracle Key Vault (файл
okvclient.oraи директориюssl) в директорию конфигурации.(Необязательно) Если вы хотите защитить файл ключа паролем, воспользуйтесь инструкциями в Защита паролем файла ключа keyring_okv.
После выполнения данной процедуры перезапустите сервер MySQL. Он загрузит плагин keyring_okv, и keyring_okv будет использовать файлы в своей директории конфигурации для связи с Oracle Key Vault.
Настройка keyring_okv для устройства Gemalto SafeNet KeySecure
Устройство Gemalto SafeNet KeySecure использует протокол KMIP (версии 1.1 или 1.2). Начиная с MySQL 5.7.18, плагин keyring (поддерживающий KMIP 1.1) может использовать KeySecure в качестве бэкенда KMIP для хранения ключей.
Используйте следующую процедуру для настройки взаимодействия между keyring_okv и KeySecure. Описание суммирует взаимодействие с KeySecure. Для подробностей обратитесь к разделу «Добавление сервера KMIP» в руководстве пользователя KeySecure по ссылке Руководство пользователя KeySecure.
Создайте директорию конфигурации, содержащую файлы поддержки KeySecure, и убедитесь, что системная переменная
keyring_okv_conf_dirнастроена на имя этой директории (подробнее см. в разделе Общая настройка keyring_okv).В директории конфигурации создайте поддиректорию с именем
sslдля хранения необходимых файлов сертификата и ключа SSL.-
В директории конфигурации создайте файл с именем
okvclient.ora. Он должен иметь следующий формат:SERVER=
host_ip:port_numSTANDBY_SERVER=host_ip:port_numНапример, если KeySecure запущен на хосте 198.51.100.20 и прослушивает порт 9002, файл
okvclient.oraбудет выглядеть так:SERVER=198.51.100.20:9002 STANDBY_SERVER=198.51.100.20:9002
Подключитесь к консоли управления KeySecure как администратор с учетными данными для доступа к центрам сертификации.
Перейдите к Security >> Local CAs и создайте локальный центр сертификации (ЦС).
Перейдите к Trusted CA Lists. Выберите Default и нажмите Properties. Затем выберите Edit для Trusted Certificate Authority List и добавьте созданный ЦС.
Скачайте ЦС и сохраните его в директории
sslс именем файлаCA.pem.Перейдите к Security >> Certificate Requests и создайте сертификат. Затем вы можете скачать сжатый файл tar содержащий файлы сертификата PEM.
-
Извлеките файлы PEM из скачанного файла. Например, если имя файла
csr_w_pk_pkcs8.gz, распакуйте его с помощью следующей команды:tar zxvf csr_w_pk_pkcs8.gz
В результате извлечения получаются два файла:
certificate_request.pemиprivate_key_pkcs8.pem. -
Используйте следующую команду openssl для расшифровки закрытого ключа и создания файла с именем
key.pem:openssl pkcs8 -in private_key_pkcs8.pem -out key.pem
Скопируйте файл
key.pemв директориюssl.Скопируйте запрос на сертификат из
certificate_request.pemв буфер обмена.Перейдите к Security >> Local CAs. Выберите тот же ЦС, который вы создали ранее (тот, который вы загрузили для создания файла
CA.pem), и нажмите Sign Request. Вставьте Запрос на сертификат из буфера обмена, выберите назначение сертификата как Клиент (keyring — клиент KeySecure) и нажмите Sign Request. Результатом будет сертификат, подписанный выбранным ЦС, на новой странице.Скопируйте подписанный сертификат в буфер обмена и сохраните содержимое буфера обмена в файл с именем
cert.pemв директорииssl.(Необязательно) Если вы хотите защитить файл ключа паролем, используйте инструкции в разделе Защита паролем файла ключа keyring_okv.
После выполнения указанной процедуры перезапустите сервер MySQL. Он загрузит плагин keyring_okv, и keyring_okv будет использовать файлы в своей директории конфигурации для связи с KeySecure.
Настройка keyring_okv для Townsend Alliance Key Manager
Townsend Alliance Key Manager использует протокол KMIP. Плагин keyring_okv keyring может использовать Alliance Key Manager в качестве бэкенда KMIP для хранения ключей. Дополнительную информацию см. на странице Alliance Key Manager для MySQL.
Защита файла ключа keyring_okv паролем
Начиная с MySQL 5.7.20, вы можете защитить файл ключа паролем и предоставить файл с паролем для расшифровки. Для этого перейдите в директорию ssl и выполните следующие действия:
-
Зашифруйте файл ключа
key.pem. Например, используйте команду:$>
openssl rsa -des3 -in key.pem -out key.pem.newEnter PEM pass phrase: Verifying - Enter PEM pass phrase: Сохраните пароль шифрования в текстовом файле с одной строкой с именем
password.txtв директорииssl.-
Убедитесь, что зашифрованный файл ключа можно расшифровать, выполнив следующую команду. Расшифрованный файл должен отобразиться в консоли:
$>
openssl rsa -in key.pem.new -passin file:password.txt Удалите исходный файл
key.pemи переименуйте файлkey.pem.newвkey.pem.Измените права доступа к новому файлу
key.pemи файлуpassword.txt, чтобы обеспечить соответствие ограничениям других файлов в директорииssl.
© 2025 Oracle
Licensed under the GPLv2 License.