Nós temos um aplicativo PHP que se conecta a um servidor MySQL, e desejamos proteger conexões entre a web & servidores de aplicativos e o banco de dados.
Nos horários de pico, os servidores da Web realizam muitas centenas de conexões simultâneas com o banco de dados e executam muitas pequenas leituras e gravações. Estou ciente de que isso não é o ideal e estou trabalhando para reduzir o número de conexões de banco de dados em paralelo a isso.
Não temos conexões persistentes com o banco de dados ativado atualmente e, embora pretendamos no futuro, gostaria de implementá-lo independentemente disso.
Hardware sábio - o servidor MySQL é bastante robusto (16 core), assim como os servidores web. Eles são servidores dedicados.
Minha pergunta envolve a maneira mais eficaz de proteger & criptografando as conexões com o servidor de banco de dados.
Minha pesquisa até agora sugeriu que a principal sobrecarga de desempenho é com a configuração da conexão SSL - quando o SSL é conectado, há pouca penalidade de desempenho. E aqui está o que eu tenho sobre cada método de proteger a conexão:
- Certificados SSL MySQL - funciona como o SSL normal. Pode usar certificados de cliente para impedir conexões não autorizadas. Nenhuma conexão persistente com nossa configuração existente. Ainda tem que ter o MySQL escutando em uma porta aberta no firewall.
- stunnel. Configure uma porta para o túnel ssl da porta. Não é necessário reconfigurar o MySQL. Pode fechar a porta de escuta normal do MySQL para impedir tentativas de conexão maliciosas do MySQL. Não suporta conexões persistentes. Hit de desempenho desconhecido.
- Tunelamento SSH. Crie um túnel SSH entre o cliente e o servidor. Não é necessário reconfigurar o MySQL. Pode fechar a porta de escuta normal do MySQL para impedir tentativas de conexão maliciosas do MySQL. Suporta conexões persistentes, mas às vezes elas são descartadas. Hit de desempenho desconhecido.
Isso é o mais que consegui. Estou ciente das limitações dos benchmarks - na minha experiência de executá-los, é muito difícil simular o tráfego no mundo real. Eu estava esperando que alguém tivesse algum conselho baseado em suas próprias experiências de garantia do MySQL?
Obrigado