Spec-Zone.ru › MySQL 8.4

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

  • 20.6.3.1.1 Пользователь репликации с плагином аутентификации Caching 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 Пользователь репликации с плагином аутентификации Caching SHA-2

По умолчанию пользователи, созданные в MySQL 8, используют раздел 8.4.1.2 «Плагин аутентификации Caching 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;
Примечание

При использовании стека коммуникаций MySQL (group_replication_communication_stack=MYSQL) и защищенных подключений между членами (group_replication_ssl_mode не установлено в DISABLED) требуется право GROUP_REPLICATION_STREAM. См. раздел 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-8.4-en/group-replication-secure-user.html

Spec-Zone.ru

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