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 | Frontend do Zabbix, server do Zabbix, proxy do Zabbix |
| PostgreSQL | Frontend do Zabbix, server do Zabbix, proxy do Zabbix |
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: replicação em grupo, etc. servidores de banco de dados.
- 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 suportado pelo desenvolvedor com OpenSSL >=1.1.X ou alternativa.
Recomenda-se 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 fornecidos com versões desatualizadas do software de banco de dados para as quais o suporte à criptografia não é 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 Criptografia TLS do banco de dados na etapa Configurar conexão com o banco de dados para habilitar a criptografia de transporte.
- Marque a caixa de seleção Verificar certificado do banco de dados, exibida quando o campo Criptografia TLS está marcado, para habilitar a criptografia com certificados.
Para MySQL, a caixa de seleção Criptografia TLS do banco de dados fica desabilitada se Host do banco de dados estiver definido como localhost, pois 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 Criptografia TLS fica desabilitada se o valor do campo Host do banco de dados 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):
| Parâmetro | Descrição |
|---|---|
| Arquivo CA TLS do banco de dados | Especifique o caminho completo para um arquivo válido de autoridade de certificação (CA) TLS. |
| Arquivo de chave TLS do banco de dados | Especifique o caminho completo para um arquivo de chave TLS válido. |
| Arquivo de certificado TLS do banco de dados | Especifique o caminho completo para um arquivo de certificado TLS válido. |
| Verificação do host do banco de dados | Marque esta caixa de seleção para ativar a verificação do host. Desabilitado para MYSQL, pois a biblioteca PHP MySQL não permite ignorar a etapa de validação do certificado do peer. |
| Lista de cifras TLS do banco de dados | 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 somente para MySQL. |
Os parâmetros TLS devem apontar para arquivos válidos. Se apontarem para arquivos inexistentes ou inválidos, isso resultará em um erro de autorização.
Se os arquivos de certificado forem graváveis, o frontend gerará um aviso no relatório Informações do sistema: "Os arquivos de certificado TLS devem ser somente leitura." (exibido somente se o usuário PHP for o proprietário do certificado).
Certificados protegidos por senhas não são compatíveis.
Casos de uso
O frontend do Zabbix usa a interface GUI 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 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'] = ''; ... |
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 Zabbix server/proxy
Conexões seguras com o banco de dados podem ser configuradas com os respectivos parâmetros no arquivo de configuração do Zabbix server e/ou proxy.
| Configuration | Result |
|---|---|
| None | 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 sem criptografia não é permitida. |
1. Defina DBTLSConnect=verify_ca2. Defina DBTLSCAFile - especifique o arquivo da autoridade certificadora do certificado 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 do certificado 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 do certificado 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 se conectar 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) A definição desta opção será considerada um erro. |



