[comment]: # translation:outdated

[comment]: # ({22b96536-5407a56a})
# 5 Connessione sicura al database

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

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

Questa sezione fornisce i passaggi di configurazione di Zabbix ed esempi di configurazione per
connessioni TLS sicure tra:

|Database|Componenti Zabbix|
|--------|-----------------|
|MySQL|Zabbix frontend, Zabbix server, Zabbix proxy|
|PostgreSQL|Zabbix frontend, Zabbix server, Zabbix proxy|

Per configurare la crittografia della connessione all'interno del DBMS, consultare la
documentazione ufficiale del fornitore per i dettagli:

-   [MySQL](https://dev.mysql.com/doc/refman/8.0/en/replication-encrypted-connections.html):
    server di database di replica source e replica.
-   [MySQL](https://dev.mysql.com/doc/refman/8.0/en/group-replication-security.html):
    server di database per group replication, ecc.
-   [PostgreSQL](https://www.postgresql.org/docs/current/encryption-options.html)
    opzioni di crittografia.

Tutti gli esempi si basano sulle release GA di MySQL CE (8.0) e PgSQL
(13) disponibili tramite i repository ufficiali che utilizzano CentOS 8.

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

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

Per configurare la crittografia è necessario quanto segue:

-   Sistema operativo supportato dallo sviluppatore con OpenSSL >=1.1.X o
    alternativa.

::: noteclassic
 Si consiglia di evitare sistemi operativi in stato di fine vita,
soprattutto nel caso di nuove installazioni 
:::

-   Motore di database (RDBMS) installato e mantenuto dal repository ufficiale
    fornito dallo sviluppatore. I sistemi operativi vengono spesso distribuiti
    con versioni obsolete del software di database per le quali il supporto
    della crittografia non è implementato, ad esempio sistemi basati su RHEL 7 e
    PostgreSQL 9.2, MariaDB 5.5 senza supporto per la crittografia.

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

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

L'impostazione di questa opzione impone l'uso di una connessione TLS al database da
server/proxy Zabbix e frontend verso il database:

-   `required` - connessione tramite TLS come modalità di trasporto senza
    controlli dell'identità
-   `verify_ca` - connessione tramite TLS e verifica del certificato
-   `verify_full` - connessione tramite TLS, verifica del certificato e verifica che
    l'identità del database (CN) specificata da DBHost corrisponda al suo certificato

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

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

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

[comment]: # ({9a1ac113-b1071a8a})
##### Frontend al database

Una connessione sicura al database può essere configurata durante l'installazione del frontend:

-   Selezionare la casella *Database TLS encryption* nel passaggio [Configure DB
    connection](/manual/installation/frontend#configure-db-connection)
    per abilitare la crittografia del trasporto.
-   Selezionare la casella *Verify database certificate* che appare quando il campo
    *TLS encryption* è selezionato per abilitare la crittografia con
    certificati.

::: noteclassic
 Per MySQL, la casella *Database TLS encryption* è disabilitata se *Database host* è impostato su localhost, perché una connessione che utilizza un file socket (su Unix) o memoria condivisa (su Windows) non può essere crittografata.<br>
Per PostgreSQL, la casella *TLS encryption* è disabilitata se il valore
del campo *Database host* inizia con una barra oppure se il campo è vuoto.

:::

I seguenti parametri diventano disponibili nella modalità di crittografia TLS con
certificati (se entrambe le caselle sono selezionate):

|Parameter|Description|
|--|--------|
|*Database TLS CA file*|Specificare il percorso completo di un file valido dell'autorità di certificazione TLS (CA).|
|*Database TLS key file*|Specificare il percorso completo di un file di chiave TLS valido.|
|*Database TLS certificate file*|Specificare il percorso completo di un file di certificato TLS valido.|
|*Database host verification*|Selezionare questa casella per attivare la verifica dell'host.<br>Disabilitata per MYSQL, perché la libreria PHP MySQL non consente di saltare il passaggio di convalida del certificato del peer.|
|*Database TLS cipher list*|Specificare un elenco personalizzato di cifrari validi. Il formato dell'elenco dei cifrari deve essere conforme allo standard OpenSSL.<br>Disponibile solo per MySQL.|

::: noteimportant
I parametri TLS devono puntare a file validi. Se puntano a file inesistenti o non validi, ciò comporterà un errore di autorizzazione.<br>
Se i file dei certificati sono scrivibili, il frontend genera un avviso nel report [System information](/manual/web_interface/frontend_sections/reports/status_of_zabbix) che indica "TLS certificate files must be read-only." (visualizzato solo se l'utente PHP è il proprietario del certificato).

I certificati protetti da password non sono supportati. 
:::

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

[comment]: # ({18fae872-d4fd87a2})
##### Casi d'uso

Il frontend di Zabbix utilizza l'interfaccia GUI per definire le possibili opzioni: `required`,
`verify_ca`, `verify_full`. Specificare le opzioni richieste nel passaggio
della procedura guidata di installazione *Configure DB connections*. Queste opzioni sono mappate nel
file di configurazione (zabbix.conf.php) nel modo seguente:

|Impostazioni GUI|File di configurazione|Descrizione|Risultato|
|----|----|----|----|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_transport.png)|...<br>// Utilizzato per la connessione TLS.<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>...|Selezionare *Database TLS encryption*<br>Lasciare deselezionato *Verify database certificate*|Abilita la modalità `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\. Selezionare *Database TLS encryption* e *Verify database certificate*<br>2. Specificare il percorso di *Database TLS CA file*|Abilita la modalità `verify_ca`.|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_verify_full1.png)|...<br>// Utilizzato per la connessione TLS con un elenco Cipher definito in modo rigoroso.<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>Oppure:<br><br>...<br>// Utilizzato per la connessione TLS senza un elenco Cipher definito - selezionato dal server MySQL<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\. Selezionare *Database TLS encryption* e *Verify database certificate*<br>2. Specificare il percorso di *Database TLS key file*<br>3. Specificare il percorso di *Database TLS CA file*<br>4. Specificare il percorso di *Database TLS certificate file*<br>5. Specificare *Database TLS cipher list* (facoltativo)|Abilita la modalità `verify_full` per 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\. Selezionare *Database TLS encryption* e *Verify database certificate*<br>2. Specificare il percorso di *Database TLS key file*<br>3. Specificare il percorso di *Database TLS CA file*<br>4. Specificare il percorso di *Database TLS certificate file*<br>5. Selezionare *Database host verification*|Abilita la modalità `verify_full` per PostgreSQL.|

**Vedere anche:** [Esempi di configurazione della crittografia per
MySQL](/manual/appendix/install/db_encrypt/mysql), [Esempi di configurazione della crittografia per
PostgreSQL](/manual/appendix/install/db_encrypt/postgres).

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

[comment]: # ({b504a368-9cfb91d1})
#### Configurazione di Zabbix server/proxy

Le connessioni sicure al database possono essere configurate con i rispettivi
parametri nel file di configurazione di Zabbix [server](/manual/appendix/config/zabbix_server)
e/o [proxy](/manual/appendix/config/zabbix_proxy).

|Configurazione|Risultato|
|--|--|
|Nessuna|Connessione al database senza crittografia.|
|1\. Impostare `DBTLSConnect=required`|Server/proxy stabiliscono una connessione TLS al database. Una connessione non crittografata non è consentita.|
|1\. Impostare `DBTLSConnect=verify_ca`<br>2. Impostare `DBTLSCAFile` - specificare il file dell'autorità di certificazione TLS|Server/proxy stabiliscono una connessione TLS al database dopo aver verificato il certificato del database.|
|1\. Impostare `DBTLSConnect=verify_full`<br>2. Impostare `DBTLSCAFile` - specificare il file dell'autorità di certificazione TLS|Server/proxy stabiliscono una connessione TLS al database dopo aver verificato il certificato del database e l'identità del host del database.|
|1\. Impostare `DBTLSCAFile` - specificare il file dell'autorità di certificazione TLS<br>2. Impostare `DBTLSCertFile` - specificare il file del certificato della chiave pubblica del client<br>3. Impostare `DBTLSKeyFile` - specificare il file della chiave privata del client|Server/proxy forniscono un certificato client durante la connessione al database.|
|1\. Impostare `DBTLSCipher` - l'elenco dei cifrari di crittografia consentiti dal client per le connessioni che utilizzano protocolli TLS fino a TLS 1.2<br><br>oppure `DBTLSCipher13` - l'elenco dei cifrari di crittografia consentiti dal client per le connessioni che utilizzano il protocollo TLS 1.3|(MySQL) La connessione TLS viene stabilita utilizzando un cifrario dell'elenco fornito.<br>(PostgreSQL) L'impostazione di questa opzione sarà considerata un errore.|

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