Spec-Zone.ru › MySQL 9.2

8.4.4.12 Миграция ключей между хранилищами ключей Keyring

Миграция ключей keyring копирует ключи из одного хранилища ключей в другое, позволяя администратору базы данных переключить установку MySQL на другое хранилище ключей. Успешная операция миграции приводит к следующему результату:

  • Целевое хранилище ключей содержит ключи, которые у него были до миграции, плюс ключи из исходного хранилища.

  • Исходное хранилище ключей остается неизменным до и после миграции (потому что ключи копируются, а не перемещаются).

Если ключ, подлежащий копированию, уже существует в целевом хранилище ключей, возникает ошибка, и целевое хранилище восстанавливается до состояния до миграции.

Keyring управляет хранилищами ключей с помощью компонентов keyring и плагинов keyring. Это относится к стратегии миграции, поскольку способ управления исходным и целевым хранилищами определяет процедуру выполнения данного типа миграции ключей:

  • Миграция из одного плагина keyring в другой: сервер MySQL имеет режим работы, который предоставляет эту возможность.

  • Миграция из плагина keyring в компонент keyring: сервер MySQL имеет режим работы, который предоставляет эту возможность.

  • Миграция из одного компонента keyring в другой: утилита mysql_migrate_keyring предоставляет эту возможность.

  • Миграция из компонента keyring в плагин keyring: сервер MySQL имеет режим работы, который предоставляет эту возможность.

В следующих разделах рассматриваются особенности автономных и онлайн-миграций, а также способы выполнения миграций.

  • Автономные и онлайн-миграции ключей

  • Миграция ключей с помощью сервера миграции

  • Миграция ключей с помощью утилиты mysql_migrate_keyring

  • Миграция ключей с участием нескольких работающих серверов

Автономные и онлайн-миграции ключей

Миграция ключей может быть автономной или онлайн:

  • Автономная миграция: Используется, когда вы уверены, что ни один работающий сервер на локальном хосте не использует исходное или целевое хранилище ключей. В этом случае операция миграции может копировать ключи из исходного хранилища в целевое без возможности изменения содержимого хранилища работающим сервером во время операции.

  • Онлайн-миграция: Используется, когда работающий сервер на локальном хосте использует исходное хранилище ключей. В этом случае необходимо позаботиться о предотвращении обновления хранилищ ключей этим сервером во время миграции. Это включает подключение к работающему серверу и указание ему приостановить операции keyring, чтобы ключи могли быть безопасно скопированы из исходного хранилища в целевое. После завершения копирования ключей работающему серверу разрешается возобновить операции keyring.

При планировании миграции ключей используйте эти пункты, чтобы решить, должна ли она быть автономной или онлайн:

  • Не выполняйте автономную миграцию, затрагивающую хранилище ключей, которое используется работающим сервером.

  • Приостановка операций keyring во время онлайн-миграции выполняется путем подключения к работающему серверу и установки его глобальной системной переменной keyring_operations в значение OFF перед копированием ключей и в значение ON после копирования ключей. Это имеет несколько последствий:

    • keyring_operations была добавлена в MySQL 5.7.21, поэтому онлайн-миграция возможна только в том случае, если работающий сервер использует MySQL 5.7.21 или более позднюю версию. Если работающий сервер имеет более старую версию, вы должны остановить его, выполнить автономную миграцию и перезапустить его. Все инструкции по миграции, в которых упоминается keyring_operations, подчиняются этому условию.

    • Учетная запись, используемая для подключения к работающему серверу, должна иметь необходимые привилегии для изменения keyring_operations. Эти привилегии — ENCRYPTION_KEY_ADMIN в дополнение к SYSTEM_VARIABLES_ADMIN или устаревшей привилегии SUPER.

    • Если операция онлайн-миграции завершается аномально (например, если она насильственно прервана), возможно, keyring_operations останется отключенным на работающем сервере, что сделает его неспособным выполнять операции keyring. В этом случае может потребоваться подключиться к работающему серверу и вручную включить keyring_operations с помощью следующей команды:

      SET GLOBAL keyring_operations = ON;
      
  • Онлайн-миграция ключей позволяет приостановить операции keyring на одном работающем сервере. Для выполнения миграции, если несколько работающих серверов используют участвующие хранилища ключей, используйте процедуру, описанную в разделе Миграция ключей с участием нескольких работающих серверов.

END_OF_DOCUMENT_MARKER
Миграция ключей с использованием сервера миграции
Примечание

Онлайновая миграция ключей с использованием сервера миграции поддерживается только если работающий сервер разрешает сокет-соединения или TCP/IP-соединения с использованием TLS; она не поддерживается, например, если сервер работает на платформе Windows и разрешает только соединения с общей памятью.

Сервер MySQL становится сервером миграции, если запущен в специальном режиме, поддерживающем миграцию ключей. Сервер миграции не принимает клиентские соединения. Вместо этого, он работает только столько, сколько нужно для миграции ключей, а затем завершается. Сервер миграции сообщает об ошибках в консоль (стандартный вывод ошибок).

Сервер миграции поддерживает следующие типы миграции:

  • Миграция из одного плагина ключей в другой.

  • Миграция из плагина ключей в компонент ключей.

  • Миграция из компонента ключей в плагин ключей.

Сервер миграции не поддерживает миграцию из одного компонента ключей в другой. Для этого типа миграции обратитесь к Миграции ключей с помощью утилиты mysql_migrate_keyring.

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

  • Чтобы указать исходный плагин ключей и целевой плагин или компонент ключей, укажите следующие параметры:

    • --keyring-migration-source: Исходный компонент или плагин ключей, управляющий ключами, которые необходимо мигрировать.

    • --keyring-migration-destination: Целевой плагин или компонент ключей, в который необходимо скопировать мигрированные ключи.

    • --keyring-migration-to-component: Этот параметр необходим, если целевой объект — компонент ключей.

    • --keyring-migration-from-component: Этот параметр необходим, если исходный объект — компонент ключей.

    Параметры --keyring-migration-source и --keyring-migration-destination сообщают серверу, что он должен работать в режиме миграции ключей. Для операций миграции ключей оба параметра обязательны. Каждый плагин или компонент указывается с помощью имени файла библиотеки, включая любые платформозависимые расширения, такие как .so или .dll. Имя источника и назначения должны отличаться, и сервер миграции должен поддерживать оба.

  • Для оффлайн-миграции дополнительных параметров миграции ключей не требуется.

  • Для онлайн-миграции в данный момент используется исходный или целевой хранилище ключей. Чтобы запустить сервер миграции, укажите дополнительные параметры миграции ключей, указывающие способ подключения к работающему серверу. Это необходимо, чтобы сервер миграции мог подключиться к работающему серверу и попросить его приостановить использование ключей во время операции миграции.

    Использование любого из следующих параметров означает онлайн-миграцию:

    • --keyring-migration-host: Хост, где расположен работающий сервер. Он всегда является локальным хостом, так как сервер миграции может мигрировать ключи только между хранилищами ключей, управляемыми локальными плагинами и компонентами.

    • --keyring-migration-user, --keyring-migration-password: учетные данные для входа в систему для подключения к работающему серверу.

    • --keyring-migration-port: Для TCP/IP-соединений номер порта для подключения к работающему серверу.

    • --keyring-migration-socket: Для соединений с файлом Unix-сокет или именованной Windows-трубой имя файла сокета или именованной трубы для подключения к работающему серверу.

Дополнительные сведения о параметрах миграции ключей см. в разделе 8.4.4.16, «Параметры команды ключей».

Запустите сервер миграции с параметрами миграции ключей, указывающими исходное и целевое хранилища ключей и тип миграции (оффлайн или онлайн), возможно, с другими параметрами. Имейте в виду следующие моменты:

  • Возможно, потребуются и другие параметры сервера; также могут потребоваться другие параметры, не связанные с ключами. Один из способов указать эти параметры — использование --defaults-file для указания файла параметров, содержащего необходимые параметры.

  • Сервер миграции ожидает, что значения параметров имен путей будут полными путями. Относительные имена путей могут не быть разрешены ожидаемым образом.

  • Пользователь, запускающий сервер в режиме миграции ключей, не должен быть пользователем операционной системы root, если не указан параметр --user с именем пользователя, отличным от root, для запуска сервера от имени этого пользователя.

  • Пользователь, от имени которого работает сервер в режиме миграции ключей, должен иметь разрешение на чтение и запись всех локальных файлов ключей, например, файла данных для плагина на основе файлов.

    Если вы запускаете сервер миграции от имени учетной записи системы, отличной от той, которая обычно используется для запуска MySQL, он может создать каталоги или файлы, относящиеся к ключам, недоступные для сервера во время нормальной работы. Предположим, что mysqld обычно запускается от имени пользователя операционной системы mysql, но вы запускаете сервер миграции, войдя в систему как isabel. Любые новые каталоги или файлы, созданные сервером миграции, будут принадлежать пользователю isabel. Последующий запуск завершится ошибкой, когда сервер, запущенный от имени пользователя операционной системы mysql, попытается получить доступ к объектам файловой системы, принадлежащим пользователю isabel.

    Чтобы избежать этой проблемы, запустите сервер миграции от имени пользователя операционной системы root и укажите параметр --user=user_name, где user_name — это учетная запись системы, обычно используемая для запуска MySQL. В качестве альтернативы после миграции проверьте объекты файловой системы, связанные с ключами, и измените их владельца и разрешения при необходимости, используя команды chown, chmod или аналогичные, чтобы объекты были доступны работающему серверу.

Пример командной строки для оффлайн-миграции между двумя плагинами ключей (введите команду в одну строку):

mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
  --keyring-migration-source=keyring_okv.so
  --keyring-migration-destination=keyring_aws.so

Пример командной строки для онлайн-миграции между двумя плагинами ключей:

mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
  --keyring-migration-source=keyring_okv.so
  --keyring-migration-destination=keyring_aws.so
  --keyring-migration-host=127.0.0.1
  --keyring-migration-user=root
  --keyring-migration-password=root_password

Чтобы выполнить миграцию, когда целевой объект является компонентом ключей, а не плагином ключей, укажите параметр --keyring-migration-to-component, а имя компонента укажите в качестве значения параметра --keyring-migration-destination.

Пример командной строки для оффлайн-миграции из плагина ключей в компонент ключей:

mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
  --keyring-migration-to-component
  --keyring-migration-source=keyring_okv.so
  --keyring-migration-destination=component_keyring_encrypted_file.so

Обратите внимание, что в этом случае не указано значение keyring_encrypted_file_password. Пароль для файла данных компонента указан в файле конфигурации компонента.

Пример командной строки для онлайн-миграции из плагина ключей в компонент ключей:

mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
  --keyring-migration-to-component
  --keyring-migration-source=keyring_okv.so
  --keyring-migration-destination=component_keyring_encrypted_file.so
  --keyring-migration-host=127.0.0.1
  --keyring-migration-user=root
  --keyring-migration-password=root_password

Чтобы выполнить миграцию, когда исходный объект является компонентом ключей, а не плагином ключей, укажите параметр --keyring-migration-from-component, а имя компонента укажите в качестве значения параметра --keyring-migration-source.

Пример командной строки для оффлайн-миграции из компонента ключей в плагин ключей:

mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
  --keyring-migration-from-component
  --keyring-migration-source=component_keyring_file.so
  --keyring-migration-destination=keyring_okv.so
  --keyring-okv-conf-dir=/usr/local/mysql/mysql-keyring-okv

Пример командной строки для онлайн-миграции из компонента ключей в плагин ключей:

mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
  --keyring-migration-from-component
  --keyring-migration-source=component_keyring_file.so
  --keyring-migration-destination=keyring_okv.so
  --keyring-okv-conf-dir=/usr/local/mysql/mysql-keyring-okv
  --keyring-migration-host=127.0.0.1
  --keyring-migration-user=root
  --keyring-migration-password=root_password

Сервер миграции ключей выполняет операцию миграции следующим образом:

  1. (Только онлайн-миграция) Подключение к работающему серверу с использованием параметров подключения.

  2. (Только онлайн-миграция) Отключение keyring_operations на работающем сервере.

  3. Загрузка библиотек плагина или компонента ключей для исходного и целевого хранилищ ключей.

  4. Копирование ключей из исходного хранилища в целевое.

  5. Выгрузка библиотек плагина или компонента ключей для исходного и целевого хранилищ ключей.

  6. (Только онлайн-миграция) Включение keyring_operations на работающем сервере.

  7. (Только онлайн-миграция) Отключение от работающего сервера.

При возникновении ошибки во время миграции ключей целевое хранилище ключей восстанавливается до состояния до миграции.

После успешной онлайн-миграции ключей работающий сервер, возможно, потребует перезапуска.

  • Если работающий сервер использовал исходный хранилище ключей до миграции и должен продолжать его использовать после миграции, его не нужно перезапускать после миграции.

  • Если работающий сервер использовал целевое хранилище ключей до миграции и должен продолжать его использовать после миграции, его следует перезапустить после миграции для загрузки всех перенесенных ключей в целевое хранилище ключей.

  • Если работающий сервер использовал исходное хранилище ключей до миграции, но должен использовать целевое хранилище ключей после миграции, его необходимо перенастроить для использования целевого хранилища ключей и перезапустить. В этом случае следует учитывать, что хотя работающий сервер приостанавливается от изменения исходного хранилища ключей во время самой миграции, он не приостанавливается в период между миграцией и последующим перезапуском. Необходимо позаботиться о том, чтобы сервер не изменял исходное хранилище ключей в течение этого интервала, потому что любые такие изменения не будут отражены в целевом хранилище ключей.

Миграция ключей с помощью утилиты mysql_migrate_keyring

Утилита mysql_migrate_keyring мигрирует ключи из одного компонента хранилища ключей в другой. Она не поддерживает миграции, включающие плагины хранилища ключей. Для этого типа миграции используйте сервер MySQL, работающий в режиме миграции ключей; см. Миграция ключей с использованием сервера миграции.

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

  • Для указания исходного и целевого компонентов хранилища ключей и их расположения, укажите следующие параметры:

    • --source-keyring: Исходный компонент хранилища ключей, управляющий ключами, которые будут мигрированы.

    • --destination-keyring: Целевой компонент хранилища ключей, в который будут скопированы мигрированные ключи.

    • --component-dir: Каталог, содержащий файлы библиотек компонентов хранилища ключей. Обычно это значение системной переменной plugin_dir для локального сервера MySQL.

    Все три параметра являются обязательными. Каждое имя компонента хранилища ключей — это имя файла библиотеки компонента, указанное без каких-либо платформозависимых расширений, таких как .so или .dll. Например, для использования компонента, для которого файл библиотеки — component_keyring_file.so, укажите параметр как --source-keyring=component_keyring_file. Источник и место назначения должны отличаться, и mysql_migrate_keyring должен поддерживать оба.

  • Для автономной миграции дополнительных параметров не требуется.

  • Для онлайн-миграции, некоторые работающие сервера в данный момент используют хранилище ключей источника или назначения. В этом случае укажите параметр --online-migration для обозначения онлайн-миграции. Кроме того, укажите параметры подключения, указывающие, как подключиться к работающему серверу, чтобы mysql_migrate_keyring мог подключиться к нему и попросить его приостановить использование хранилища ключей во время операции миграции.

    Параметр --online-migration обычно используется совместно с параметрами подключения, такими как:

    • --host: Хост, где находится работающий сервер. Это всегда локальный хост, потому что mysql_migrate_keyring может мигрировать ключи только между хранилищами ключей, управляемыми локальными компонентами.

    • --user, --password: учетные данные для подключения к работающему серверу.

    • --port: Для TCP/IP-соединений номер порта для подключения к работающему серверу.

    • --socket: Для соединений с файлом Unix-сокет или именованной трубой Windows, файл сокета или именованная труба для подключения к работающему серверу.

Описание всех доступных параметров см. в Раздел 6.6.8, «mysql_migrate_keyring — Утилита миграции ключей хранилища ключей».

Запустите mysql_migrate_keyring с параметрами, указывающими исходные и целевые хранилища ключей и тип миграции (автономная или онлайн), возможно, с другими параметрами. Имейте в виду следующие моменты:

  • Пользователь, вызывающий mysql_migrate_keyring, не должен быть пользователем root операционной системы.

  • Пользователь, вызывающий mysql_migrate_keyring, должен иметь разрешения на чтение и запись в любые локальные файлы хранилища ключей, например, в файл данных для плагина на основе файлов.

    Если вы вызываете mysql_migrate_keyring от имени системной учетной записи, отличной от обычно используемой для запуска MySQL, это может привести к созданию каталогов или файлов хранилища ключей, недоступных для сервера во время обычной работы. Предположим, что mysqld обычно запускается как пользователь mysql операционной системы, но вы вызываете mysql_migrate_keyring, войдя под учетной записью isabel. Любые новые каталоги или файлы, созданные mysql_migrate_keyring, будут принадлежать пользователю isabel. Последующий запуск завершается ошибкой, когда сервер, запущенный как пользователь mysql операционной системы, пытается получить доступ к объектам файловой системы, принадлежащим пользователю isabel.

    Чтобы избежать этой проблемы, вызовите mysql_migrate_keyring от имени пользователя mysql операционной системы. В качестве альтернативы, после миграции проверьте объекты файловой системы, связанные с хранилищем ключей, и измените их права владения и разрешения, если необходимо, с помощью команд chown, chmod или аналогичных команд, чтобы объекты были доступны работающему серверу.

Предположим, что вы хотите мигрировать ключи из component_keyring_file в component_keyring_encrypted_file, и что локальный сервер хранит файлы библиотек компонентов хранилища ключей в /usr/local/mysql/lib/plugin.

Если работающий сервер не использует хранилище ключей, разрешена автономная миграция. Вызовите mysql_migrate_keyring следующим образом (введите команду в одну строку):

mysql_migrate_keyring
  --component-dir=/usr/local/mysql/lib/plugin
  --source-keyring=component_keyring_file
  --destination-keyring=component_keyring_encrypted_file

Если работающий сервер использует хранилище ключей, необходимо выполнить онлайн-миграцию. В этом случае необходимо указать параметр --online-migration, а также любые параметры подключения, необходимые для указания сервера для подключения и учетной записи MySQL для использования.

Следующая команда выполняет онлайн-миграцию. Она подключается к локальному серверу с использованием TCP/IP-соединения и учетной записи admin. Команда запросит пароль, который вы должны ввести при запросе:

mysql_migrate_keyring
  --component-dir=/usr/local/mysql/lib/plugin
  --source-keyring=component_keyring_file
  --destination-keyring=component_keyring_encrypted_file
  --online-migration --host=127.0.0.1 --user=admin --password

mysql_migrate_keyring выполняет операцию миграции следующим образом:

  1. (Только онлайн-миграция) Подключение к работающему серверу с использованием параметров подключения.

  2. (Только онлайн-миграция) Отключение keyring_operations на работающем сервере.

  3. Загрузка библиотек компонентов хранилища ключей для исходных и целевых хранилищ ключей.

  4. Копирование ключей из исходного хранилища в целевое.

  5. Выгрузка библиотек компонентов хранилища ключей для исходных и целевых хранилищ ключей.

  6. (Только онлайн-миграция) Включение keyring_operations на работающем сервере.

  7. (Только онлайн-миграция) Отключение от работающего сервера.

При возникновении ошибки во время миграции ключей целевое хранилище ключей восстанавливается до состояния до миграции.

После успешной онлайн-операции миграции ключей, возможно, потребуется перезапустить работающий сервер:

  • Если работающий сервер использовал исходный хранилище ключей до миграции и должен продолжать его использовать после миграции, его не нужно перезапускать после миграции.

  • Если работающий сервер использовал целевое хранилище ключей до миграции и должен продолжать его использовать после миграции, его следует перезапустить после миграции для загрузки всех перенесенных ключей в целевое хранилище ключей.

  • Если работающий сервер использовал исходное хранилище ключей до миграции, но должен использовать целевое хранилище ключей после миграции, его необходимо переконфигурировать для использования целевого хранилища ключей и перезапустить. В этом случае следует учитывать, что, хотя работающий сервер приостановлен от изменения исходного хранилища ключей во время самой миграции, он не приостановлен в период между миграцией и последующим перезапуском. Следует позаботиться о том, чтобы сервер не изменял исходное хранилище ключей в этот период, так как любые такие изменения не будут отражены в целевом хранилище ключей.

Миграция ключей с участием нескольких работающих серверов

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

  1. Подключитесь к каждому работающему серверу вручную и установите keyring_operations=OFF. Это гарантирует, что ни один работающий сервер не использует исходное или целевое хранилище ключей и удовлетворяет необходимому условию для офлайн-миграции.

  2. Используйте сервер миграции или mysql_migrate_keyring для выполнения офлайн-миграции ключей для каждого приостановленного сервера.

  3. Подключитесь к каждому работающему серверу вручную и установите keyring_operations=ON.

Все работающие серверы должны поддерживать переменную системы keyring_operations. Любой сервер, который этого не делает, должен быть остановлен перед миграцией и перезапущен после нее.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/keyring-key-migration.html

Spec-Zone.ru

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