Spec-Zone.ru › MySQL 9.2

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 в частности. Некоторые полезные источники информации:

  • Сайт AWS

  • Документация KMS

В следующих разделах представлена информация о конфигурации и использовании плагина keyring_aws keyring:

  • Конфигурация keyring_aws

  • Работа keyring_aws

  • Изменения учетных данных 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, и записать его в конфигурационный файл:

  1. Создайте учетную запись AWS KMS.

  2. Используйте AWS KMS для создания идентификатора секретного ключа доступа и секретного ключа доступа. Ключ доступа служит для проверки вашей личности и личности ваших приложений.

  3. Используйте учетную запись AWS KMS для создания идентификатора KMS-ключа. При запуске MySQL задайте системную переменную keyring_aws_cmk_id на значение ID CMK. Эта переменная является обязательной и не имеет значения по умолчанию. (Её значение можно изменить во время работы, используя SET GLOBAL.)

  4. При необходимости создайте директорию, в которой должен располагаться конфигурационный файл. Директория должна иметь ограниченный режим доступа и быть доступна только учетной записи, используемой для запуска сервера 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, чтобы указать серверу расположение конфигурационного файла.

  5. Подготовьте конфигурационный файл 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:

  1. Используйте AWS KMS для создания нового идентификатора ключа доступа и секретного ключа доступа.

  2. Сохраните новые учетные данные в файле конфигурации (файл, имя которого указано в системной переменной keyring_aws_conf_file). Формат файла описан ранее.

  3. Переинициализируйте плагин 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.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/keyring-aws-plugin.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API