[comment]: # translation:outdated

[comment]: # ({22b96536-5407a56a})
# 5 Bezpieczne połączenie z bazą danych

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

[comment]: # ({b38f1bac-7cadd09e})
#### Przegląd

Ta sekcja zawiera kroki konfiguracji Zabbix oraz przykłady konfiguracji dla
bezpiecznych połączeń TLS pomiędzy:

|Baza danych|Komponenty Zabbix|
|--------|-----------------|
|MySQL|Zabbix frontend, Zabbix serwer, Zabbix proxy|
|PostgreSQL|Zabbix frontend, Zabbix serwer, Zabbix proxy|

Aby skonfigurować szyfrowanie połączeń w ramach systemu DBMS, szczegółowe
informacje można znaleźć w oficjalnej dokumentacji producenta:

-   [MySQL](https://dev.mysql.com/doc/refman/8.0/en/replication-encrypted-connections.html):
    źródłowe i replikowane serwery baz danych.
-   [MySQL](https://dev.mysql.com/doc/refman/8.0/en/group-replication-security.html):
    serwery baz danych z replikacją grupową itp.
-   [PostgreSQL](https://www.postgresql.org/docs/current/encryption-options.html)
    opcje szyfrowania.

Wszystkie przykłady opierają się na wydaniach GA MySQL CE (8.0) i PgSQL
(13), dostępnych w oficjalnych repozytoriach dla CentOS 8.

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

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

Do skonfigurowania szyfrowania wymagane są następujące elementy:

-   System operacyjny wspierany przez producenta, z OpenSSL >=1.1.X lub
    rozwiązaniem alternatywnym.

::: noteclassic
 Zaleca się unikanie systemów operacyjnych, które osiągnęły status end-of-life,
szczególnie w przypadku nowych instalacji 
:::

-   Silnik bazy danych (RDBMS) zainstalowany i utrzymywany z oficjalnego
    repozytorium dostarczanego przez producenta. Systemy operacyjne są często dostarczane
    z nieaktualnymi wersjami oprogramowania bazodanowego, dla których obsługa
    szyfrowania nie jest zaimplementowana, na przykład systemy oparte na RHEL 7 oraz
    PostgreSQL 9.2, MariaDB 5.5 bez obsługi szyfrowania.

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

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

Ustawienie tej opcji wymusza użycie połączenia TLS z bazą danych przez
serwer/proxy Zabbix oraz frontend do bazy danych:

-   `required` — połącz przy użyciu TLS jako trybu transportu bez
    sprawdzania tożsamości
-   `verify_ca` — połącz przy użyciu TLS i zweryfikuj certyfikat
-   `verify_full` — połącz przy użyciu TLS, zweryfikuj certyfikat oraz
    sprawdź, czy tożsamość bazy danych (CN) określona przez DBHost jest
    zgodna z jej certyfikatem

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

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

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

[comment]: # ({9a1ac113-b1071a8a})
##### Frontend do bazy danych

Bezpieczne połączenie z bazą danych można skonfigurować podczas instalacji frontend:

-   Zaznacz pole wyboru *Database TLS encryption* w kroku [Configure DB
    connection](/manual/installation/frontend#configure-db-connection),
    aby włączyć szyfrowanie transportu.
-   Zaznacz pole wyboru *Verify database certificate*, które pojawia się po
    zaznaczeniu pola *TLS encryption*, aby włączyć szyfrowanie z użyciem
    certyfikatów.

::: noteclassic
 Dla MySQL pole wyboru *Database TLS encryption* jest wyłączone, jeśli w polu *Database host* ustawiono localhost, ponieważ połączenie korzystające z pliku gniazda (w systemach Unix) lub pamięci współdzielonej (w systemie Windows) nie może być szyfrowane.<br>
Dla PostgreSQL pole wyboru *TLS encryption* jest wyłączone, jeśli wartość
pola *Database host* zaczyna się od ukośnika lub pole jest puste.

:::

Następujące parametry stają się dostępne w trybie szyfrowania TLS z
certyfikatami (jeśli zaznaczone są oba pola wyboru):

|Parameter|Description|
|--|--------|
|*Database TLS CA file*|Podaj pełną ścieżkę do prawidłowego pliku urzędu certyfikacji TLS (CA).|
|*Database TLS key file*|Podaj pełną ścieżkę do prawidłowego pliku klucza TLS.|
|*Database TLS certificate file*|Podaj pełną ścieżkę do prawidłowego pliku certyfikatu TLS.|
|*Database host verification*|Zaznacz to pole wyboru, aby włączyć weryfikację hosta.<br>Wyłączone dla MYSQL, ponieważ biblioteka PHP MySQL nie pozwala pominąć kroku walidacji certyfikatu peera.|
|*Database TLS cipher list*|Podaj niestandardową listę prawidłowych szyfrów. Format listy szyfrów musi być zgodny ze standardem OpenSSL.<br>Dostępne tylko dla MySQL.|

::: noteimportant
Parametry TLS muszą wskazywać prawidłowe pliki. Jeśli wskazują na nieistniejące lub nieprawidłowe pliki, spowoduje to błąd autoryzacji.<br>
Jeśli pliki certyfikatów mają uprawnienia do zapisu, frontend generuje ostrzeżenie w raporcie [System information](/manual/web_interface/frontend_sections/reports/status_of_zabbix): "TLS certificate files must be read-only." (wyświetlane tylko wtedy, gdy użytkownik PHP jest właścicielem certyfikatu).

Certyfikaty chronione hasłami nie są obsługiwane. 
:::

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

[comment]: # ({18fae872-d4fd87a2})
##### Przypadki użycia

Zabbix frontend używa interfejsu GUI do definiowania możliwych opcji: `required`,
`verify_ca`, `verify_full`. Wymagane opcje należy określić w kroku kreatora
instalacji *Configure DB connections*. Opcje te są mapowane do pliku
konfiguracyjnego (zabbix.conf.php) w następujący sposób:

|Ustawienia GUI|Plik konfiguracyjny|Opis|Wynik|
|----|----|----|----|
|![](../../../../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>...|Zaznacz *Database TLS encryption*<br>Pozostaw *Verify database certificate* niezaznaczone|Włącza tryb `required`.|
|![](../../../../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\. Zaznacz *Database TLS encryption* i *Verify database certificate*<br>2. Podaj ścieżkę do *Database TLS CA file*|Włącza tryb `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>Or:<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\. Zaznacz *Database TLS encryption* i *Verify database certificate*<br>2. Podaj ścieżkę do *Database TLS key file*<br>3. Podaj ścieżkę do *Database TLS CA file*<br>4. Podaj ścieżkę do *Database TLS certificate file*<br>5. Podaj *Database TLS cipher list* (opcjonalnie)|Włącza tryb `verify_full` dla 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\. Zaznacz *Database TLS encryption* i *Verify database certificate*<br>2. Podaj ścieżkę do *Database TLS key file*<br>3. Podaj ścieżkę do *Database TLS CA file*<br>4. Podaj ścieżkę do *Database TLS certificate file*<br>5. Zaznacz *Database host verification*|Włącza tryb `verify_full` dla PostgreSQL.|

**Zobacz także:** [Przykłady konfiguracji szyfrowania dla
MySQL](/manual/appendix/install/db_encrypt/mysql), [Przykłady konfiguracji
szyfrowania dla
PostgreSQL](/manual/appendix/install/db_encrypt/postgres).

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

[comment]: # ({b504a368-9cfb91d1})
#### Konfiguracja serwera/proxy Zabbix

Bezpieczne połączenia z bazą danych można skonfigurować za pomocą odpowiednich
parametrów w pliku konfiguracyjnym Zabbix [serwer](/manual/appendix/config/zabbix_server)
i/lub [proxy](/manual/appendix/config/zabbix_proxy).

|Konfiguracja|Wynik|
|--|--|
|Brak|Połączenie z bazą danych bez szyfrowania.|
|1\. Ustaw `DBTLSConnect=required`|Serwer/proxy nawiązują połączenie TLS z bazą danych. Nieszyfrowane połączenie nie jest dozwolone.|
|1\. Ustaw `DBTLSConnect=verify_ca`<br>2. Ustaw `DBTLSCAFile` - określ plik urzędu certyfikacji TLS|Serwer/proxy nawiązują połączenie TLS z bazą danych po zweryfikowaniu certyfikatu bazy danych.|
|1\. Ustaw `DBTLSConnect=verify_full`<br>2. Ustaw `DBTLSCAFile` - określ plik urzędu certyfikacji TLS|Serwer/proxy nawiązują połączenie TLS z bazą danych po zweryfikowaniu certyfikatu bazy danych oraz tożsamości hosta bazy danych.|
|1\. Ustaw `DBTLSCAFile` - określ plik urzędu certyfikacji TLS<br>2. Ustaw `DBTLSCertFile` - określ plik certyfikatu klucza publicznego klienta<br>3. Ustaw `DBTLSKeyFile` - określ plik klucza prywatnego klienta|Serwer/proxy przedstawiają certyfikat klienta podczas łączenia z bazą danych.|
|1\. Ustaw `DBTLSCipher` - lista szyfrów, które klient dopuszcza dla połączeń używających protokołów TLS do wersji TLS 1.2 włącznie<br><br>lub `DBTLSCipher13` - lista szyfrów, które klient dopuszcza dla połączeń używających protokołu TLS 1.3|(MySQL) Połączenie TLS jest nawiązywane z użyciem szyfru z podanej listy.<br>(PostgreSQL) Ustawienie tej opcji będzie traktowane jako błąd.|

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