Spec-Zone.ru › MySQL 8.4

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

  • Сайт AWS

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

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

  • Конфигурация 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 на значение идентификатора CMK. Эта переменная является обязательной и не имеет значения по умолчанию. (Если нужно, ее значение можно изменить во время выполнения с помощью SET GLOBAL.)

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

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

END_OF_DOCUMENT_MARKER ```
Изменения учетных данных 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-8.4-en/keyring-aws-plugin.html

Spec-Zone.ru

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