[comment]: # translation:outdated

[comment]: # ({5407a56a-5407a56a})
# 4 Conexión segura a la base de datos

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

[comment]: # ({b38f1bac-7cadd09e})
#### Descripción general

Esta sección proporciona pasos de configuración de Zabbix y ejemplos de configuración para
conexiones TLS seguras entre:

|Base de datos|Componentes Zabbix|
|--------|-----------------|
|MySQL|Frontal Zabbix, servidor Zabbix, proxy Zabbix|
|PostgreSQL|Frontal Zabbix, servidor Zabbix, proxy Zabbix|

Para configurar el cifrado de la conexión dentro del DBMS, consulte la documentación del 
proveedor oficial para más detalles:

- [MySQL](https://dev.mysql.com/doc/refman/8.0/en/replication-solutions-encrypted-connections.html):
    Servidores de bases de datos de replicación de origen y réplica.
- [MySQL](https://dev.mysql.com/doc/refman/8.0/en/group-replication-security.html):
    replicación de grupos, etc. servidores de bases de datos.
- [PostgreSQL](https://www.postgresql.org/docs/current/encryption-options.html)
    opciones de cifrado.

Todos los ejemplos se basan en las versiones GA de MySQL CE (8.0) y PgSQL.
(13) disponibles a través de repositorios oficiales usando CentOS 8.

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

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

Se requiere lo siguiente para configurar el cifrado:

- Sistema operativo con OpenSSL >=1.1.X o
    alternativas soportado por desarrolladores .

::: noteclassic
 Se recomienda evitar un SO en su fase final de vida,
especialmente en el caso de nuevas instalaciones
:::

- Motor de base de datos (RDBMS) instalado y mantenido desde el sitio oficial
    con repositorio proporcionado por el desarrollador. Los sistemas operativos a menudo se envían
    con versiones obsoletas de software de bases de datos para las cuales el soporte de cifrado
    no está implementado, por ejemplo, sistemas basados en RHEL 7 y
    PostgreSQL 9.2, MariaDB 5.5 sin soporte de cifrado.

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

[comment]: # ({9801ac5b-9801ac5b})
##### Terminología

Establecer esta opción obliga a utilizar la conexión TLS a la base de datos desde
el servidor/proxy Zabbix y frontend a la base de datos:

- required - conectarse usando TLS como modo de transporte sin 
    verificación de identidad;
- verify\_ca - conectarse usando TLS y verificar el certificado;
- verify\_full - conectarse usando TLS, verificar el certificado y verificar que
    la identidad de la base de datos (CN) especificada por DBHost coincide con su certificado;

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

[comment]: # ({84f30836-84f30836})
#### Configuración de Zabbix

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

[comment]: # ({90cd2eda-b1071a8a})
##### Interfaz a la base de datos

Se puede configurar una conexión segura a la base de datos durante la 
instalación de la interfaz:

- Marque la casilla de verificación *Cifrado TLS de base de datos* en el paso [Configurar conexión de base de datos](/manual/instalación/frontend#configure_db_connection)
     para habilitar el cifrado de transporte.
- Marque la casilla de verificación *Verificar certificado de base de datos* que aparece cuando
    el campo *Cifrado TLS* está marcado para habilitar el cifrado con
    certificados.

::: noteclassic
 Para MySQL, la casilla de verificación *Cifrado TLS de base de datos* está
deshabilitada, si *Equipo de base de datos* está configurado en localhost, porque la conexión
que utiliza un archivo de socket (en Unix) o memoria compartida (en Windows) no puede
estar cifrado.\
Para PostgreSQL, la casilla de verificación *Cifrado TLS* está deshabilitada, si el valor
del campo *Equipo de base de datos* comienza con una barra o el campo está vacío.

:::

Los siguientes parámetros están disponibles en el cifrado TLS en
modo de certificado (si ambas casillas de verificación están marcadas):

|Parámetro|Descripción|
|--|--------|
|*Archivo CA TLS de base de datos*|Especifique la ruta completa a un archivo de autoridad de certificación (CA) TLS válido.|
|*Archivo de clave TLS de base de datos*|Especifique la ruta completa a un archivo de clave TLS válido.|
|*Archivo de certificado TLS de base de datos*|Especifique la ruta completa a un archivo de certificado TLS válido.|
|*Verificación del equipo de la base de datos*|Marque esta casilla de verificación para activar la verificación del equipo.<br>Deshabilitado para MYSQL, porque la biblioteca PHP MySQL no permite omitir el paso de validación del certificado de pares.|
|*Lista de cifrado TLS de base de datos*|Especifique una lista personalizada de cifrados válidos. El formato de la lista de cifrado debe cumplir con el estándar OpenSSL.<br>Disponible solo para MySQL.|

::: noteimportant
Los parámetros TLS deben apuntar a archivos válidos. Si
apuntan a archivos inexistentes o no válidos, dará lugar a un
error de autorización.\
Si los archivos de certificado se pueden escribir, la interfaz genera una advertencia en
el el informix de [información del sistema](/manual/web_interface/frontend_sections/reports/status_of_zabbix)
indicando que "los archivos de certificado TLS deben ser de solo lectura". (sólo se muestra
si el usuario PHP es el propietario del certificado).\
\
No se admiten certificados protegidos por contraseñas.
:::

[comment]: # ({/90cd2eda-b1071a8a})

[comment]: # ({ada32a3f-d4fd87a2})
##### Casos de uso

La interfaz de Zabbix utiliza la interfaz GUI para definir posibles opciones: required,
verify\_ca, verify\_full. Especificque las opciones requeridas en el paso del asistente de instalación *Configurar conexiones de base de datos*. Estas opciones están asignadas al
archivo de configuración (zabbix.conf.php) de la siguiente manera:

|Configuración de GUI|Archivo de configuración|Descripción|Resultado|
|----|----|----|----|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_transport.png)|...<br>// Se utiliza para la conexión TLS.<br>$DB \['ENCRYPTION'\] = verdadero;<br>$DB\['KEY\_FILE'\] = '';<br>$DB\['CERT\_FILE'\] = '';<br>$ DB\['CA\_FILE'\] = '';<br>$DB\['VERIFY\_HOST'\] = false;<br>$DB\['CIPHER\_LIST'\] = '';< br>...|Marque *Cifrado TLS de la base de datos*<br>Deje *Verificar certificado de la base de datos* sin marcar|Habilitar el modo 'requerido'.|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_verify_ca.png)|...<br>$DB\['ENCRYPTION'\] = verdadero; \\\\ $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\. Marque *Cifrado TLS de base de datos* y *Verificar certificado de base de datos*<br>2. Especifique la ruta al *archivo CA TLS de la base de datos*|Habilite el modo 'verify\_ca'.|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_verify_full1.png)|...<br>// Se utiliza para conexiones TLS con una lista de cifrado estrictamente definida. <br>$DB\['ENCRYPTION'\] = true;<br>$DB\['KEY\_FILE'\] = '<clave\_archivo\_ruta>';<br>$DB\['CERT\ _FILE'\] = '<clave\_archivo\_ruta>';<br>$DB\['CA\_FILE'\] = '<clave\_archivo\_ruta>';<br>$DB\['VERIFY\ _HOST'\] = true;<br>$DB\['CIPHER\_LIST'\] = '<cipher\_list>';<br>...<br><br>O:<br><br> ...<br>// Se utiliza para conexión TLS sin lista de cifrado definida - seleccionada por el servidor MySQL<br>$DB\['ENCRYPTION'\] = true;<br>$DB\['KEY\_FILE'\] = '<clave\_archivo\_ruta>';<br>$DB\['CERT\_FILE'\] = '<clave\_archivo\_ruta>';<br>$DB\['CA\_FILE'\] = '<clave\_archivo\_ruta>';<br>$DB\['VERIFY\_HOST'\] = true;<br>$DB\['CIPHER\_LIST'\] = '';<br>. ..|1\. Marque *Cifrado TLS de base de datos* y *Verificar certificado de base de datos*<br>2. Especifique la ruta al *archivo de clave TLS de la base de datos*<br>3. Especifique la ruta al *archivo CA TLS de base de datos*<br>4. Especifique la ruta al *archivo de certificado TLS de la base de datos*<br>5. Especifique la lista de cifrado TLS (opcional)|Habilite el modo 'verify\_full' para MySQL.|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_verify_full2.png)|...<br>$DB\['ENCRYPTION'\] = verdadero; <br>$DB\['KEY\_FILE'\] = '<clave\_archivo\_ruta>';<br>$DB\['CERT\_FILE'\] = '<clave\_archivo\_ruta>'; <br>$DB\['CA\_FILE'\] = '<clave\_archivo\_ruta>';<br>$DB\['VERIFY\_HOST'\] = verdadero;<br>$DB\[' CIPHER\_LIST'\] = ' ';<br>...<br>|1\. Marque *Cifrado TLS de base de datos* y *Verificar certificado de base de datos*<br>2. Especifique la ruta al *archivo de clave TLS de la base de datos*<br>3. Especifique la ruta al *archivo CA TLS de base de datos*<br>4. Especifique la ruta al *archivo de certificado TLS de la base de datos*<br>5. Marque *Verificación del equipo de la base de datos*|Habilite el modo 'verificar\_full' para PostgreSQL.|

**Ver también:** [Ejemplos de configuración de cifrado para
MySQL](/manual/appendix/install/db_encrypt/mysql), [ejemplos de configuración de cifrado para
PostgreSQL](/manual/appendix/install/db_encrypt/postgres).

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

[comment]: # ({2d8949fc-9cfb91d1})
#### Configuración del servidor/proxy Zabbix

Las conexiones seguras a la base de datos se pueden configurar con los respectivos
parámetros en el [servidor](/manual/appendix/config/zabbix_server) Zabbix
y/o archivo de configuración del [proxy](/manual/appendix/config/zabbix_proxy).

|Configuración|Resultado|
|--|--|
|Ninguno|Conexión a la base de datos sin cifrar.|
|1\. Establezca DBTLSConnect=required|Servidor/proxy para realizar una conexión TLS a la base de datos. No se permite una conexión no cifrada.|
|1\. Establezca DBTLSConnect=verificar\_ca<br>2. Establecer DBTLSCAFile: especifique el archivo de autoridad de certificación TLS|El servidor/proxy realiza una conexión TLS a la base de datos después de verificar el certificado de la base de datos.|
|1\. Establezca DBTLSConnect=verificar\_full<br>2. Establecer DBTLSCAFile: especifique el archivo de autoridad de certificación TLS|El servidor/proxy realiza una conexión TLS a la base de datos después de verificar el certificado de la base de datos y la identidad del host de la base de datos.|
|1\. Establezca DBTLSCAFile: especifique el archivo de autoridad de certificación TLS<br>2. Configure DBTLSCertFile: especifique el archivo de certificado de clave pública del cliente<br>3. Establezca DBTLSKeyFile: especifique el archivo de clave privada del cliente|El servidor/proxy proporciona un certificado de cliente mientras se conecta a la base de datos.|
|1\. Configure DBTLSCipher: la lista de cifrados que el cliente permite para conexiones que utilizan protocolos TLS hasta TLS 1.2<br><br>o DBTLSCipher13: la lista de cifrados que el cliente permite para conexiones que utilizan el protocolo TLS 1.3|(MySQL) TLS la conexión se realiza utilizando un cifrado de la lista proporcionada.<br>(PostgreSQL) Establecer esta opción se considerará un error.|

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