8.4.4.7 Использование плагина keyring_aws для управления ключами Amazon Web Services
Плагин keyring_aws — это расширение, включенное в MySQL Enterprise Edition, коммерческий продукт. Дополнительную информацию о коммерческих продуктах см. на странице https://www.mysql.com/products/.
Плагин keyring_aws общается с Управлением ключами Amazon Web Services (AWS KMS) в качестве бэкенда для генерации ключей и использует локальный файл для хранения ключей. Весь материал для ключей генерируется исключительно сервером 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_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на значение идентификатора CMK. Эта переменная является обязательной и не имеет значения по умолчанию. (Если нужно, ее значение можно изменить во время выполнения с помощьюSET GLOBAL.)-
При необходимости создайте директорию, в которой должен находиться конфигурационный файл. Директория должна иметь ограниченный режим доступа и быть доступна только учетной записи, используемой для запуска сервера MySQL. Например, в системах Unix и 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 является обязательной и настраивает идентификатор ключа 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.16 «Системные переменные 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.13 «Функции управления ключами Keyring, специфичные для плагинов».
Работа keyring_aws
При запуске плагин keyring_aws считывает идентификатор секретного ключа доступа AWS и сам ключ из конфигурационного файла. Также он считывает все зашифрованные ключи, содержащиеся в файле хранения, в кеш оперативной памяти.
Во время работы keyring_aws хранит зашифрованные ключи в кэше оперативной памяти и использует файл хранения как локальное постоянное хранилище. Каждая операция с ключами — транзакционная: keyring_aws либо успешно изменяет как кеш ключей в оперативной памяти, так и файл хранения ключей, либо операция завершается ошибкой, и состояние ключей не изменяется.
Для обеспечения сброса ключей только при наличии корректного файла хранения ключей, keyring_aws хранит контрольную сумму SHA-256 ключей в файле. Перед обновлением файла плагин проверяет, что он содержит ожидаемую контрольную сумму.
Плагин keyring_aws поддерживает функции, составляющие стандартный интерфейс службы Keyring MySQL. К операциям с ключами, выполняемыми этими функциями, можно получить доступ на двух уровнях:
Интерфейс SQL: в SQL-запросах вызывайте функции, описанные в разделе 8.4.4.12 «Функции управления ключами Keyring общего назначения».
Интерфейс C: в коде на языке C вызывайте функции службы ключей, описанные в разделе 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.10 «Поддерживаемые типы и длины ключей 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.