Spec-Zone.ru › MySQL 9.2

20.6.3.1 Безопасные учетные данные пользователя для распределенного восстановления

  • 20.6.3.1.1 Пользователь репликации с кеширующим плагином аутентификации SHA-2
  • 20.6.3.1.2 Пользователь репликации с SSL
  • 20.6.3.1.3 Безопасное предоставление учетных данных пользователя репликации

Перенос состояния из бинарного журнала требует пользователя репликации с соответствующими разрешениями, чтобы Group Replication мог установить прямые каналы репликации между участниками. Тот же пользователь репликации используется для распределенного восстановления на всех участниках группы. Если участники группы были настроены для поддержки удаленной операции клонирования в рамках распределенного восстановления, этот пользователь репликации также используется в качестве пользователя клонирования на доноре и требует соответствующих разрешений для этой роли. Более подробные инструкции по настройке этого пользователя см. в разделе 20.2.1.3 «Учетные данные пользователя для распределенного восстановления».

Для защиты учетных данных пользователя можно потребовать SSL для подключений с учетной записью пользователя и предоставить учетные данные пользователя при запуске Group Replication, а не хранить их в таблицах состояния реплики. Кроме того, если вы используете аутентификацию с кешированием SHA-2, необходимо настроить пары RSA-ключей на участниках группы.

Важно

При использовании стека коммуникаций MySQL (group_replication_communication_stack=MYSQL) И защищенных соединений между участниками (group_replication_ssl_mode не установлено в DISABLED), пользователи восстановления должны быть должным образом настроены, так как они также являются пользователями для групповой коммуникации. Следуйте инструкциям в разделе 20.6.3.1.2 «Пользователь репликации с SSL» и разделе 20.6.3.1.3 «Безопасное предоставление учетных данных пользователя репликации».

20.6.3.1.1 Пользователь репликации с кеширующим плагином аутентификации SHA-2

По умолчанию пользователи, созданные в MySQL 8, используют раздел 8.4.1.1 «Кеширующая аутентификация SHA-2». Если пользователь репликации, который вы настраиваете для распределенного восстановления, использует плагин аутентификации с кешированием SHA-2, и вы не используете SSL для подключений распределенного восстановления, для обмена паролями используются пары RSA-ключей. Дополнительную информацию о парах RSA-ключей см. в разделе 8.3.3 «Создание SSL и RSA сертификатов и ключей».

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

Менее безопасный подход заключается в установке group_replication_recovery_get_public_key=ON на донорах, чтобы они предоставляли открытый ключ учетной записи пользователя репликации присоединяющимся участникам. Нет способа проверить идентичность сервера, поэтому устанавливайте group_replication_recovery_get_public_key=ON только в том случае, если уверены, что нет риска компрометации идентичности сервера, например, атакой «человек посередине».

20.6.3.1.2 Пользователь репликации с SSL

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

mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER 'rec_ssl_user'@'%' IDENTIFIED BY 'password' REQUIRE SSL;
mysql> GRANT REPLICATION SLAVE ON *.* TO 'rec_ssl_user'@'%';
mysql> GRANT CONNECTION_ADMIN ON *.* TO 'rec_ssl_user'@'%';
mysql> GRANT BACKUP_ADMIN ON *.* TO 'rec_ssl_user'@'%';
mysql> GRANT GROUP_REPLICATION_STREAM ON *.* TO rec_ssl_user@'%';
mysql> FLUSH PRIVILEGES;
mysql> SET SQL_LOG_BIN=1;
Примечание

Разрешение GROUP_REPLICATION_STREAM требуется при использовании стека коммуникаций MySQL (group_replication_communication_stack=MYSQL) и защищенных соединений между участниками (group_replication_ssl_mode не установлено в DISABLED). См. раздел 20.6.1 «Стек коммуникаций для управления безопасностью подключений».

20.6.3.1.3 Безопасное предоставление учетных данных пользователя репликации

Для предоставления учетных данных пользователя репликации их можно установить постоянными учетными данными канала group_replication_recovery, используя оператор CHANGE REPLICATION SOURCE TO. В качестве альтернативы, их можно указать в операторе START GROUP_REPLICATION каждый раз при запуске Group Replication. Учетные данные пользователя, указанные в START GROUP_REPLICATION, имеют приоритет перед любыми учетными данными пользователя, установленными с помощью оператора CHANGE REPLICATION SOURCE TO.

Учетные данные пользователя, установленные с помощью CHANGE REPLICATION SOURCE TO, хранятся в открытом виде в репозиториях метаданных репликации на сервере, но учетные данные пользователя, указанные в START GROUP_REPLICATION, сохраняются только в памяти и удаляются оператором STOP GROUP_REPLICATION или при завершении работы сервера. Использование START GROUP_REPLICATION для указания учетных данных пользователя, таким образом, помогает защитить серверы Group Replication от несанкционированного доступа. Однако этот метод несовместим с автоматическим запуском Group Replication, как указано в системной переменной group_replication_start_on_boot.

Если вы хотите установить учетные данные пользователя постоянно, используя оператор CHANGE REPLICATION SOURCE TO, выполните этот оператор на участнике, который будет присоединяться к группе:

mysql> CHANGE REPLICATION SOURCE TO SOURCE_USER='rec_ssl_user',
    ->   SOURCE_PASSWORD='password'
    ->   FOR CHANNEL 'group_replication_recovery';

Для предоставления учетных данных пользователя при START GROUP_REPLICATION, выполните этот оператор при первом запуске Group Replication или после перезапуска сервера:

mysql> START GROUP_REPLICATION USER='rec_ssl_user', PASSWORD='password';
Важно

Если вы переключаетесь на использование START GROUP_REPLICATION для указания учетных данных пользователя на сервере, который ранее предоставлял учетные данные с помощью CHANGE REPLICATION SOURCE TO, необходимо выполнить следующие шаги, чтобы получить преимущества безопасности этого изменения.

  1. Остановите Group Replication на участнике группы, используя оператор STOP GROUP_REPLICATION. Хотя следующие два шага можно выполнить и при работающем Group Replication, для реализации изменений необходимо перезапустить Group Replication.

  2. Установите значение системной переменной group_replication_start_on_boot в OFF (по умолчанию ON).

  3. Удалите учетные данные распределенного восстановления из таблиц состояния реплики, выполнив этот оператор:

    mysql> CHANGE REPLICATION SOURCE TO SOURCE_USER='', SOURCE_PASSWORD=''
        ->   FOR CHANNEL 'group_replication_recovery';
    
  4. Перезапустите Group Replication на участнике группы, используя оператор START GROUP_REPLICATION, который указывает учетные данные пользователя распределенного восстановления.

Без этих шагов учетные данные остаются сохраненными в таблицах состояния реплики и могут быть переданы другим участникам группы во время операций удаленного клонирования для распределенного восстановления. Канал group_replication_recovery затем может быть случайно запущен с сохраненными учетными данными на исходном участнике или участниках, клонированных с него. Автоматический запуск Group Replication при запуске сервера (включая после операции удаленного клонирования) будет использовать сохраненные учетные данные пользователя, а они также будут использоваться, если оператор не указал учетные данные распределенного восстановления в рамках START GROUP_REPLICATION.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/group-replication-secure-user.html

Spec-Zone.ru

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