Безопасное подключение к базе данных
Обзор
В этом разделе приведены шаги настройки Zabbix и примеры конфигурации для защищенных TLS-соединений между:
| Database | Zabbix components |
|---|---|
| MySQL | веб-интерфейс Zabbix, сервер Zabbix, прокси Zabbix |
| PostgreSQL | веб-интерфейс Zabbix, сервер Zabbix, прокси Zabbix |
Чтобы настроить шифрование соединения в СУБД, см. официальную документацию поставщика для получения подробной информации:
- MySQL: серверы баз данных репликации source и replica.
- MySQL: серверы баз данных group replication и т. д.
- PostgreSQL параметры шифрования.
Все примеры основаны на GA-релизах MySQL CE (8.0) и PgSQL (13), доступных через официальные репозитории, с использованием CentOS 8.
Требования
Для настройки шифрования требуется следующее:
- Поддерживаемая разработчиком операционная система с OpenSSL >=1.1.X или альтернативой.
Рекомендуется избегать использования ОС в статусе end-of-life, особенно в случае новых установок
- Движок базы данных (RDBMS), установленный и поддерживаемый из официального репозитория, предоставляемого разработчиком. Операционные системы часто поставляются с устаревшими версиями программного обеспечения базы данных, для которых поддержка шифрования не реализована, например системы на базе RHEL 7 и PostgreSQL 9.2, MariaDB 5.5 без поддержки шифрования.
Терминология
Установка этой опции принудительно использует TLS-соединение с базой данных со стороны сервера/прокси Zabbix и веб-интерфейса при подключении к базе данных:
required- подключение с использованием TLS в качестве режима транспортировки без проверки идентичностиverify_ca- подключение с использованием TLS и проверка сертификатаverify_full- подключение с использованием TLS, проверка сертификата и проверка того, что идентичность базы данных (CN), указанная в DBHost, соответствует ее сертификату
Конфигурация Zabbix
Веб-интерфейс к базе данных
Безопасное соединение с базой данных можно настроить во время установки веб-интерфейса:
- Отметьте флажок Database TLS encryption на шаге Configure DB connection, чтобы включить шифрование транспортного уровня.
- Отметьте флажок Verify database certificate, который появляется, когда отмечено поле TLS encryption, чтобы включить шифрование с использованием сертификатов.
Для MySQL флажок Database TLS encryption недоступен, если для Database host задано значение localhost, поскольку соединение, использующее файл сокета (в Unix) или общую память (в Windows), не может быть зашифровано.
Для PostgreSQL флажок TLS encryption недоступен, если значение поля Database host начинается с косой черты или поле пустое.
Следующие параметры становятся доступны в режиме шифрования TLS с использованием сертификатов (если отмечены оба флажка):
| Parameter | Description |
|---|---|
| Database TLS CA file | Укажите полный путь к действительному файлу центра сертификации (CA) TLS. |
| Database TLS key file | Укажите полный путь к действительному файлу ключа TLS. |
| Database TLS certificate file | Укажите полный путь к действительному файлу сертификата TLS. |
| Database host verification | Отметьте этот флажок, чтобы включить проверку узла сети. Недоступно для MYSQL, поскольку библиотека PHP MySQL не позволяет пропустить этап проверки сертификата узла. |
| Database TLS cipher list | Укажите пользовательский список допустимых шифров. Формат списка шифров должен соответствовать стандарту OpenSSL. Доступно только для MySQL. |
Параметры TLS должны указывать на действительные файлы. Если они указывают на несуществующие или недействительные файлы, это приведет к ошибке авторизации.
Если файлы сертификатов доступны для записи, веб-интерфейс генерирует предупреждение в отчете System information о том, что "TLS certificate files must be read-only." (отображается только если пользователь PHP является владельцем сертификата).
Сертификаты, защищенные паролями, не поддерживаются.
Сценарии использования
Веб-интерфейс Zabbix использует GUI для задания возможных параметров: 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. Установите DBTLSConnect=required |
Сервер/прокси устанавливают TLS-подключение к базе данных. Незашифрованное подключение не допускается. |
1. Установите DBTLSConnect=verify_ca2. Установите DBTLSCAFile - укажите файл центра сертификации TLS |
Сервер/прокси устанавливают TLS-подключение к базе данных после проверки сертификата базы данных. |
1. Установите DBTLSConnect=verify_full2. Установите DBTLSCAFile - укажите файл центра сертификации TLS |
Сервер/прокси устанавливают TLS-подключение к базе данных после проверки сертификата базы данных и идентичности узла сети базы данных. |
1. Установите DBTLSCAFile - укажите файл центра сертификации TLS2. Установите DBTLSCertFile - укажите файл сертификата открытого ключа клиента3. Установите DBTLSKeyFile - укажите файл закрытого ключа клиента |
Сервер/прокси предоставляют клиентский сертификат при подключении к базе данных. |
1. Установите DBTLSCipher - список алгоритмов шифрования, которые клиент разрешает для подключений с использованием протоколов TLS до TLS 1.2или DBTLSCipher13 - список алгоритмов шифрования, которые клиент разрешает для подключений с использованием протокола TLS 1.3 |
(MySQL) TLS-подключение выполняется с использованием алгоритма шифрования из указанного списка. (PostgreSQL) Установка этой опции будет считаться ошибкой. |



