Drošs savienojums ar datubāzi
Pārskats
Šī sadaļa sniedz Zabbix iestatīšanas soļus un konfigurācijas piemērus drošiem TLS savienojumiem starp:
| Database | Zabbix components |
|---|---|
| MySQL | Zabbix lietotāja saskarne, Zabbix serveris, Zabbix starpniekserveris |
| PostgreSQL | Zabbix lietotāja saskarne, Zabbix serveris, Zabbix starpniekserveris |
Lai iestatītu savienojuma šifrēšanu DBMS ietvaros, skatiet oficiālo piegādātāja dokumentāciju, lai iegūtu detalizētu informāciju:
- MySQL: avota un replikas replikācijas datubāzes serveri.
- MySQL: grupas replikācijas u. c. datubāzes serveri.
- PostgreSQL šifrēšanas opcijas.
Visi piemēri ir balstīti uz MySQL CE (8.0) un PgSQL (13) GA laidieniem, kas pieejami oficiālajās repozitorijās, izmantojot CentOS 8.
Prasības
Lai iestatītu šifrēšanu, ir nepieciešams:
- Izstrādātāja atbalstīta operētājsistēma ar OpenSSL >=1.1.X vai alternatīvu.
Ieteicams izvairīties no operētājsistēmām, kurām ir beidzies atbalsta termiņš, īpaši jaunu instalāciju gadījumā
- Datu bāzes dzinējs (RDBMS), kas ir instalēts un uzturēts no izstrādātāja nodrošinātās oficiālās repozitorijas. Operētājsistēmas bieži tiek piegādātas ar novecojušām datu bāzes programmatūras versijām, kurām šifrēšanas atbalsts nav ieviests, piemēram, uz RHEL 7 balstītas sistēmas un PostgreSQL 9.2, MariaDB 5.5 bez šifrēšanas atbalsta.
Terminoloģija
Šīs opcijas iestatīšana uzliek par pienākumu izmantot TLS savienojumu ar datubāzi no Zabbix servera/starpniekservera un lietotāja saskarnes uz datubāzi:
required- izveidot savienojumu, izmantojot TLS kā transporta režīmu bez identitātes pārbaudēmverify_ca- izveidot savienojumu, izmantojot TLS un pārbaudīt sertifikātuverify_full- izveidot savienojumu, izmantojot TLS, pārbaudīt sertifikātu un pārbaudīt, ka datubāzes identitāte (CN), kas norādīta ar DBHost, atbilst tās sertifikātam
Zabbix konfigurācija
Lietotāja saskarne uz datubāzi
Drošu savienojumu ar datubāzi var konfigurēt lietotāja saskarnes instalēšanas laikā:
- Atzīmējiet izvēles rūtiņu Database TLS encryption sadaļā Configure DB connection, lai iespējotu transporta šifrēšanu.
- Atzīmējiet izvēles rūtiņu Verify database certificate, kas parādās, kad ir atzīmēts lauks TLS encryption, lai iespējotu šifrēšanu ar sertifikātiem.
MySQL gadījumā izvēles rūtiņa Database TLS encryption ir atspējota, ja Database host ir iestatīts uz localhost, jo savienojumu, kas izmanto socket failu (Unix) vai koplietojamo atmiņu (Windows), nevar šifrēt.
PostgreSQL gadījumā izvēles rūtiņa TLS encryption ir atspējota, ja lauka Database host vērtība sākas ar slīpsvītru vai lauks ir tukšs.
TLS šifrēšanas sertifikātu režīmā kļūst pieejami šādi parametri (ja ir atzīmētas abas izvēles rūtiņas):
| Parameter | Description |
|---|---|
| Database TLS CA file | Norādiet pilnu ceļu uz derīgu TLS sertifikātu izdevējas iestādes (CA) failu. |
| Database TLS key file | Norādiet pilnu ceļu uz derīgu TLS atslēgas failu. |
| Database TLS certificate file | Norādiet pilnu ceļu uz derīgu TLS sertifikāta failu. |
| Database host verification | Atzīmējiet šo izvēles rūtiņu, lai aktivizētu host pārbaudi. Atspējots MYSQL, jo PHP MySQL bibliotēka neļauj izlaist vienaudža sertifikāta validācijas soli. |
| Database TLS cipher list | Norādiet pielāgotu derīgo šifru sarakstu. Šifru saraksta formātam jāatbilst OpenSSL standartam. Pieejams tikai MySQL. |
TLS parametriem jānorāda derīgi faili. Ja tie norāda uz neesošiem vai nederīgiem failiem, tas izraisīs autorizācijas kļūdu.
Ja sertifikātu faili ir rakstāmi, lietotāja saskarne ģenerē brīdinājumu System information pārskatā: "TLS certificate files must be read-only." (tiek parādīts tikai tad, ja PHP lietotājs ir sertifikāta īpašnieks).
Ar paroli aizsargāti sertifikāti netiek atbalstīti.
Lietošanas gadījumi
Zabbix lietotāja saskarne izmanto GUI saskarni, lai definētu iespējamās opcijas: required,
verify_ca, verify_full. Instalēšanas vedņa solī Configure DB connections norādiet nepieciešamās opcijas. Šīs opcijas tiek kartētas uz konfigurācijas failu (zabbix.conf.php) šādi:
| 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'] = '';... |
Atzīmējiet Database TLS encryption Neatzīmējiet Verify database certificate |
Iespējot required režīmu. |
![]() |
...$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. Atzīmējiet Database TLS encryption un Verify database certificate 2. Norādiet ceļu uz Database TLS CA file |
Iespējot verify_ca režīmu. |
![]() |
... // 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. Atzīmējiet Database TLS encryption un Verify database certificate 2. Norādiet ceļu uz Database TLS key file 3. Norādiet ceļu uz Database TLS CA file 4. Norādiet ceļu uz Database TLS certificate file 5. Norādiet Database TLS cipher list (neobligāti) |
MySQL gadījumā iespējot verify_full režīmu. |
![]() |
...$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. Atzīmējiet Database TLS encryption un Verify database certificate 2. Norādiet ceļu uz Database TLS key file 3. Norādiet ceļu uz Database TLS CA file 4. Norādiet ceļu uz Database TLS certificate file 5. Atzīmējiet Database host verification |
PostgreSQL gadījumā iespējot verify_full režīmu. |
Skatīt arī: Encryption configuration examples for MySQL, Encryption configuration examples for PostgreSQL.
Zabbix servera/starpniekservera konfigurācija
Drošus savienojumus ar datubāzi var konfigurēt, izmantojot attiecīgos parametrus Zabbix servera un/vai starpniekservera konfigurācijas failā.
| Configuration | Result |
|---|---|
| None | Savienojums ar datubāzi bez šifrēšanas. |
1. Iestatiet DBTLSConnect=required |
Serveris/starpniekserveris izveido TLS savienojumu ar datubāzi. Nešifrēts savienojums nav atļauts. |
1. Iestatiet DBTLSConnect=verify_ca2. Iestatiet DBTLSCAFile - norādiet TLS sertifikātu izdevējinstanču failu |
Serveris/starpniekserveris izveido TLS savienojumu ar datubāzi pēc datubāzes sertifikāta pārbaudes. |
1. Iestatiet DBTLSConnect=verify_full2. Iestatiet DBTLSCAFile - norādiet TLS sertifikātu izdevējinstanču failu |
Serveris/starpniekserveris izveido TLS savienojumu ar datubāzi pēc datubāzes sertifikāta un datubāzes hosta identitātes pārbaudes. |
1. Iestatiet DBTLSCAFile - norādiet TLS sertifikātu izdevējinstanču failu2. Iestatiet DBTLSCertFile - norādiet klienta publiskās atslēgas sertifikāta failu3. Iestatiet DBTLSKeyFile - norādiet klienta privātās atslēgas failu |
Serveris/starpniekserveris, veidojot savienojumu ar datubāzi, nodrošina klienta sertifikātu. |
1. Iestatiet DBTLSCipher - šifrēšanas algoritmu saraksts, ko klients atļauj savienojumiem, izmantojot TLS protokolus līdz TLS 1.2vai DBTLSCipher13 - šifrēšanas algoritmu saraksts, ko klients atļauj savienojumiem, izmantojot TLS 1.3 protokolu |
(MySQL) TLS savienojums tiek izveidots, izmantojot algoritmu no norādītā saraksta. (PostgreSQL) Šīs opcijas iestatīšana tiks uzskatīta par kļūdu. |



