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 базы данных | Укажите полный путь к корректному файлу удостоверяющего центра (certificate authority, CA) TLS. |
| Файл TLS ключа базы данных | Укажите полный путь к корректному файлу ключа TLS. |
| Файл TLS сертификата базы данных | Укажите полный путь к корректному файлу сертификата TLS. |
| Сверка хоста базы данных | Отметьте этот флажок, чтобы активировать сверку хоста. Отключено для MYSQL, поскольку библиотека PHP MySQL не разрешает пропускать шаг валидации сертификата узла. |
| Список шифров TLS базы данных | Укажите пользовательский список допустимых шифров. Формат списка шифров должен отвечать стандарту OpenSSL. Доступно только для MySQL. |
Параметры TLS должны указывать на корректные файлы. Если они указывают на несуществующие или некорректные файлы, это приведёт к ошибке авторизации.
Если файлы сертификатов доступны на запись, веб-интерфейс генерирует предупреждение в отчёте
Информация о системе о том, что "TLS certificate files must be read-only" (отображается только если пользователь PHP является владельцем сертификата).
Защищённые паролем сертификаты не поддерживаются.
Сценарии использования
Веб-интерфейс Zabbix использует графический интерфейс для задания возможных параметров: required,
verify_ca, verify_full. Укажите необходимые параметры на шаге мастера установки Configure DB connections. Эти параметры сопоставляются с
файлом конфигурации (zabbix.conf.php) следующим образом:
| GUI settings | Configuration file | Description | Result |
|---|---|---|---|
![]() |
... // Used for TLS connection. $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '';$DB['CERT_FILE'] = '';$DB['CA_FILE'] = '';$DB['VERIFY_HOST'] = false;$DB['CIPHER_LIST'] = '';... |
Отметьте Database TLS encryption Оставьте Verify database certificate неотмеченным |
Включить режим 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. Отметьте Database TLS encryption и Verify database certificate 2. Укажите путь к Database TLS CA file |
Включить режим 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>';... Or: ... // 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. Отметьте Database TLS encryption и Verify database certificate 2. Укажите путь к Database TLS key file 3. Укажите путь к Database TLS CA file 4. Укажите путь к Database TLS certificate file 5. Укажите Database TLS cipher list (необязательно) |
Включить режим 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. Отметьте Database TLS encryption и Verify database certificate 2. Укажите путь к Database TLS key file 3. Укажите путь к Database TLS CA file 4. Укажите путь к Database TLS certificate file 5. Отметьте Database host verification |
Включить режим verify_full для PostgreSQL. |
См. также: Примеры настройки шифрования для MySQL, Примеры настройки шифрования для PostgreSQL.
Конфигурация сервера/прокси Zabbix
Безопасные соединения с базой данных можно настроить с помощью соответствующих параметров в файле конфигурации Zabbix server и/или proxy.
| Configuration | Result |
|---|---|
| None | Соединение с базой данных без шифрования. |
1. Set DBTLSConnect=required |
Сервер/прокси устанавливают TLS-соединение с базой данных. Незашифрованное соединение не допускается. |
1. Set DBTLSConnect=verify_ca2. Set DBTLSCAFile - specify the TLS certificate authority file |
Сервер/прокси устанавливают TLS-соединение с базой данных после проверки сертификата базы данных. |
1. Set DBTLSConnect=verify_full2. Set DBTLSCAFile - specify TLS certificate authority file |
Сервер/прокси устанавливают TLS-соединение с базой данных после проверки сертификата базы данных и идентичности узла сети базы данных. |
1. Set DBTLSCAFile - specify the TLS certificate authority file2. Set DBTLSCertFile - specify the client public key certificate file3. Set DBTLSKeyFile - specify the client private key file |
Сервер/прокси предоставляют клиентский сертификат при подключении к базе данных. |
1. Set DBTLSCipher - the list of encryption ciphers that the client permits for connections using TLS protocols up to TLS 1.2or DBTLSCipher13 - the list of encryption ciphers that the client permits for connections using TLS 1.3 protocol |
(MySQL) TLS-соединение устанавливается с использованием шифра из указанного списка. (PostgreSQL) Указание этой опции будет считаться ошибкой. |



