Conexão segura com o banco de dados
Visão geral
Esta seção fornece etapas de configuração do Zabbix e exemplos de configuração para conexões TLS seguras entre:
| Database | Zabbix components |
|---|---|
| MySQL | Zabbix frontend, Zabbix server, Zabbix proxy |
| PostgreSQL | Zabbix frontend, Zabbix server, Zabbix proxy |
Para configurar a criptografia da conexão dentro do DBMS, consulte a documentação oficial do fornecedor para obter detalhes:
- MySQL: servidores de banco de dados de replicação de origem e réplica.
- MySQL: servidores de banco de dados de replicação em grupo etc.
- PostgreSQL opções de criptografia.
Todos os exemplos são baseados nas versões GA do MySQL CE (8.0) e PgSQL (13) disponíveis por meio dos repositórios oficiais usando CentOS 8.
Requisitos
O seguinte é necessário para configurar a criptografia:
- Sistema operacional com suporte do desenvolvedor e OpenSSL >=1.1.X ou alternativa.
É recomendável evitar sistemas operacionais em status de fim de vida, especialmente no caso de novas instalações
- Mecanismo de banco de dados (RDBMS) instalado e mantido a partir do repositório oficial fornecido pelo desenvolvedor. Os sistemas operacionais frequentemente são distribuídos com versões desatualizadas de software de banco de dados para as quais o suporte à criptografia não está implementado, por exemplo, sistemas baseados em RHEL 7 e PostgreSQL 9.2, MariaDB 5.5 sem suporte à criptografia.
Terminologia
Definir esta opção força o uso de conexão TLS com o banco de dados a partir do server/proxy do Zabbix e do frontend para o banco de dados:
required- conectar usando TLS como modo de transporte sem verificações de identidadeverify_ca- conectar usando TLS e verificar o certificadoverify_full- conectar usando TLS, verificar o certificado e verificar que a identidade do banco de dados (CN) especificada por DBHost corresponde ao seu certificado
Configuração do Zabbix
Frontend para o banco de dados
Uma conexão segura com o banco de dados pode ser configurada durante a instalação do frontend:
- Marque a caixa de seleção Database TLS encryption na etapa Configure DB connection para habilitar a criptografia de transporte.
- Marque a caixa de seleção Verify database certificate que aparece quando o campo TLS encryption está marcado para habilitar a criptografia com certificados.
Para MySQL, a caixa de seleção Database TLS encryption fica desabilitada se Database host estiver definido como localhost, porque uma conexão que usa um arquivo de socket (no Unix) ou memória compartilhada (no Windows) não pode ser criptografada.
Para PostgreSQL, a caixa de seleção TLS encryption fica desabilitada se o valor do campo Database host começar com uma barra ou se o campo estiver vazio.
Os parâmetros a seguir ficam disponíveis no modo de criptografia TLS com certificados (se ambas as caixas de seleção estiverem marcadas):
| Parameter | Description |
|---|---|
| Database TLS CA file | Especifique o caminho completo para um arquivo válido de autoridade certificadora (CA) TLS. |
| Database TLS key file | Especifique o caminho completo para um arquivo válido de chave TLS. |
| Database TLS certificate file | Especifique o caminho completo para um arquivo válido de certificado TLS. |
| Database host verification | Marque esta caixa de seleção para ativar a verificação do host. Desabilitada para MYSQL, porque a biblioteca PHP MySQL não permite pular a etapa de validação do certificado do par. |
| Database TLS cipher list | Especifique uma lista personalizada de cifras válidas. O formato da lista de cifras deve estar em conformidade com o padrão OpenSSL. Disponível apenas para MySQL. |
Os parâmetros TLS devem apontar para arquivos válidos. Se apontarem para arquivos inexistentes ou inválidos, isso resultará em erro de autorização.
Se os arquivos de certificado forem graváveis, o frontend gera um aviso no relatório System information de que "TLS certificate files must be read-only." (exibido somente se o usuário do PHP for o proprietário do certificado).
Certificados protegidos por senha não são suportados.
Casos de uso
O frontend do Zabbix usa uma interface gráfica para definir as opções possíveis: required, verify_ca, verify_full.
Especifique as opções necessárias na etapa Configurar conexões com o banco de dados do assistente de instalação.
Essas opções são mapeadas para o arquivo de configuração do frontend (zabbix.conf.php) da seguinte maneira:
| Configurações da GUI | Arquivo de configuração | Descrição | Resultado |
|---|---|---|---|
![]() |
... // Usado para conexão TLS. $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '';$DB['CERT_FILE'] = '';$DB['CA_FILE'] = '';$DB['VERIFY_HOST'] = false;$DB['CIPHER_LIST'] = '';... |
1. Marque Criptografia TLS do banco de dados 2. Deixe Verificar certificado do banco de dados desmarcado |
Habilita o modo required. |
![]() |
...$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. Marque Criptografia TLS do banco de dados e Verificar certificado do banco de dados 2. Especifique o caminho para o arquivo CA TLS do banco de dados |
Habilita o modo verify_ca. |
![]() |
... // Usado para conexão TLS com uma lista de cifras estritamente definida. $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>';... Ou: ... // Usado para conexão TLS sem uma lista de cifras definida - selecionada pelo server 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. Marque Criptografia TLS do banco de dados e Verificar certificado do banco de dados 2. Especifique o caminho para o arquivo de chave TLS do banco de dados 3. Especifique o caminho para o arquivo CA TLS do banco de dados 4. Especifique o caminho para o arquivo de certificado TLS do banco de dados 5. Especifique a lista de cifras TLS do banco de dados (opcional) |
Habilita o modo verify_full para 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. Marque Criptografia TLS do banco de dados e Verificar certificado do banco de dados 2. Especifique o caminho para o arquivo de chave TLS do banco de dados 3. Especifique o caminho para o arquivo CA TLS do banco de dados 4. Especifique o caminho para o arquivo de certificado TLS do banco de dados 5. Marque Verificação do host do banco de dados |
Habilita o modo verify_full para PostgreSQL. |
Veja também: Exemplos de configuração de criptografia para MySQL, Exemplos de configuração de criptografia para PostgreSQL.
Configuração do Zabbix server/proxy
As conexões seguras com o banco de dados podem ser configuradas com os respectivos parâmetros no arquivo de configuração do server e/ou do proxy do Zabbix.
| Configuração | Resultado |
|---|---|
| Nenhuma | Conexão com o banco de dados sem criptografia. |
Defina DBTLSConnect=required |
O server/proxy estabelece uma conexão TLS com o banco de dados. Uma conexão não criptografada não é permitida. |
1. Defina DBTLSConnect=verify_ca2. Defina DBTLSCAFile - especifique o arquivo da autoridade de certificação TLS |
O server/proxy estabelece uma conexão TLS com o banco de dados após verificar o certificado do banco de dados. |
1. Defina DBTLSConnect=verify_full2. Defina DBTLSCAFile - especifique o arquivo da autoridade de certificação TLS |
O server/proxy estabelece uma conexão TLS com o banco de dados após verificar o certificado do banco de dados e a identidade do host do banco de dados. |
1. Defina DBTLSCAFile - especifique o arquivo da autoridade de certificação TLS2. Defina DBTLSCertFile - especifique o arquivo do certificado da chave pública do cliente3. Defina DBTLSKeyFile - especifique o arquivo da chave privada do cliente |
O server/proxy fornece um certificado de cliente ao conectar-se ao banco de dados. |
Defina DBTLSCipher - a lista de cifras de criptografia permitidas pelo cliente para conexões que usam protocolos TLS até TLS 1.2ou DBTLSCipher13 - a lista de cifras de criptografia permitidas pelo cliente para conexões que usam o protocolo TLS 1.3 |
(MySQL) A conexão TLS é estabelecida usando uma cifra da lista fornecida. (PostgreSQL) A definição desta opção será considerada um erro. |



