Você está visualizando a documentação da versão de desenvolvimento, que pode estar incompleta.
Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

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 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 identidade
  • verify_ca - conectar usando TLS e verificar o certificado
  • verify_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 Criptografia TLS do banco de dados na etapa Configurar conexão com o BD para habilitar a criptografia de transporte.
  • Marque a caixa Verificar certificado do banco de dados que aparece quando o campo Criptografia TLS está marcado para habilitar a criptografia com certificados.

Para MySQL, a caixa Criptografia TLS do banco de dados é desabilitada se o Host do banco de dados estiver definido como localhost, porque a conexão que usa um arquivo de soquete (no Unix) ou memória compartilhada (no Windows) não pode ser criptografada.
Para PostgreSQL, a caixa Criptografia TLS é desabilitada se o valor do campo Host do banco de dados começar com uma barra ou o campo estiver vazio.

Os seguintes parâmetros ficam disponíveis no modo de criptografia TLS com certificados (se ambas as caixas estiverem marcadas):

Parâmetro Descrição
Arquivo CA TLS do banco de dados Especifique o caminho completo para um arquivo de autoridade certificadora (CA) TLS válido.
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 para ativar a verificação do host.
Desabilitado para MYSQL, pois a biblioteca PHP MySQL não permite pular a etapa de validação do certificado do par.
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 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 Informações do sistema de que "Os arquivos de certificado TLS devem ser somente leitura." (exibido apenas 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 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.

Configuração Resultado
Nenhuma Conexão com o banco de dados sem criptografia.
1. Defina DBTLSConnect=required O 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_ca
2. Defina DBTLSCAFile - especifique o arquivo da autoridade certificadora TLS
O 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_full
2. Defina DBTLSCAFile - especifique o arquivo da autoridade certificadora TLS
O 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 TLS
2. Defina DBTLSCertFile - especifique o arquivo do certificado da chave pública do cliente
3. 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.
1. Defina DBTLSCipher - a lista de cifras de criptografia que o cliente permite para conexões usando protocolos TLS até 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) A conexão TLS é feita usando uma cifra da lista fornecida.
(PostgreSQL) Definir esta opção será considerado um erro.