5 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:
| Banco de dados | Componentes do Zabbix |
|---|---|
| MySQL | Zabbix frontend, Zabbix server, Zabbix proxy |
| PostgreSQL | Zabbix frontend, Zabbix server, Zabbix proxy |
Para configurar a criptografia de conexão dentro do SGBD, 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 de 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 através 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.
Recomenda-se evitar sistemas operacionais em fim de vida útil, 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 fornecidos 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 Zabbix server/proxy e 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 se 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 seguintes parâmetros 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. Desabilitado para MYSQL, porque a biblioteca PHP MySQL não permite ignorar 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 tiverem permissão de escrita, o frontend gerará um aviso no relatório System information informando 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 utiliza a interface gráfica para definir as opções possíveis: required,
verify_ca, verify_full. Especifique as opções necessárias na etapa do assistente de instalação Configurar conexões com o BD. Essas opções são mapeadas para o
arquivo de configuração (zabbix.conf.php) da seguinte forma:
| Configuração 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'] = ''; ... |
Marque Criptografia TLS do banco de dados 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 Arquivo CA TLS do banco de dados |
Habilita o modo verify_ca. |
![]() |
... // Usado para conexão TLS com 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 lista de cifras definida - selecionada pelo servidor 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 Arquivo de chave TLS do banco de dados 3. Especifique o caminho para Arquivo CA TLS do banco de dados 4. Especifique o caminho para Arquivo de certificado TLS do banco de dados 5. Especifique 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 Arquivo de chave TLS do banco de dados 3. Especifique o caminho para Arquivo CA TLS do banco de dados 4. Especifique o caminho para 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 server/proxy do Zabbix
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. |
1. Defina DBTLSConnect=required |
Server/proxy faz 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 certificadora TLS |
Server/proxy faz 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 certificadora TLS |
Server/proxy faz 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 certificadora TLS2. Defina DBTLSCertFile - especifique o arquivo do certificado da chave pública do cliente3. Defina DBTLSKeyFile - especifique o arquivo da chave privada do cliente |
Server/proxy fornece um certificado de cliente ao conectar-se ao banco de dados. |
1. Defina DBTLSCipher - a lista de cifras de criptografia que o cliente permite para conexões usando protocolos TLS até TLS 1.2ou DBTLSCipher13 - a lista de cifras de criptografia que o cliente permite para conexões usando o protocolo TLS 1.3 |
(MySQL) A conexão TLS é feita usando uma cifra da lista fornecida. (PostgreSQL) Definir esta opção será considerado um erro. |



