8.4.4.6 Использование плагина 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
Entrust KeyControl
Каждый экземпляр MySQL Server должен быть зарегистрирован отдельно в качестве клиента для KMIP. Если два или более экземпляров MySQL Server используют один и тот же набор учетных данных, они могут мешать работе друг друга.
Плагин keyring_okv поддерживает функции, составляющие стандартный интерфейс службы MySQL Keyring. Операции keyring, выполняемые этими функциями, доступны на двух уровнях:
Интерфейс SQL: в SQL-запросах вызывайте функции, описанные в Разделе 8.4.4.13, “Общие функции управления ключами keyring”.
C-интерфейс: в коде на языке C вызывайте функции службы keyring, описанные в Разделе 7.6.9.2, “Служба Keyring”.
Пример (используя интерфейс SQL):
SELECT keyring_key_generate('MyKey', 'AES', 32);
SELECT keyring_key_remove('MyKey');
Сведения о характеристиках значений ключей, разрешенных keyring_okv, см. в Разделе 8.4.4.11, “Поддерживаемые типы и длины ключей keyring”.
Для установки keyring_okv используйте общие инструкции, приведенные в Разделе 8.4.4.3, “Установка плагина 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. Если файл ключа защищен паролем, каталогsslможет содержать текстовый файл с единственной строкой, названныйpassword.txt, содержащий пароль, необходимый для расшифровки файла ключа.
Для правильной работы keyring_okv необходим как файл конфигурации okvclient.ora, так и каталог ssl с сертификатами и ключами. Процедура заполнения каталога конфигурации этими файлами зависит от используемого KMIP-бекенда с keyring_okv, как описано в других местах.
Каталог конфигурации, используемый keyring_okv в качестве расположения его служебных файлов, должен иметь ограниченный режим доступа и быть доступен только учетной записи, используемой для запуска сервера MySQL. Например, в 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 см. Раздел 8.4.4.17, “Системные переменные 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 Administrator's Guide.
Создайте каталог конфигурации, содержащий файлы поддержки Oracle Key Vault, и убедитесь, что системная переменная
keyring_okv_conf_dirнастроена на этот каталог (подробности см. в разделе Общие настройки keyring_okv).Войдите в консоль управления Oracle Key Vault от пользователя с ролью администратора системы.
Выберите вкладку Endpoints, чтобы перейти на страницу Endpoints. На странице Endpoints нажмите Add.
Укажите необходимую информацию о конечной точке и нажмите Register. Тип конечной точки должен быть Other. Успешная регистрация приводит к получению токена регистрации.
Выйдите из сервера 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Переменная
SERVERобязательна, а переменнаяSTANDBY_SERVERнеобязательна. Плагинkeyring_okvпытается связаться с сервером, работающим на хосте, указанном в переменнойSERVER, и переключается наSTANDBY_SERVER, если это не удаётся.ПримечаниеЕсли существующий файл не имеет этого формата, создайте новый файл с приведенными в предыдущем примере строками. Также рекомендуется создать резервную копию файла
okvclient.oraперед запуском команды okvutil. Восстановите файл по мере необходимости.Вы можете указать более одного сервера резервного копирования (до максимального значения 64). В этом случае плагин
keyring_okvперебирает их, пока не сможет установить соединение, и завершается с ошибкой, если это не удается. Чтобы добавить дополнительные сервера резервного копирования, отредактируйте файлokvclient.ora, чтобы указать IP-адреса и номера портов серверов в виде списка, разделённого запятыми, в значении переменнойSTANDBY_SERVER. Например:STANDBY_SERVER=
host_ip:port_num,host_ip:port_num,host_ip:port_num,host_ip:port_numУбедитесь, что список резервных серверов остается коротким, точным и актуальным, а устаревшие серверы удаляются. Для каждой попытки подключения предусмотрена 20-секундная задержка. Наличие длинного списка недействительных серверов может существенно повлиять на время подключения плагина
keyring_okv, а значит и на время запуска сервера. -
Перейдите в каталог установщика 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). Плагин keyring (поддерживающий KMIP 1.1) может использовать KeySecure в качестве бэкенда KMIP для хранения ключей.
Используйте следующую процедуру для настройки взаимодействия между keyring_okv и KeySecure. Данное описание лишь обобщает взаимодействие с KeySecure. Для подробностей обратитесь к разделу «Добавление сервера KMIP» в руководстве пользователя 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, а также на альтернативном хосте 203.0.113.125 и прослушивает порт 8041, файл
okvclient.oraбудет выглядеть так:SERVER=198.51.100.20:9002 STANDBY_SERVER=203.0.113.125:8041
Вы можете указать несколько резервных серверов (до 64). Если вы это сделаете, плагин
keyring_okvбудет перебирать их, пока не сможет установить соединение, и завершится неудачей, если не сможет. Чтобы добавить дополнительные резервные серверы, отредактируйте файлokvclient.ora, указав IP-адреса и номера портов серверов через запятую в значении переменнойSTANDBY_SERVER. Например:STANDBY_SERVER=
host_ip:port_num,host_ip:port_num,host_ip:port_num,host_ip:port_numУбедитесь, что список резервных серверов остается коротким, точным и актуальным, а недействительные серверы удаляются. Время ожидания для каждой попытки соединения составляет 20 секунд, поэтому наличие длинного списка недействительных серверов может существенно повлиять на время подключения плагина
keyring_okv, а следовательно, и на время запуска сервера. Подключитесь к консоли управления KeySecure как администратор с учетными данными доступа к центрам сертификации.
Перейдите к Безопасность >> Местные центры сертификации и создайте местный центр сертификации (ЦС).
Перейдите к Доверенным спискам ЦС. Выберите Значение по умолчанию и нажмите Свойства. Затем выберите Редактировать для Доверенного списка центров сертификации и добавьте только что созданный ЦС.
Скачайте ЦС и сохраните его в директории
sslв файле с именемCA.pem.Перейдите к Безопасность >> Запросы на сертификаты и создайте сертификат. Затем вы можете загрузить сжатый файл 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в буфер обмена.Перейдите к Безопасность >> Местные ЦС. Выберите тот же ЦС, который вы создали ранее (тот, который вы загрузили для создания файла
CA.pem), и нажмите Подписать запрос. Вставьте Запрос на сертификат из буфера обмена, выберите назначение сертификата — Клиент (keyring — клиент KeySecure) и нажмите Подписать запрос. В результате на новой странице появится сертификат, подписанный выбранным ЦС.Скопируйте подписанный сертификат в буфер обмена, затем сохраните содержимое буфера обмена в файле с именем
cert.pemв директорииssl.(Необязательно) Если вы хотите защитить файл ключа паролем, следуйте инструкциям в разделе по защите файла ключа keyring_okv паролем.
После выполнения вышеуказанной процедуры перезапустите сервер MySQL. Он загрузит плагин keyring_okv, и keyring_okv будет использовать файлы в его директории конфигурации для связи с KeySecure.
Настройка keyring_okv для Townsend Alliance Key Manager
Townsend Alliance Key Manager использует протокол KMIP. Плагин keyring_okv может использовать Alliance Key Manager в качестве бэкенда KMIP для хранения ключей. Дополнительную информацию можно найти на странице Alliance Key Manager для MySQL.
Настройка keyring_okv для Entrust KeyControl
Entrust KeyControl использует протокол KMIP. Плагин keyring_okv может использовать Entrust KeyControl в качестве бэкенда KMIP для хранения ключей. Дополнительную информацию можно найти в руководстве по интеграции Oracle MySQL и Entrust KeyControl с nShield HSM.
Защита файла ключа keyring_okv паролем
Вы можете защитить файл ключа паролем и предоставить файл с паролем для его расшифровки. Для этого перейдите в директорию 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.