Безопасное подключение к базе данных
Обзор
В этом разделе приведены шаги настройки 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 использует графический интерфейс для определения возможных параметров: 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'] = '';... |
1. Установите флажок Шифрование TLS для базы данных 2. Не устанавливайте флажок Проверять сертификат базы данных |
Включение режима 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 базы данных |
Включение режима 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 базы данных 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 базы данных 4. Укажите путь к файлу сертификата TLS базы данных 5. Установите флажок Проверка узла сети базы данных |
Включение режима verify_full для PostgreSQL. |
См. также: Примеры настройки шифрования для MySQL, Примеры настройки шифрования для PostgreSQL.
Конфигурация сервера/прокси Zabbix
Защищенные подключения к базе данных можно настроить с помощью соответствующих параметров в конфигурационном файле сервера Zabbix и/или прокси.
| Конфигурация | Результат |
|---|---|
| Не задано | Подключение к базе данных без шифрования. |
Задать DBTLSConnect=required |
Сервер/прокси устанавливает TLS-подключение к базе данных. Незашифрованное подключение не разрешено. |
1. Задать DBTLSConnect=verify_ca2. Задать DBTLSCAFile - указать файл центра сертификации TLS |
Сервер/прокси устанавливает TLS-подключение к базе данных после проверки сертификата базы данных. |
1. Задать DBTLSConnect=verify_full2. Задать DBTLSCAFile - указать файл центра сертификации TLS |
Сервер/прокси устанавливает TLS-подключение к базе данных после проверки сертификата базы данных и идентичности узла сети базы данных. |
1. Задать DBTLSCAFile - указать файл центра сертификации TLS2. Задать DBTLSCertFile - указать файл сертификата открытого ключа клиента3. Задать DBTLSKeyFile - указать файл закрытого ключа клиента |
Сервер/прокси предоставляет сертификат клиента при подключении к базе данных. |
Задать DBTLSCipher - список шифров шифрования, разрешенных клиентом для подключений с использованием протоколов TLS до TLS 1.2 включительноили DBTLSCipher13 - список шифров шифрования, разрешенных клиентом для подключений с использованием протокола TLS 1.3 |
(MySQL) TLS-подключение устанавливается с использованием шифра из указанного списка. (PostgreSQL) Задание этого параметра будет считаться ошибкой. |



