[comment]: # translation:outdated

[comment]: # ({22b96536-5407a56a})
# 5 Drošs savienojums ar datubāzi

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

[comment]: # ({b38f1bac-7cadd09e})
#### 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](https://dev.mysql.com/doc/refman/8.0/en/replication-encrypted-connections.html):
    avota un replikas replikācijas datubāzu serveri.
-   [MySQL](https://dev.mysql.com/doc/refman/8.0/en/group-replication-security.html):
    grupu replikācijas u.c. datubāzu serveri.
-   [PostgreSQL](https://www.postgresql.org/docs/current/encryption-options.html)
    š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.

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

[comment]: # ({b7e9dcca-5af34b43})
##### 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.

::: noteclassic
 Ieteicams izvairīties no operētājsistēmām, kuru dzīves cikls ir beidzies,
īpaši jaunu instalāciju gadījumā 
:::

-   Datubāzes dzinis (RDBMS), kas ir instalēts un uzturēts no oficiālā
    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.

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

[comment]: # ({53676bc9-9801ac5b})
##### 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ēm
-   `verify_ca` - izveidot savienojumu, izmantojot TLS, un pārbaudīt sertifikātu
-   `verify_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

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

[comment]: # ({84f30836-84f30836})
#### Zabbix konfigurācija

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

[comment]: # ({9a1ac113-b1071a8a})
##### 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](/manual/installation/frontend#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.

::: noteclassic
 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.<br>
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 režīmā ar sertifikātiem kļūst pieejami šādi parametri
(ja ir atzīmētas abas izvēles rūtiņas):

|Parametrs|Apraksts|
|--|--------|
|*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 verifikāciju.<br>Atspējots MYSQL gadījumā, jo PHP MySQL bibliotēka neļauj izlaist partnera 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.<br>Pieejams tikai MySQL.|

::: noteimportant
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.<br>
Ja sertifikātu faili ir rakstāmi, lietotāja saskarne ģenerē brīdinājumu atskaitē [System information](/manual/web_interface/frontend_sections/reports/status_of_zabbix), 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. 
:::

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

[comment]: # ({18fae872-d4fd87a2})
##### 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|
|----|----|----|----|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_transport.png)|...<br>// Izmanto TLS savienojumam.<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>...|Atzīmējiet *Database TLS encryption*<br>Atstājiet *Verify database certificate* neatzīmētu|Iespējo `required` režīmu.|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_verify_ca.png)|...<br>$DB\['ENCRYPTION'\] = true;<br>$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\. Atzīmējiet *Database TLS encryption* un *Verify database certificate*<br>2. Norādiet ceļu uz *Database TLS CA file*|Iespējo `verify_ca` režīmu.|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_verify_full1.png)|...<br>// Izmanto TLS savienojumam ar stingri noteiktu Cipher sarakstu.<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>Vai:<br><br>...<br>// Izmanto TLS savienojumam bez definēta Cipher saraksta - to izvēlas MySQL serveris<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\. Atzīmējiet *Database TLS encryption* un *Verify database certificate*<br>2. Norādiet ceļu uz *Database TLS key file*<br>3. Norādiet ceļu uz *Database TLS CA file*<br>4. Norādiet ceļu uz *Database TLS certificate file*<br>5. Norādiet *Database TLS cipher list* (neobligāti)|Iespējo `verify_full` režīmu 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\. Atzīmējiet *Database TLS encryption* un *Verify database certificate*<br>2. Norādiet ceļu uz *Database TLS key file*<br>3. Norādiet ceļu uz *Database TLS CA file*<br>4. Norādiet ceļu uz *Database TLS certificate file*<br>5. Atzīmējiet *Database host verification*|Iespējo `verify_full` režīmu PostgreSQL.|

**Skatiet arī:** [Šifrēšanas konfigurācijas piemēri
MySQL](/manual/appendix/install/db_encrypt/mysql), [Šifrēšanas
konfigurācijas piemēri
PostgreSQL](/manual/appendix/install/db_encrypt/postgres).

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

[comment]: # ({b504a368-9cfb91d1})
#### Zabbix servera/starpniekservera konfigurācija

Drošus savienojumus ar datubāzi var konfigurēt ar attiecīgajiem
parametriem Zabbix [servera](/manual/appendix/config/zabbix_server)
un/vai [starpniekservera](/manual/appendix/config/zabbix_proxy) 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_ca`<br>2. 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_full`<br>2. 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 failu<br>2. Iestatiet `DBTLSCertFile` - norādiet klienta publiskās atslēgas sertifikāta failu<br>3. 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.2<br><br>vai `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.<br>(PostgreSQL) Šīs opcijas iestatīšana tiks uzskatīta par kļūdu.|

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