5 Безопасное подключение к базе данных
Обзор
В этом разделе приведены шаги по настройке Zabbix и примеры конфигурации для защищённых TLS-соединений между:
| База данных | Компоненты Zabbix |
|---|---|
| MySQL | веб-интерфейс Zabbix, сервер Zabbix, прокси Zabbix |
| PostgreSQL | веб-интерфейс Zabbix, сервер Zabbix, прокси Zabbix |
Чтобы настроить шифрование соединений в СУБД, подробную информацию см. в официальной документации поставщиков:
- MySQL: исходный сервер базы данных и сервер реплики.
- MySQL: групповая репликация и т. д. серверов баз данных.
- 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. Укажите необходимые параметры на шаге мастера
установки Configure DB connections. Эти параметры сопоставляются с
файлом конфигурации (zabbix.conf.php) следующим образом:
| Параметры GUI | Файл конфигурации | Описание | Результат |
|---|---|---|---|
![]() |
... // Используется для TLS-соединения. $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. |
![]() |
... // Используется для TLS-соединения со строго заданным списком шифров. $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>'; ... Или: ... // Используется для TLS-соединения без заданного списка шифров — выбирается сервером 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 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 сервера и/или прокси.
| Конфигурация | Результат |
|---|---|
| Нет | Подключение к базе данных без шифрования. |
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) Указание этого параметра будет считаться ошибкой. |



