Spec-Zone.ru › MySQL 9.2

25.6.21.1 Проблемы безопасности и сетевых соединений NDB кластера

В этом разделе мы обсуждаем основные проблемы сетевой безопасности, связанные с NDB кластером. Крайне важно помнить, что NDB кластер «из коробки» не является безопасным; вы или ваш сетевой администратор должны предпринять соответствующие шаги, чтобы гарантировать невозможность компрометации вашего кластера через сеть.

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

Также верно, что никакая аутентификация не используется для контроля доступа узлов API к NDB кластеру. Как и в случае с шифрованием, накладные расходы на введение требований к аутентификации отрицательно скажутся на производительности кластера.

Кроме того, при доступе к кластеру не производится проверка исходного IP-адреса для следующих случаев:

  • Узлы SQL или API, использующие «свободные слоты», созданные пустые секциями [mysqld] или [api] в файле config.ini

    Это означает, что если в файле config.ini есть какие-либо пустые секции [mysqld] или [api], то любые узлы API (включая узлы SQL), которые знают имя хоста (или IP-адрес) и порт сервера управления, могут подключаться к кластеру и получать доступ к его данным без ограничений. (См. Раздел 25.6.21.2, «NDB кластер и MySQL привилегии» для получения дополнительной информации об этом и связанных проблемах.)

    Примечание

    Вы можете контролировать доступ узлов SQL и API к кластеру, указав параметр HostName для всех секций [mysqld] и [api] в файле config.ini. Однако это также означает, что если вам нужно подключить узел API к кластеру с ранее неиспользуемого хоста, вам необходимо добавить секцию [api], содержащую имя его хоста, в файл config.ini.

    Дополнительная информация о параметре HostName доступна в другом месте этой главы. Также см. Раздел 25.4.1, «Быстрая настройка теста NDB кластера» для примеров конфигурации, использующих HostName с узлами API.

  • Любой клиент ndb_mgm

    Это означает, что любой клиент управления кластером, которому предоставлены имя хоста (или IP-адрес) и порт сервера управления (если это не стандартный порт), может подключиться к кластеру и выполнить любую команду клиента управления. Это включает команды, такие как ALL STOP и SHUTDOWN.

По этим причинам необходимо защитить кластер на сетевом уровне. Наиболее безопасная сетевая конфигурация для кластера — это изоляция соединений между узлами кластера от других сетевых коммуникаций. Это можно сделать несколькими способами:

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

    Вот пример настройки NDB кластера, использующего такую физически изолированную сеть:

    Рисунок 25.7 NDB кластер с аппаратным файрволом

    Content is described in the surrounding text.

    В этой настройке две сети: одна частная (сплошная рамка) для серверов управления кластером и узлов данных, и одна публичная (пунктирная рамка), где находятся узлы SQL. (Мы показываем подключение узлов управления и данных с помощью коммутатора Gigabit Ethernet, так как это обеспечивает наилучшую производительность.) Обе сети защищены от внешнего доступа аппаратным файрволом, иногда также известным как сетевой файрвол.

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

    Важно

    С точки зрения потенциальных уязвимостей безопасности, узел SQL ничем не отличается от любого другого сервера MySQL. См. Раздел 8.1.3, «Защита MySQL от атак» для описания методов, которые можно использовать для защиты серверов MySQL.

  2. Использование одного или нескольких программных файрволов (также известных как файрволы на основе хоста) для управления тем, какие пакеты проходят в кластер из частей сети, которым нет необходимости в доступе к нему. В этом типе настройки программный файрвол должен быть установлен на каждом хосте в кластере, который может быть доступен извне локальной сети.

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

    Настройка сети такого типа для NDB кластера показана здесь:

    Рисунок 25.8 NDB кластер с программными файрволами

    Content is described in the surrounding text.

    Использование этой конфигурации сети означает, что есть две зоны узлов NDB кластера. Каждый узел кластера должен иметь возможность обмениваться данными со всеми другими машинами в кластере, но только хосты, на которых работают узлы SQL (пунктирная рамка), могут иметь контакт с внешним миром, в то время как хосты, содержащие узлы данных и управления (сплошная рамка), должны быть изолированы от машин, которые не являются частью кластера. Приложения, использующие кластер, и пользователи этих приложений не должны иметь прямого доступа к хостам управления и узлам данных.

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

    Таблица 25.40 Типы узлов в конфигурации кластера с файрволами на основе хоста

    Таблица 25.40 Типы узлов в конфигурации кластера с файрволами на основе хоста
    Тип узла Разрешенный трафик
    SQL или API узел
    • Происходит с IP-адреса узла управления или данных (используя любой TCP или UDP порт).

    • Происходит из сети, в которой находится кластер, и идет на порт, используемый вашим приложением.

    Узел данных или Узел управления
    • Происходит с IP-адреса узла управления или данных (используя любой TCP или UDP порт).

    • Происходит с IP-адреса узла SQL или API.


    Любой трафик, не показанный в таблице для данного типа узла, должен быть заблокирован.

    Конкретные методы настройки файрвола зависят от конкретного приложения и выходят за рамки этого руководства. iptables — очень распространенное и надежное приложение файрвола, которое часто используется с APF для упрощения настройки. В случае реализации настройки сети NDB кластера такого типа или типа «смешанной» (как обсуждается в следующем пункте), необходимо (и нужно) обратиться к документации используемого вами программного обеспечения файрвола.

  3. Также можно использовать комбинацию первых двух методов, применяя и аппаратные, и программные средства защиты кластера — то есть, использовать и сетевые, и файрволы на основе хостов. Это находится между первыми двумя схемами по уровню безопасности и стоимости.

    Возможная сетевая реализация NDB кластера с комбинированными аппаратными и программными файрволами показана здесь:

    Рисунок 25.9 NDB кластер с комбинированными аппаратными и программными файрволами

    Content is described in the surrounding text.

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

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

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

END_OF_DOCUMENT_MARKER
Примечание

Если вы хотите администрировать кластер NDB удалённо (то есть, извне локальной сети), рекомендуется использовать ssh или другую защищённую оболочку входа, чтобы получить доступ к хосту узла SQL. С этого хоста вы можете запустить клиент управления, чтобы безопасно получить доступ к серверу управления, находясь внутри локальной сети кластера.

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

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/mysql-cluster-security-networking-issues.html

Spec-Zone.ru

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