6.4.4.5 Использование плагина keyring_aws для Amazon Web Services
Плагин keyring_aws — это расширение, включенное в MySQL Enterprise Edition, коммерческий продукт. Чтобы узнать больше о коммерческих продуктах, см. https://www.mysql.com/products/.
Плагин 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
Общий Linux (glibc2.12)
Solaris
В этом обсуждении предполагается, что вы знакомы с AWS в целом и KMS в частности. Некоторые полезные источники информации:
В следующих разделах приведена информация о конфигурации и использовании плагина keyring_aws keyring:
Конфигурация keyring_aws
Для установки keyring_aws используйте общие инструкции, приведенные в разделе 6.4.4.1 «Установка плагина keyring», вместе со специфичной для плагина информацией о конфигурации, представленной здесь.
Библиотечный файл плагина содержит плагин keyring_aws и две загружаемые функции, keyring_aws_rotate_cmk() и keyring_aws_rotate_keys().
Для настройки keyring_aws вам необходимо получить секретный ключ доступа, который предоставляет учетные данные для взаимодействия с AWS KMS, и записать его в файл конфигурации:
Создайте учетную запись AWS KMS.
Используйте AWS KMS для создания идентификатора секретного ключа доступа и секретного ключа доступа. Ключ доступа служит для проверки вашей личности и личности ваших приложений.
Используйте учетную запись AWS KMS для создания идентификатора главного ключа клиента (CMK). При запуске MySQL установите системную переменную
keyring_aws_cmk_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 является обязательной и настраивает идентификатор главного ключа клиента (CMK), полученный с сервера 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, см. в разделе 6.4.4.12 «Системные переменные 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 см. в разделе 6.4.4.9 «Функции управления ключами keyring, специфичные для плагина».
Работа keyring_aws
При запуске плагин keyring_aws keyring считывает идентификатор и ключ секретного доступа AWS из файла конфигурации. Он также считывает все зашифрованные ключи, содержащиеся в файле хранения, в кэш оперативной памяти.
Во время работы keyring_aws сохраняет зашифрованные ключи в кэше оперативной памяти и использует файл хранения в качестве локального постоянного хранилища. Каждая операция keyring выполняется транзакционно: keyring_aws либо успешно изменяет кэш ключей в оперативной памяти и файл хранения keyring, либо операция завершается неудачно, и состояние keyring остается неизменным.
Чтобы гарантировать, что ключи сбрасываются только при наличии правильного файла хранения keyring, keyring_aws сохраняет контрольную сумму SHA-256 keyring в файле. Перед обновлением файла плагин проверяет, что он содержит ожидаемую контрольную сумму.
Плагин keyring_aws keyring поддерживает функции, составляющие стандартный интерфейс службы 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_aws_rotate_cmk() и keyring_aws_rotate_keys() «расширяют» интерфейс плагина keyring, предоставляя возможности, связанные с AWS, которые не охватываются стандартным интерфейсом службы keyring. Эти возможности доступны только при вызове этих функций с помощью SQL. Нет соответствующих функций службы ключей на языке C.
Сведения о характеристиках разрешенных значений ключей, используемых keyring_aws, см. в разделе 6.4.4.6 «Поддерживаемые типы ключей и длины 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.