Spec-Zone.ru › MySQL 5.7

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

  • Сайт AWS

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

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

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

  • Работа keyring_aws

  • Изменения учетных данных keyring_aws

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

Для установки keyring_aws используйте общие инструкции, приведенные в разделе 6.4.4.1 «Установка плагина keyring», вместе со специфичной для плагина информацией о конфигурации, представленной здесь.

Библиотечный файл плагина содержит плагин keyring_aws и две загружаемые функции, keyring_aws_rotate_cmk() и keyring_aws_rotate_keys().

Для настройки keyring_aws вам необходимо получить секретный ключ доступа, который предоставляет учетные данные для взаимодействия с AWS KMS, и записать его в файл конфигурации:

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

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

  3. Используйте учетную запись AWS KMS для создания идентификатора главного ключа клиента (CMK). При запуске MySQL установите системную переменную keyring_aws_cmk_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 является обязательной и настраивает идентификатор главного ключа клиента (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».

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-5.7-en/keyring-aws-plugin.html

Spec-Zone.ru

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