[comment]: # translation:outdated

[comment]: # ({22b96536-5407a56a})
# 5. Безопасные соединения с базой данных

[comment]: # ({/22b96536-5407a56a})

[comment]: # ({b38f1bac-7cadd09e})
#### Обзор

Этот раздел описывает шаги по настройке Zabbix  и примеры конфигурации для безопасных соединений TLS между:

|База данных|Компоненты Zabbix|
|--------|-----------------|
|MySQL|Веб-интерфейс Zabbix, Zabbix сервер, Zabbix прокси|
|PostgreSQL|Веб-интерфейс Zabbix, Zabbix сервер, Zabbix прокси|

За подробностями настроек шифрования соединений в СУБД, обратитесь к официальной документации вендора (\[en\]):

-   [MySQL](https://dev.mysql.com/doc/refman/8.0/en/replication-encrypted-connections.html):
    соединения между исходным сервером базы данных и репликой.
-   [MySQL](https://dev.mysql.com/doc/refman/8.0/en/group-replication-security.html):
    групповая репликация серверов баз данных и т.п.
-   [PostgreSQL](https://www.postgresql.org/docs/current/encryption-options.html):
    опции шифрования.

Все примеры базируются на выпусках GA release MySQL CE (8.0) и PgSQL
(13), доступных через официальные репозитории, используя CentOS 8.

[comment]: # ({/b38f1bac-7cadd09e})

[comment]: # ({b7e9dcca-5af34b43})
##### Требования

Для настройки шифрования требуется следующее:

-   Поддерживаемая разработчиками операционная система с OpenSSL >=1.1.X или
    альтернатива.

::: noteclassic
Рекомендуется избегать ОС в статусе end-of-life,
особенно в случае новых инсталляций
:::

-   Механизм базы данных (РСУБД), установленный и поддерживаемый из официального
    репозитория, предоставленного разработчиком. Операционные системы нередко поставляются
    с устаревшими версиями программного обеспечения баз данных, в которых поддержка
    шифрования не реализована; например, системы на базе RHEL 7 и
    PostgreSQL 9.2, MariaDB 5.5 без поддержки шифрования.

[comment]: # ({/b7e9dcca-5af34b43})

[comment]: # ({53676bc9-9801ac5b})
##### Терминология

Выставление этой опции принуждает использовать TLS соединения к базе данных от 
Zabbix сервера/прокси и от веб-интерфейса к базе данных:

-   required — подключаться, используя TLS как транспортный режим без проверок идентичности;
-   verify\_ca — подключаться, используя TLS и проверять сертификат;
-   verify\_full — подключаться, используя TLS, проверять сертификат и проверять, что идентифкация базы данных (CN), указанная в DBHost, соответствует своему сертификату;

[comment]: # ({/53676bc9-9801ac5b})

[comment]: # ({84f30836-84f30836})
#### Настройка Zabbix

[comment]: # ({/84f30836-84f30836})

[comment]: # ({9a1ac113-b1071a8a})
##### Веб-интерфейс к базе данных

Безопасные подключения к базе данных могут быть настроены во время установки веб-интерфейса:

-   Отметьте флажок *TLS шифрование базы данных* на шаге [Настройка соединения с базой данных](/manual/installation/frontend#настройка-соединения-с-базой-данных),
    чтобы включить шифрование на транспортном уровне.
-   Отметьте флажок *Удостоверять сертификат базы данных* (который появляется при выборе опции
    *TLS шифрование базы данных*), чтобы разрешить шифрование с сертификатом.

::: noteclassic
Для MySQL флажок *TLS шифрование базы данных* отключён, если *Хост базы данных* выставлен в localhost, так как соединение, использующее сокет-файл (на Unix) или разделяемую память (на Windows), не может быть шифрованным.<br>
Для PostgreSQL флажок *TLS шифрование базы данных* отключён, если значение поля *Хост базы данных* начинается с косой черты или же пустое.

:::

В режиме TLS шифрования с сертификатом (если оба флажка отмечены) становятся доступными следующие параметры:

|Параметр|Описание|
|--|--------|
|*Файл TLS CA базы данных*|Укажите полный путь к корректному файлу удостоверяющего центра (certificate authority, CA) TLS.|
|*Файл TLS ключа базы данных*|Укажите полный путь к корректному файлу ключа TLS.|
|*Файл TLS сертификата базы данных*|Укажите полный путь к корректному файлу сертификата TLS.|
|*Сверка хоста базы данных*|Отметьте этот флажок, чтобы активировать сверку хоста.<br>Отключено для MYSQL, поскольку библиотека PHP MySQL не разрешает пропускать шаг валидации сертификата узла.|
|*Список шифров TLS базы данных*|Укажите пользовательский список допустимых шифров. Формат списка шифров должен отвечать стандарту OpenSSL.<br>Доступно только для MySQL.|

::: noteimportant
Параметры TLS должны указывать на корректные файлы. Если они указывают на несуществующие или некорректные файлы, это приведёт к ошибке авторизации.<br>
Если файлы сертификатов доступны на запись, веб-интерфейс генерирует предупреждение в отчёте 
[Информация о системе](/manual/web_interface/frontend_sections/reports/status_of_zabbix) о том, что "TLS certificate files must be read-only" (отображается только если пользователь PHP является владельцем сертификата).

Защищённые паролем сертификаты не поддерживаются. 
:::

[comment]: # ({/9a1ac113-b1071a8a})

[comment]: # ({18fae872-d4fd87a2})
##### Сценарии использования

Веб-интерфейс Zabbix использует графический интерфейс, чтобы определить возможные опции: `required`,`verify_ca`, `verify_full`. Указывайте нужные опции на шаге *Настройка соединения с базой данных* помощника по установке. Эти опции соответствуют файлу конфигурации (zabbix.conf.php) следующим образом:

|Параметр интерфейса|Файл конфигурации|Описание|Результат|
|----|----|----|----|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_transport.png)|...<br>// Used for TLS connection.<br>$DB\['ENCRYPTION'\] = true;<br>$DB\['KEY\_FILE'\] = '';<br>$DB\['CERT\_FILE'\] = '';<br>$DB\['CA\_FILE'\] = '';<br>$DB\['VERIFY\_HOST'\] = false;<br>$DB\['CIPHER\_LIST'\] = '';<br>...|Отметьте *TLS шифрование базы данных*<br>Оставьте *Удостоверять сертификат базы данных* неотмеченным|Включает режим «required».|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_verify_ca.png)|...<br>$DB\['ENCRYPTION'\] = true;\\\\ $DB\['KEY\_FILE'\] = '';<br>$DB\['CERT\_FILE'\] = '';<br>$DB\['CA\_FILE'\] = '/etc/ssl/mysql/ca.pem';<br>$DB\['VERIFY\_HOST'\] = false;<br>$DB\['CIPHER\_LIST'\] = '';<br>...|1\. Отметьте *TLS шифрование базы данных* и *Удостоверять сертификат базы данных*<br>2. Укажите путь к *Файл TLS CA базы данных*|Включает режим «verify\_ca».|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_verify_full1.png)|...<br>// Used for TLS connection with strictly defined Cipher list.<br>$DB\['ENCRYPTION'\] = true;<br>$DB\['KEY\_FILE'\] = '<key\_file\_path>';<br>$DB\['CERT\_FILE'\] = '<key\_file\_path>';<br>$DB\['CA\_FILE'\] = '<key\_file\_path>';<br>$DB\['VERIFY\_HOST'\] = true;<br>$DB\['CIPHER\_LIST'\] = '<cipher\_list>';<br>...<br><br>Или:<br><br>...<br>// Used for TLS connection without Cipher list defined - selected by MySQL server<br>$DB\['ENCRYPTION'\] = true;<br>$DB\['KEY\_FILE'\] = '<key\_file\_path>';<br>$DB\['CERT\_FILE'\] = '<key\_file\_path>';<br>$DB\['CA\_FILE'\] = '<key\_file\_path>';<br>$DB\['VERIFY\_HOST'\] = true;<br>$DB\['CIPHER\_LIST'\] = '';<br>...|1\. Отметьте *TLS шифрование базы данных* и *Удостоверять сертификат базы данных*<br>2. Укажите путь к *Файл TLS ключа базы данных*<br>3. Укажите путь к *Файл TLS CA базы данных*<br>4. Укажите путь к *Файл TLS сертификата базы данных*<br>5. Укажите список шифров TLS (опционально)|Включает режим «verify\_full» для MySQL.|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_verify_full2.png)|...<br>$DB\['ENCRYPTION'\] = true;<br>$DB\['KEY\_FILE'\] = '<key\_file\_path>';<br>$DB\['CERT\_FILE'\] = '<key\_file\_path>';<br>$DB\['CA\_FILE'\] = '<key\_file\_path>';<br>$DB\['VERIFY\_HOST'\] = true;<br>$DB\['CIPHER\_LIST'\] = ' ';<br>...<br>|1\. Отметьте *TLS шифрование базы данных* и *Удостоверять сертификат базы данных*<br>2. Укажите путь к *Файл TLS ключа базы данных*<br>3. Укажите путь к *Файл TLS CA базы данных*<br>4. Укажите путь к *Файл TLS сертификата базы данных*<br>5. Отметьте *Сверка хоста базы данных*|Включает режим «verify\_full» для PostgreSQL.|

**Смотрите также:** [Примеры настроек шифрования для
MySQL](/manual/appendix/install/db_encrypt/mysql), [Примеры настроек шифрования для
PostgreSQL](/manual/appendix/install/db_encrypt/postgres).

[comment]: # ({/18fae872-d4fd87a2})

[comment]: # ({b504a368-9cfb91d1})
#### Настройка Zabbix сервера/прокси

Безопасные подключения к базе данных могут быть настроены с помощью соответствующих параметров в файле конфигурации Zabbix [сервера](/manual/appendix/config/zabbix_server) и/или
[прокси](/manual/appendix/config/zabbix_proxy).

|Настройка|Результат|
|--|--|
|Отсутствует|Подключение к базе данных без шифрования.|
|1\. Установите DBTLSConnect=required|Сервер/прокси делает TLS подключение к базе данных. Нешифрованные подключения не разрешены.|
|1\. Установите DBTLSConnect=verify\_ca<br>2. Установите DBTLSCAFile — укажите файл удостоверяющего центра (certificate authority, CA) TLS|Сервер/прокси делает TLS подключение к базе данных после проверки сертификата базы данных.|
|1\. Установите DBTLSConnect=verify\_full<br>2. Установите DBTLSCAFile — укажите файл удостоверяющего центра (certificate authority, CA) TLS|Сервер/прокси делает TLS подключение к базе данных после проверки сертификата базы данных и идентичности хоста базы данных.|
|1\. Установите DBTLSCAFile — укажите файл удостоверяющего центра (certificate authority, CA)<br>2. Установите DBTLSCertFile — укажите файл сертификата открытого ключа (public key) клиента<br>3. Установите DBTLSKeyFile — укажите файл закрытого ключа (private key) клиента|Сервер/прокси  при подключении к базе данных предъявляет сертификат клиента.|
|1\. Установите DBTLSCipher — список шифров (алгоритмов шифрования), которые клиент разрешает при подключении с использованием протокола TLS до версии TLS 1.2<br><br>или DBTLSCipher13 — список шифров, которые клиент разрешает при подключении с использованием протокола TLS 1.3|(MySQL) TLS подключение выполняется, используя шифр из представленного списка.<br>(PostgreSQL) Установка этой опции рассматривается как ошибка.|

[comment]: # ({/b504a368-9cfb91d1})
