5. Безопасные соединения с базой данных
Обзор
Этот раздел описывает шаги по настройке Zabbix и примеры конфигурации для безопасных соединений TLS между:
| База данных | Компоненты Zabbix |
|---|---|
| MySQL | Веб-интерфейс Zabbix, Zabbix сервер, Zabbix прокси |
| PostgreSQL | Веб-интерфейс Zabbix, Zabbix сервер, Zabbix прокси |
За подробностями настроек шифрования соединений в СУБД, обратитесь к официальной документации вендора ([en]):
- MySQL: соединения между исходным сервером базы данных и репликой.
- MySQL: групповая репликация серверов баз данных и т.п.
- PostgreSQL: опции шифрования.
Все примеры базируются на выпусках GA release MySQL CE (8.0) и PgSQL (13), доступных через официальные репозитории, используя CentOS 8.
Требования
Для настройки шифрования требуется следующее:
- Поддерживаемая разработчиками операционная система с OpenSSL >=1.1.X или альтернатива.
Рекомендуется избегать ОС в статусе end-of-life, особенно в случае новых инсталляций
- Механизм базы данных (РСУБД), установленный и поддерживаемый из официального репозитория, предоставленного разработчиком. Операционные системы нередко поставляются с устаревшими версиями программного обеспечения баз данных, в которых поддержка шифрования не реализована; например, системы на базе RHEL 7 и PostgreSQL 9.2, MariaDB 5.5 без поддержки шифрования.
Терминология
Выставление этой опции принуждает использовать TLS соединения к базе данных от Zabbix сервера/прокси и от веб-интерфейса к базе данных:
- required — подключаться, используя TLS как транспортный режим без проверок идентичности;
- verify_ca — подключаться, используя TLS и проверять сертификат;
- verify_full — подключаться, используя TLS, проверять сертификат и проверять, что идентифкация базы данных (CN), указанная в DBHost, соответствует своему сертификату;
Настройка Zabbix
Веб-интерфейс и база данных
Защищенное подключение к базе данных можно настроить во время установки веб-интерфейса:
- Установите флажок Шифрование TLS для базы данных на шаге Настройка подключения к базе данных, чтобы включить шифрование при передаче данных.
- Установите флажок Проверять сертификат базы данных, который появляется после установки флажка Шифрование TLS, чтобы включить шифрование с использованием сертификатов.
Для MySQL флажок Шифрование TLS для базы данных отключен, если в поле Узел сети базы данных указано значение localhost, поскольку подключение с использованием файла сокета (в Unix) или общей памяти (в Windows) невозможно зашифровать.
Для PostgreSQL флажок Шифрование TLS отключен, если значение поля Узел сети базы данных начинается с косой черты или поле пусто.
В режиме шифрования TLS с сертификатами становятся доступны следующие параметры (если установлены оба флажка):
| Параметр | Описание |
|---|---|
| Файл центра сертификации TLS базы данных | Укажите полный путь к действительному файлу центра сертификации (CA) TLS. |
| Файл ключа TLS базы данных | Укажите полный путь к действительному файлу ключа TLS. |
| Файл сертификата TLS базы данных | Укажите полный путь к действительному файлу сертификата TLS. |
| Проверка узла сети базы данных | Установите этот флажок, чтобы активировать проверку узла сети. Отключено для MYSQL, поскольку библиотека PHP MySQL не позволяет пропустить этап проверки сертификата узла сети. |
| Список шифров TLS базы данных | Укажите пользовательский список действительных шифров. Формат списка шифров должен соответствовать стандарту OpenSSL. Доступно только для MySQL. |
Параметры TLS должны указывать на действительные файлы. Если они указывают на несуществующие или недействительные файлы, это приведет к ошибке авторизации.
Если файлы сертификатов доступны для записи, веб-интерфейс создает предупреждение в отчете Сведения о системе: «Файлы сертификатов TLS должны быть доступны только для чтения». (Отображается только в том случае, если пользователь PHP является владельцем сертификата.)
Сертификаты, защищенные паролями, не поддерживаются.
Сценарии использования
Веб-интерфейс Zabbix использует графический интерфейс, чтобы определить возможные опции: required,verify_ca, verify_full. Указывайте нужные опции на шаге Настройка соединения с базой данных помощника по установке. Эти опции соответствуют файлу конфигурации (zabbix.conf.php) следующим образом:
| Параметр интерфейса | Файл конфигурации | Описание | Результат |
|---|---|---|---|
![]() |
... // Used for TLS connection. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = ''; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
Отметьте TLS шифрование базы данных Оставьте Удостоверять сертификат базы данных неотмеченным |
Включает режим «required». |
![]() |
... $DB['ENCRYPTION'] = true;\\ $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem'; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
1. Отметьте TLS шифрование базы данных и Удостоверять сертификат базы данных 2. Укажите путь к Файл TLS CA базы данных |
Включает режим «verify_ca». |
![]() |
... // Used for TLS connection with strictly defined Cipher list. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<key_file_path>'; $DB['CERT_FILE'] = '<key_file_path>'; $DB['CA_FILE'] = '<key_file_path>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = '<cipher_list>'; ... Или: ... // Used for TLS connection without Cipher list defined - selected by MySQL server $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<key_file_path>'; $DB['CERT_FILE'] = '<key_file_path>'; $DB['CA_FILE'] = '<key_file_path>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = ''; ... |
1. Отметьте TLS шифрование базы данных и Удостоверять сертификат базы данных 2. Укажите путь к Файл TLS ключа базы данных 3. Укажите путь к Файл TLS CA базы данных 4. Укажите путь к Файл TLS сертификата базы данных 5. Укажите список шифров TLS (опционально) |
Включает режим «verify_full» для MySQL. |
![]() |
... $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<key_file_path>'; $DB['CERT_FILE'] = '<key_file_path>'; $DB['CA_FILE'] = '<key_file_path>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = ' '; ... |
1. Отметьте TLS шифрование базы данных и Удостоверять сертификат базы данных 2. Укажите путь к Файл TLS ключа базы данных 3. Укажите путь к Файл TLS CA базы данных 4. Укажите путь к Файл TLS сертификата базы данных 5. Отметьте Сверка хоста базы данных |
Включает режим «verify_full» для PostgreSQL. |
Смотрите также: Примеры настроек шифрования для MySQL, Примеры настроек шифрования для PostgreSQL.
Настройка Zabbix сервера/прокси
Безопасные подключения к базе данных могут быть настроены с помощью соответствующих параметров в файле конфигурации Zabbix сервера и/или прокси.
| Настройка | Результат |
|---|---|
| Отсутствует | Подключение к базе данных без шифрования. |
| 1. Установите DBTLSConnect=required | Сервер/прокси делает TLS подключение к базе данных. Нешифрованные подключения не разрешены. |
| 1. Установите DBTLSConnect=verify_ca 2. Установите DBTLSCAFile — укажите файл удостоверяющего центра (certificate authority, CA) TLS |
Сервер/прокси делает TLS подключение к базе данных после проверки сертификата базы данных. |
| 1. Установите DBTLSConnect=verify_full 2. Установите DBTLSCAFile — укажите файл удостоверяющего центра (certificate authority, CA) TLS |
Сервер/прокси делает TLS подключение к базе данных после проверки сертификата базы данных и идентичности хоста базы данных. |
| 1. Установите DBTLSCAFile — укажите файл удостоверяющего центра (certificate authority, CA) 2. Установите DBTLSCertFile — укажите файл сертификата открытого ключа (public key) клиента 3. Установите DBTLSKeyFile — укажите файл закрытого ключа (private key) клиента |
Сервер/прокси при подключении к базе данных предъявляет сертификат клиента. |
| 1. Установите DBTLSCipher — список шифров (алгоритмов шифрования), которые клиент разрешает при подключении с использованием протокола TLS до версии TLS 1.2 или DBTLSCipher13 — список шифров, которые клиент разрешает при подключении с использованием протокола TLS 1.3 |
(MySQL) TLS подключение выполняется, используя шифр из представленного списка. (PostgreSQL) Установка этой опции рассматривается как ошибка. |



