Como recomendado na resposta do sysadmin1138 , esse tipo de situação explica por que as VPCs foram adicionadas ao Amazon Web Services: assim você pode tem uma intranet privada entre instâncias do EC2. Na minha opinião, essa é a parte 1 da solução: colocar seu servidor de banco de dados em um VPC com seu servidor de aplicativos e permitir acesso apenas ao servidor de banco de dados da rede interna (não voltada para a Internet) e rejeitar acesso ao TCP 3306 da rede externa (voltada para a Internet).
O segundo passo é "sim, você deve usar SSL e não, os custos de desempenho não são muito significativos". Você pode certamente testar conexões com seu banco de dados sobre SSL versus texto simples, mas a sobrecarga será relativamente pequena na melhor das hipóteses. Seu custo real de desempenho varia de acordo com o uso.
Seu aplicativo:
- Criar novas conexões com o banco de dados para cada operação SQL?
- Em caso afirmativo, você terá mais um custo de desempenho, embora ainda seja relativamente menor.
- Cache / pool de várias conexões de banco de dados e reutilizá-las conforme necessário?
- Se sim, não há quase nenhuma razão para não usar SSL.
Pessoalmente, se eu tiver a opção de usar SSL, eu uso SSL. A utilização de chaves RSA de 2048 bits versus chaves RSA de 4096 bits pode acelerar o tempo inicial de handshake, bem como reduzir a lista de cifras para tempo de aceleração até o primeiro byte ; você terá que inspecionar quais são suas opções para o MySQL.
Em uma nota de segurança, use códigos com PFS e não use SSLv3; use somente TLSv1.2 se puder (ou seja: se você estiver executando qualquer versão do MySQL / SSL posterior a 2008). Eu não tenho certeza do quanto o MySQL permite que você personalize isso.
TL; DR : Exponha sua porta MySQL pela rede interna da VPC ao seu servidor de aplicativos, definitivamente use SSL, mas faça um benchmark se você estiver preocupado com a velocidade e se não estiver reutilizando conexões.