8.4.4.7 Использование плагина keyring_aws для управления ключами Amazon Web Services
Плагин keyring_aws — это расширение, включенное в MySQL Enterprise Edition, коммерческий продукт. Чтобы узнать больше о коммерческих продуктах, см. https://www.mysql.com/products/.
Плагин keyring_aws устарел и заменяется компонентом AWS Keyring (component_aws_keyring). Устаревание плагина означает, что его удаление ожидается в будущей версии MySQL. Для получения дополнительной информации, включая информацию о миграции с плагина keyring_aws на component_aws_keyring, см. Раздел 8.4.4.8, «Использование компонента keyring_aws AWS Keyring».
Плагин keyring_aws keyring взаимодействует с Amazon Web Services Key Management Service (AWS KMS) в качестве бэкенда для генерации ключей и использует локальный файл для хранения ключей. Весь материал keyring генерируется исключительно сервером AWS, а не keyring_aws.
MySQL Enterprise Edition может работать с keyring_aws на Red Hat Enterprise Linux, SUSE Linux Enterprise Server, Debian, Ubuntu, macOS и Windows. MySQL Enterprise Edition не поддерживает использование keyring_aws на этих платформах:
EL6
Generic Linux (glibc2.12)
SLES 12 (с версиями после MySQL Server 5.7)
Solaris
Здесь предполагается, что вы знакомы с AWS в целом и KMS в частности. Некоторые полезные источники информации:
В следующих разделах представлена информация о конфигурации и использовании плагина keyring_aws keyring:
Конфигурация keyring_aws
Для установки keyring_aws используйте общие инструкции, приведенные в Разделе 8.4.4.3, «Установка плагина keyring», вместе со специфичной для плагина информацией о конфигурации, представленной здесь.
Библиотечный файл плагина содержит плагин keyring_aws и две загружаемые функции, keyring_aws_rotate_cmk() и keyring_aws_rotate_keys().
Для настройки keyring_aws вам необходимо получить секретный ключ доступа, предоставляющий учетные данные для взаимодействия с AWS KMS, и записать его в конфигурационный файл:
Создайте учетную запись AWS KMS.
Используйте AWS KMS для создания идентификатора секретного ключа доступа и секретного ключа доступа. Ключ доступа служит для проверки вашей личности и личности ваших приложений.
Используйте учетную запись AWS KMS для создания идентификатора KMS-ключа. При запуске MySQL задайте системную переменную
keyring_aws_cmk_idна значение ID CMK. Эта переменная является обязательной и не имеет значения по умолчанию. (Её значение можно изменить во время работы, используяSET GLOBAL.)-
При необходимости создайте директорию, в которой должен располагаться конфигурационный файл. Директория должна иметь ограниченный режим доступа и быть доступна только учетной записи, используемой для запуска сервера MySQL. Например, в системах Unix и подобных, для использования
/usr/local/mysql/mysql-keyring/keyring_aws_confв качестве имени файла, следующие команды (выполненные какroot) создают родительскую директорию и устанавливают режим и права владения директорией:$>
cd /usr/local/mysql$>mkdir mysql-keyring$>chmod 750 mysql-keyring$>chown mysql mysql-keyring$>chgrp mysql mysql-keyringПри запуске MySQL задайте системную переменную
keyring_aws_conf_fileна/usr/local/mysql/mysql-keyring/keyring_aws_conf, чтобы указать серверу расположение конфигурационного файла. -
Подготовьте конфигурационный файл
keyring_aws, который должен содержать две строки:Строка 1: Идентификатор секретного ключа доступа
Строка 2: Секретный ключ доступа
Например, если идентификатор ключа —
wwwwwwwwwwwwwEXAMPLE, а ключ —xxxxxxxxxxxxx/yyyyyyy/zzzzzzzzEXAMPLEKEY, конфигурационный файл выглядит так:wwwwwwwwwwwwwEXAMPLE xxxxxxxxxxxxx/yyyyyyy/zzzzzzzzEXAMPLEKEY
Для использования keyring_aws во время процесса запуска сервера, его необходимо загрузить с помощью опции --early-plugin-load. Системная переменная keyring_aws_cmk_id является обязательной и настраивает ID KMS-ключа, полученного с сервера AWS KMS. Системные переменные keyring_aws_conf_file и keyring_aws_data_file необязательно настраивают расположение файлов, используемых плагином keyring_aws для хранения информации о конфигурации и данных. Значения по умолчанию для переменных расположения файлов зависят от платформы. Чтобы явно настроить расположения, задайте значения переменных при запуске. Например, используйте эти строки в файле сервера my.cnf, корректируя суффикс .so и расположения файлов для вашей платформы:
[mysqld]
early-plugin-load=keyring_aws.so
keyring_aws_cmk_id='arn:aws:kms:us-west-2:111122223333:key/abcd1234-ef56-ab12-cd34-ef56abcd1234'
keyring_aws_conf_file=/usr/local/mysql/mysql-keyring/keyring_aws_conf
keyring_aws_data_file=/usr/local/mysql/mysql-keyring/keyring_aws_data
Для успешного запуска плагина keyring_aws, конфигурационный файл должен существовать и содержать действительную информацию о секретном ключе доступа, инициализированную, как описано ранее. Файл хранения не обязательно должен существовать. Если он отсутствует, keyring_aws попытается создать его (а также родительскую директорию, если необходимо).
Дополнительную информацию о системных переменных, используемых для настройки плагина keyring_aws, см. в Разделе 8.4.4.17, «Системные переменные keyring».
Запустите сервер MySQL и установите функции, связанные с плагином keyring_aws. Это однократное действие, выполняемое путём выполнения следующих операторов, корректируя суффикс .so для вашей платформы, при необходимости:
CREATE FUNCTION keyring_aws_rotate_cmk RETURNS INTEGER
SONAME 'keyring_aws.so';
CREATE FUNCTION keyring_aws_rotate_keys RETURNS INTEGER
SONAME 'keyring_aws.so';
Дополнительную информацию о функциях keyring_aws см. в Разделе 8.4.4.14, «Функции управления ключами keyring, специфичные для плагина».
Работа keyring_aws
При запуске плагин keyring_aws keyring считывает идентификатор секретного ключа доступа AWS и ключ из конфигурационного файла. Также он считывает все зашифрованные ключи, содержащиеся в файле хранения, в свою кэш-память.
Во время работы keyring_aws хранит зашифрованные ключи в кэш-памяти и использует файл хранения в качестве локального долговременного хранилища. Каждая операция keyring выполняется транзакционно: keyring_aws либо успешно изменяет и кэш ключей в памяти, и файл хранения keyring, либо операция терпит неудачу, и состояние keyring остаётся неизменным.
Для обеспечения очистки ключей только при наличии корректного файла хранения keyring, keyring_aws хранит контрольную сумму SHA-256 keyring в файле. Перед обновлением файла плагин проверяет, что он содержит ожидаемую контрольную сумму.
Плагин keyring_aws поддерживает функции, составляющие стандартный интерфейс службы 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_aws_rotate_cmk() и keyring_aws_rotate_keys() “расширяют” интерфейс плагина keyring, предоставляя возможности, связанные с AWS, которые не покрываются стандартным интерфейсом службы keyring. Эти возможности доступны только через вызов этих функций с использованием SQL. Соответствующих функций службы ключей на языке C нет.
Информацию о характеристиках значений ключей, разрешенных keyring_aws, см. в Разделе 8.4.4.11, «Поддерживаемые типы и длины ключей keyring».
Изменения учетных данных плагина keyring_aws
Предполагая, что плагин keyring_aws правильно инициализирован при запуске сервера, можно изменить учетные данные, используемые для связи с AWS KMS:
Используйте AWS KMS для создания нового идентификатора ключа доступа и секретного ключа доступа.
Сохраните новые учетные данные в файле конфигурации (файл, имя которого указано в системной переменной
keyring_aws_conf_file). Формат файла описан ранее.-
Переинициализируйте плагин
keyring_aws, чтобы он повторно прочитал файл конфигурации. Предполагая, что новые учетные данные действительны, плагин должен успешно инициализироваться.Существует два способа переинициализации плагина:
Перезапустите сервер. Это проще и не имеет побочных эффектов, но не подходит для установок, требующих минимального времени простоя сервера с как можно меньшим количеством перезапусков.
-
Переинициализируйте плагин, не перезапуская сервер, выполнив следующие команды, при необходимости скорректировав суффикс
.soдля вашей платформы:UNINSTALL PLUGIN keyring_aws; INSTALL PLUGIN keyring_aws SONAME 'keyring_aws.so';
ПримечаниеПомимо загрузки плагина во время выполнения,
INSTALL PLUGINтакже регистрирует плагин в системной таблицеmysql.plugin. Поэтому, если вы решите прекратить использованиеkeyring_aws, недостаточно удалить опцию--early-plugin-loadиз набора опций, используемых для запуска сервера. Это предотвращает раннюю загрузку плагина, но сервер по-прежнему попытается загрузить его, когда дойдёт до этапа запуска, где загружаются плагины, зарегистрированные вmysql.plugin.Следовательно, если вы выполните описанную последовательность
UNINSTALL PLUGINплюсINSTALL PLUGINдля изменения учетных данных AWS KMS, а затем прекратите использованиеkeyring_aws, необходимо повторно выполнитьUNINSTALL PLUGINдля отмены регистрации плагина, помимо удаления опции--early-plugin-load.
© 2025 Oracle
Licensed under the GPLv2 License.