5 Drošs savienojums ar datubāzi
Pārskats
Šajā sadaļā ir sniegti Zabbix iestatīšanas soļi un konfigurācijas piemēri drošiem TLS savienojumiem starp:
| Datubāze | Zabbix komponenti |
|---|---|
| MySQL | Zabbix lietotāja saskarne, Zabbix serveris, Zabbix starpniekserveris |
| PostgreSQL | Zabbix lietotāja saskarne, Zabbix serveris, Zabbix starpniekserveris |
Lai iestatītu savienojuma šifrēšanu DBVS ietvaros, skatiet oficiālo piegādātāja dokumentāciju, lai iegūtu sīkāku informāciju:
- MySQL: avota un replikas replikācijas datubāzu serveri.
- MySQL: grupu replikācijas u.c. datubāzu serveri.
- PostgreSQL šifrēšanas iespējas.
Visi piemēri ir balstīti uz MySQL CE (8.0) un PgSQL (13) GA laidieniem, kas pieejami oficiālajās repozitorijās un izmanto 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, kuru dzīves cikls ir beidzies, īpaši jaunu instalāciju gadījumā
- Datu bāzes dzinis (RDBMS), kas ir instalēts un uzturēts no oficiālās repozitorija, ko nodrošina izstrādātājs. Operētājsistēmas bieži tiek piegādātas ar novecojušām datubāzu 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
Iestatot šo opciju, tiek piespiests 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, vai datubāzes identitāte (CN), kas norādīta 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 solī Configure DB connection, lai iespējotu pārraides š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 ligzdas failu (Unix sistēmās) vai koplietojamo atmiņu
(Windows sistēmās), 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.
Tālāk norādītie parametri kļūst pieejami TLS šifrēšanas režīmā ar sertifikātiem (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ācijas 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 hosta pārbaudi. Atspējots MYSQL gadījumā, jo PHP MySQL bibliotēka neļauj izlaist vienādranga sertifikāta validācijas soli. |
| Database TLS cipher list | Norādiet pielāgotu derīgu šifru sarakstu. Šifru saraksta formātam jāatbilst OpenSSL standartam. Pieejams tikai MySQL. |
TLS parametriem jānorāda uz derīgiem failiem. Ja tie
norāda uz neeksistējoš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
atskaitē System
information,
ka "TLS certificate files must be read-only." (tiek parādīts tikai tad,
ja PHP lietotājs ir sertifikāta īpašnieks).
Ar parolēm 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 solī Configure DB connections. Šīs opcijas tiek attēlotas
konfigurācijas failā (zabbix.conf.php) šādi:
| GUI iestatījumi | Konfigurācijas fails | Apraksts | Rezultāts |
|---|---|---|---|
![]() |
... // Izmanto TLS savienojumam. $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 Atstājiet Verify database certificate neatzīmētu |
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 ceļu uz Database TLS CA file |
Iespējo verify_ca režīmu. |
![]() |
... // Izmanto TLS savienojumam ar stingri noteiktu Cipher sarakstu. $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: ... // Izmanto TLS savienojumam bez definēta Cipher saraksta - to izvēlas MySQL serveris $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) |
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 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 |
Iespējo verify_full režīmu PostgreSQL. |
Skatiet arī: Šifrēšanas konfigurācijas piemēri MySQL, Šifrēšanas konfigurācijas piemēri PostgreSQL.
Zabbix servera/starpniekservera konfigurācija
Drošus savienojumus ar datubāzi var konfigurēt ar attiecīgajiem parametriem Zabbix servera un/vai starpniekservera konfigurācijas failā.
| Konfigurācija | Rezultāts |
|---|---|
| Nav | 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ācijas 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 sertifikācijas iestādes 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ācijas 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. |
1. Iestatiet DBTLSCipher - šifrēšanas šifru saraksts, ko klients atļauj savienojumiem, izmantojot TLS protokolus līdz TLS 1.2vai DBTLSCipher13 - šifrēšanas šifru saraksts, ko klients atļauj savienojumiem, izmantojot TLS 1.3 protokolu |
(MySQL) TLS savienojums tiek izveidots, izmantojot šifru no norādītā saraksta. (PostgreSQL) Šīs opcijas iestatīšana tiks uzskatīta par kļūdu. |



