Spec-Zone.ru › MySQL Shell 9.2

8.6 Защита кластера InnoDB

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

Важно

Если вы используете XCOM стек коммуникаций, после настройки кластера для использования зашифрованных подключений вы должны добавить серверы в ipAllowlist. Например, при использовании коммерческой версии MySQL SSL включен по умолчанию, и вам необходимо настроить опцию ipAllowlist для всех экземпляров. См. Создание списка разрешенных серверов.

При использовании dba.createCluster() для настройки кластера, если экземпляр сервера предоставляет шифрование, то оно автоматически включается на экземпляре-семени. Передайте опцию memberSslMode методу dba.createCluster() для указания другого режима SSL. Режим SSL кластера может быть установлен только во время создания. Опция memberSslMode — это строка, которая настраивает используемый режим SSL, по умолчанию он равен AUTO. Поддерживаются следующие режимы:

  • DISABLED: Обеспечьте отключение SSL-шифрования для экземпляра-семени в кластере.

  • AUTO: Автоматически включить SSL-шифрование, если экземпляр сервера его поддерживает, или отключить шифрование, если сервер его не поддерживает.

  • REQUIRED: Включить SSL-шифрование для экземпляра-семени в кластере. Если это невозможно, возникает ошибка.

  • VERIFY_CA: Как REQUIRED, но дополнительно проверяет сертификат Удостоверяющего центра (CA) сервера на соответствие с настроенными сертификатами CA. Попытка подключения завершается ошибкой, если не найдены соответствующие действительные сертификаты CA.

  • VERIFY_IDENTITY: Как VERIFY_CA, но дополнительно выполняет проверку идентификатора имени хоста, проверяя имя хоста, используемое клиентом для подключения к серверу, с идентификатором в сертификате, который сервер отправляет клиенту.

Например, чтобы настроить кластер на использование REQUIRED, выполните:

mysql-js> var myCluster = dba.createCluster({memberSslMode: 'REQUIRED'})

Если вы выбираете режим VERIFY_CA или VERIFY_IDENTITY, на каждом экземпляре кластера вы должны вручную предоставить сертификаты CA, используя опцию и/или . Для получения дополнительной информации об этих режимах см. .

При использовании операций Cluster.addInstance() и Cluster.rejoinInstance() SSL-шифрование на экземпляре включается или отключается в зависимости от настроек, используемых для кластера. Используйте опцию memberSslMode с любой из этих операций, чтобы установить экземпляр для использования другого режима шифрования.

При использовании dba.createCluster() с опцией adoptFromGR для принятия существующей группы Group Replication, никакие настройки SSL не изменяются в принятом кластере:

  • memberSslMode не может быть использовано с adoptFromGR.

  • Если настройки SSL принятого кластера отличаются от тех, которые поддерживает MySQL Shell, другими словами, SSL для восстановления Group Replication и групповой связи, обе настройки не изменяются. Это означает, что вы не сможете добавить новые экземпляры в кластер, если не измените настройки вручную для принятого кластера.

MySQL Shell всегда включает или отключает SSL для кластера как для восстановления Group Replication, так и для групповой связи, см. . Проводится проверка, и выдается ошибка, если эти настройки отличаются для экземпляра-семени (например, в результате dba.createCluster(), использующего adoptFromGR) при добавлении нового экземпляра в кластер. SSL-шифрование должно быть включено или отключено для всех экземпляров в кластере. Проводятся проверки, чтобы убедиться, что это свойство сохраняется при добавлении нового экземпляра в кластер.

Команда dba.deploySandboxInstance() пытается развернуть экземпляры-песочницы с поддержкой SSL-шифрования по умолчанию. Если это невозможно, экземпляр сервера разворачивается без поддержки SSL. См. Раздел 6.8.1, «Развертывание экземпляров-песочниц».

Защита связи между членами кластера

Возможна настройка кластеров и кластеров реплик на использование SSL для шифрования каналов репликации и включение реплик для проверки идентичности хоста и использования SSL-сертификатов для аутентификации.

При создании кластера с dba.createCluster() можно определить тип аутентификации, используемый для внутренних учетных записей репликации, с помощью опции memberAuthType. Эта опция принимает одно из следующих значений:

  • PASSWORD: Учетная запись аутентифицируется только по паролю.

  • CERT_ISSUER: Учетная запись аутентифицируется с помощью клиентского сертификата, который должен соответствовать ожидаемому издателю. Это значение эквивалентно VERIFY_CA.

  • CERT_SUBJECT: Учетная запись аутентифицируется с помощью клиентского сертификата, который должен соответствовать ожидаемому издателю и субъекту. Это значение эквивалентно VERIFY_IDENTITY.

  • CERT_ISSUER_PASSWORD: Учетная запись аутентифицируется с помощью комбинации значений PASSWORD и CERT_ISSUER.

  • CERT_SUBJECT_PASSWORD: Учетная запись аутентифицируется с помощью комбинации значений PASSWORD и CERT_SUBJECT.

Важно

ClusterSets наследуют memberAuthType, определённые в основном кластере. Все кластеры реплик в ClusterSet также будут использовать memberAuthType, определённые в основном.

SSL-сертификаты определяются с помощью следующих опций:

  • CERT_ISSUER: Определяет издателя сертификата, требуемого для всех учетных записей репликации в топологии, если memberAuthType содержит CERT_ISSUER или CERT_SUBJECT.

  • CERT_SUBJECT: Определяет субъект сертификата экземпляра. Требуется, если memberAuthType содержит CERT_SUBJECT.

Примечание

Невозможно использовать adoptFromGR=true ни с какой опцией, кроме memberAuthType=password.

Следующий пример создает кластер, cluster1, который устанавливает клиентские SSL-подключения и подключения, открытые Group Replication с одного сервера на другой, в режим VERIFY_IDENTITY и устанавливает аутентификацию внутренних учетных записей репликации для требования клиентского сертификата:

        cluster = dba.createCluster("cluster1", { "memberSslMode": "VERIFY_IDENTITY", "memberAuthType":"CERT_SUBJECT",
        "certIssuer":"/CN=MyCertAuthority", "certSubject": "/CN=mysql-1.local"});
      

Следующий пример показывает, как добавить экземпляр в кластер, используя "memberAuthType":"CERT_SUBJECT":

        cluster.addInstance("mysql-2.local", {"certSubject": "/CN=mysql-2.local"});
      

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

Создание списка разрешенных серверов

Примечание

Это относится только к XCOM стеку коммуникаций.

Методы createCluster(), addInstance() и rejoinInstance() позволяют, по желанию, указать список разрешенных серверов, называемый списком разрешений. Явное указание списка разрешений таким образом повышает безопасность вашего кластера, так как к кластеру могут подключаться только серверы из этого списка.

Вы также можете определить список разрешений для работающего кластера, используя Cluster.setOption() для указания списка разрешений для всех членов кластера и Cluster.setInstanceOption() для указания списка разрешений для отдельного члена. См. Раздел 8.5.1, «Настройка параметров для кластера InnoDB».

Использование опции ipAllowlist настраивает системную переменную на экземпляре. По умолчанию, если не указано явно, список разрешений автоматически устанавливается на адреса частной сети, к которым сервер имеет сетевые интерфейсы. Для настройки списка разрешений укажите серверы для добавления с опцией ipAllowlist при использовании метода. IP-адреса должны быть указаны в формате IPv4. Передайте серверы в виде списка, разделенного запятыми, заключенного в кавычки. Например:

mysql-js> cluster.addInstance("icadmin@ic-3:3306", {ipAllowlist: "203.0.113.0/24, 198.51.100.110"})

Это настраивает экземпляр так, что он будет принимать подключения только от серверов по адресам 203.0.113.0/24 и 198.51.100.110. Список разрешений также может включать имена хостов, которые разрешаются только при получении запроса подключения от другого сервера.

Предупреждение

Имена хостов в списке разрешений по своей природе менее защищены, чем IP-адреса. MySQL выполняет проверку FCrDNS, которая обеспечивает хороший уровень защиты, но может быть скомпрометирована определенными типами атак. Указывайте имена хостов в списке разрешений только в строго необходимых случаях и убедитесь, что все компоненты, используемые для разрешения имен, такие как серверы DNS, находятся под вашим контролем. Вы также можете реализовать разрешение имен локально, используя файл hosts, чтобы избежать использования внешних компонентов.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-shell-9.2-en/mysql-innodb-cluster-securing.html

Spec-Zone.ru

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