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.
Norādiet nepieciešamās opcijas instalēšanas vedņa darbībā Configure DB connections.
Šīs opcijas tiek kartētas uz lietotāja saskarnes konfigurācijas failu (zabbix.conf.php) šādi:
| GUI iestatījumi | Konfigurācijas fails | Apraksts | Rezultāts |
|---|---|---|---|
![]() |
... // Used for TLS connection. $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '';$DB['CERT_FILE'] = '';$DB['CA_FILE'] = '';$DB['VERIFY_HOST'] = false;$DB['CIPHER_LIST'] = '';... |
1. Atzīmējiet Database TLS encryption 2. Neatzīmējiet Verify database certificate |
Iespējo 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 Database TLS CA file ceļu |
Iespējo 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>';... Vai: ... // 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 Database TLS key file ceļu 3. Norādiet Database TLS CA file ceļu 4. Norādiet Database TLS certificate file ceļu 5. Norādiet Database TLS cipher list (neobligāti) |
Iespējo verify_full režīmu 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. Atzīmējiet Database TLS encryption un Verify database certificate 2. Norādiet Database TLS key file ceļu 3. Norādiet Database TLS CA file ceļu 4. Norādiet Database TLS certificate file ceļu 5. Atzīmējiet Database host verification |
Iespējo verify_full režīmu PostgreSQL. |
Skatiet arī: MySQL šifrēšanas konfigurācijas piemēri, PostgreSQL šifrēšanas konfigurācijas piemēri.
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ā.
| Konfigurācija | Rezultāts |
|---|---|
| Nav | Savienojums ar datubāzi bez šifrēšanas. |
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 sertificēšanas iestādes 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 sertificēšanas iestādes failu |
Serveris/starpniekserveris izveido TLS savienojumu ar datubāzi pēc datubāzes sertifikāta un datubāzes resursdatora identitātes pārbaudes. |
1. Iestatiet DBTLSCAFile - norādiet TLS sertificēšanas iestādes 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. |
Iestatiet DBTLSCipher - šifrēšanas algoritmu sarakstu, ko klients atļauj savienojumiem, izmantojot TLS protokolus līdz TLS 1.2vai DBTLSCipher13 - šifrēšanas algoritmu sarakstu, 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. |



