Защита коммуникаций в кластере Galera
По умолчанию Galera Cluster реплицирует данные между узлами без шифрования. Это обычно приемлемо, когда узлы кластера работают на одном хосте или в сетях, где безопасность гарантируется другими средствами. Однако в случаях, когда узлы кластера находятся в разных сетях или в сети с высоким риском, отсутствие шифрования создает проблемы безопасности, поскольку злоумышленник может потенциально перехватывать трафик или получить полную копию данных, вызвав SST.
Для уменьшения этой проблемы Galera Cluster позволяет шифровать данные в процессе передачи при репликации между узлами кластера с помощью протокола Transport Layer Security (TLS). TLS раньше назывался Secure Socket Layer (SSL), но строго говоря, SSL является предшественником TLS, и в настоящее время этот вариант протокола считается небезопасным. В документации часто используется термин SSL, а для совместимости переменные сервера и статуса, связанные с TLS, по-прежнему используют префикс ssl_, но внутренне MariaDB поддерживает только его безопасные преемники.
Для обеспечения безопасности соединений между узлами кластера необходимо убедиться, что все серверы скомпилированы с поддержкой TLS. См. Обзор безопасных подключений, чтобы определить, был ли сервер скомпилирован с поддержкой TLS.
Для каждого узла кластера также необходим сертификат, закрытый ключ и цепочка сертификатов Удостоверяющего центра (CA) для проверки сертификата. Если вы хотите использовать самоподписанные сертификаты, созданные с помощью OpenSSL, ознакомьтесь с Созданием сертификатов с помощью OpenSSL для получения информации о создании таких сертификатов.
Защита трафика репликации Galera Cluster
Для включения TLS для трафика репликации Galera Cluster необходимо установить ряд wsrep_provider_options, таких как:
- Необходимо установить путь к сертификату сервера, задав
socket.ssl_certwsrep_provider_option. - Необходимо установить путь к закрытому ключу сервера, задав
socket.ssl_keywsrep_provider_option. - Необходимо установить путь к цепочке сертификатов Удостоверяющего центра (CA), которые могут проверить сертификат сервера, задав
socket.ssl_cawsrep_provider_option. - Если вы хотите ограничить сервер определенными шифрами, вам также необходимо установить
socket.ssl_cipherwsrep_provider_option.
Также рекомендуется установить стандартные системные переменные MariaDB Server, связанные с TLS, чтобы TLS был включен и для обычных клиентских подключений. См. Обеспечение безопасности подключений для клиента и сервера для получения информации об этом.
Например, чтобы установить эти переменные для сервера, добавьте системные переменные в соответствующую группу опций сервера группу опций в файле опций:
[mariadb] ... ssl_cert = /etc/my.cnf.d/certificates/server-cert.pem ssl_key = /etc/my.cnf.d/certificates/server-key.pem ssl_ca = /etc/my.cnf.d/certificates/ca.pem wsrep_provider_options="socket.ssl_cert=/etc/my.cnf.d/certificates/server-cert.pem;socket.ssl_key=/etc/my.cnf.d/certificates/server-key.pem;socket.ssl_ca=/etc/my.cnf.d/certificates/ca.pem"
Затем перезапустите сервер, чтобы изменения вступили в силу.
Установив как системные переменные TLS MariaDB Server, так и wsrep_provider_options Galera Cluster, сервер сможет защитить как внешние клиентские подключения, так и трафик репликации Galera Cluster.
Защита переносов моментальных снимков состояния
Метод, который вы бы использовали для включения TLS для переносов моментальных снимков состояния (SST), зависел бы от значения wsrep_sst_method.
mariabackup
См. Метод SST mariabackup: TLS для получения дополнительной информации.
xtrabackup-v2
См. Метод SST xtrabackup-v2: TLS для получения дополнительной информации.
mysqldump
Этот метод SST просто использует утилиту mariadb-dump (ранее mysqldump), поэтому TLS будет включен, следуя руководству по Обеспечению безопасности подключений для клиента и сервера: Включение TLS для MariaDB клиентов
rsync
Этот метод SST поддерживает шифрование в процессе передачи через stunnel. См. Введение в переносы моментальных снимков состояния (SST): rsync для получения дополнительной информации.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/securing-communications-in-galera-cluster/