Conexão segura com o banco de dados
Esta seção fornece etapas e exemplos de configuração do Zabbix para conexões TLS seguras entre:
Banco de Dados | Componentes 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:
Todos os exemplos são baseados nas versões GA do MySQL CE (8.0) e PgSQL (13) e estão disponíveis através de repositórios oficiais usando AlmaLinux 8.
Os seguintes itens são necessários para configurar a criptografia:
Recomenda-se evitar sistemas operacionais em status de fim de vida, especialmente no caso de novas instalações.
Definir esta opção força o uso de conexão TLS para o banco de dados a partir do servidor/proxy Zabbix e do frontend para o banco de dados:
Uma conexão segura com o banco de dados pode ser configurada durante a instalação do frontend:
Para MySQL, a caixa de seleção Database TLS encryption é desativada se o Database host estiver configurado como localhost, porque a 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 é desativada 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):
Parâmetro | Descrição |
---|---|
Database TLS CA file | Especifique o caminho completo para um arquivo de autoridade de certificação (CA) TLS válido. |
Database TLS key file | Especifique o caminho completo para um arquivo de chave TLS válido. |
Database TLS certificate file | Especifique o caminho completo para um arquivo de certificado TLS válido. |
Database host verification | Marque esta caixa de seleção para ativar a verificação do host. Desativado 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 um erro de autorização.
Se os arquivos de certificado forem graváveis, o frontend gerará um aviso no relatório System information de que "Os arquivos de certificado TLS devem ser somente leitura." (exibido apenas se o usuário PHP for o proprietário do certificado).
Certificados protegidos por senhas não são suportados.
Zabbix frontendusa 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 de banco de dados. 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'] = ''; ... |
Marcar Criptografia TLS do banco de dados Deixar Verificar certificado do banco de dados desmarcado |
Ativar 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. Marcar Criptografia TLS do banco de dados e Verificar certificado do banco de dados 2. Especificar o caminho para o Arquivo CA TLS do banco de dados |
Ativar 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. Marcar Criptografia TLS do banco de dados e Verificar certificado do banco de dados 2. Especificar o caminho para o Arquivo de chave TLS do banco de dados 3. Especificar o caminho para o Arquivo CA TLS do banco de dados 4. Especificar o caminho para o Arquivo de certificado TLS do banco de dados 5. Especificar lista de cifras TLS (opcional) |
Ativar 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. Marcar Criptografia TLS do banco de dados e Verificar certificado do banco de dados 2. Especificar o caminho para Database TLS key file 3. Especificar o caminho para o Arquivo CA TLS do banco de dados 4. Especificar o caminho para o Arquivo de certificado TLS do banco de dados 5. Marcar Verificação de host do banco de dados |
Ativar o modo 'verify_full'para PostgreSQL. |
Consulte também: Encryption configuration examples for MySQL, Encryption configuration examples for PostgreSQL.
Conexões seguras ao banco de dados podem ser configuradas com os respectivos parâmetros no arquivo de configuração do Zabbix server e/ou proxy.
Configuração | Resultado |
---|---|
Nenhuma | Conexão ao banco de dados sem criptografia. |
1. Defina DBTLSConnect=required | Servidor/proxy faz uma conexão TLS com o banco de dados. Uma conexão não criptografada não é permitida. |
1. Defina DBTLSConnect=verify_ca 2. Defina DBTLSCAFile - especifique o arquivo da autoridade de certificação TLS |
Servidor/proxy faz uma conexão TLS com o banco de dados após verificar o certificado do banco de dados. |
1. Defina DBTLSConnect=verify_full 2. Defina DBTLSCAFile - especifique o arquivo da autoridade de certificação TLS |
Servidor/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 de certificação TLS 2. Defina DBTLSCertFile - especifique o arquivo do certificado de chave pública do cliente 3. Defina DBTLSKeyFile - especifique o arquivo da chave privada do cliente. |
Servidor/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é o TLS 1.2 ou DBTLSCipher13 - a lista de cifras de criptografia que o cliente permite para conexões usando o protocolo TLS 1.3 |
(MySQL) Conexão TLS é feita usando uma cifra da lista fornecida. (PostgreSQL) Definir esta opção será considerado um erro. |