Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como criptografar o tráfego de banco de dados de nuvem híbrida

Um ambiente de banco de dados seguro é difícil de alcançar, mas extremamente importante para evitar violações de dados, ransomware e outras atividades maliciosas. A segurança dos dados é uma prioridade máxima do ponto de vista comercial. Ao executar em um datacenter privado, sua rede geralmente é a primeira camada de defesa. Mas em um ambiente de nuvem de banco de dados híbrido distribuído, onde as partes internas da topologia do banco de dados, bem como os aplicativos, são distribuídos pelos datacenters, a rede representa uma superfície de conexão maior. A criptografia do tráfego de dados em trânsito é uma das medidas comuns de proteção contra espionagem da rede. Neste blog veremos como podemos criptografar o tráfego de banco de dados mysql na nuvem híbrida.

Por que precisamos criptografar o tráfego do banco de dados?

A principal razão é que as conexões entre instâncias de banco de dados e qualquer aplicativo cliente devem ser criptografadas e garantir apenas a comunicação autorizada. Essa camada de segurança pode evitar vazamentos de dados confidenciais indesejados ou excluir a possibilidade de qualquer ataque de injeção de SQL etc. Dados em trânsito também podem significar o tráfego de replicação entre os nós do banco de dados ou o tráfego entre os balanceadores de carga/proxies e as instâncias do banco de dados.




Ativando SSL em nós MySQL 

Versões mais recentes do MySQL vêm com certificados autoassinados e SSL habilitado. Por outro lado, se você quiser adicionar outra camada de segurança, use seus próprios certificados, o ClusterControl permite alterar o certificado SSL. Neste blog, explicamos como fazer isso usando o ClusterControl.


Ativando SSL em clientes 

O MySQL executa a criptografia por conexão, e o uso da criptografia para um determinado usuário pode ser opcional ou obrigatório. Para se conectar aos nós mysql por meio de SSL, certifique-se de ter configurado a concessão do usuário com a sintaxe "REQUIRE SSL", semelhante à abaixo:

mysql> create user 'app_user'@'192.168.%.%' identified by '[email protected]' REQUIRE SSL;

Query OK, 0 rows affected (0.00 sec)



mysql> grant all on *.* to 'app_user'@'192.168.%.%';

Query OK, 0 rows affected (0.00 sec)


Isso permite que você escolha uma conexão criptografada ou não criptografada de acordo com os requisitos de aplicativos individuais.





Para garantir que os clientes usem conexões criptografadas, precisamos ativar o parâmetro "require_secure_transport" no arquivo my.cnf. Por padrão, este parâmetro está DESLIGADO.



Verificando conexões de banco de dados

Por padrão, o cliente mysql tenta estabelecer uma conexão criptografada se o servidor suportar conexões criptografadas, com controle adicional disponível através da opção --ssl-mode, por exemplo,

[[email protected] vagrant]# mysql -u app_user -p -h 192.168.xx.xx -P3306 --ssl=1 -e "status;" | grep -i SSL
SSL: Cipher in use is ECDHE-RSA-AES256-GCM-SHA384


O protocolo SSL usa diferentes algoritmos de criptografia para garantir que os dados sejam recebidos nas redes pública e privada. Possui mecanismos para detectar qualquer alteração ou perda de dados.

[[email protected] vagrant]# mysql -u app_user -p -h 192.168.xx.xx -P3306 --ssl=1 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 12656
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> SHOW SESSION STATUS LIKE 'Ssl_cipher';
+---------------+-----------------------------+
| Variable_name | Value                       |
+---------------+-----------------------------+
| Ssl_cipher    | ECDHE-RSA-AES256-GCM-SHA384 |
+---------------+-----------------------------+
1 row in set (0.00 sec)

MySQL [(none)]> show  status like 'Ssl_version';
+---------------+---------+
| Variable_name | Value   |
+---------------+---------+
| Ssl_version   | TLSv1.2 |
+---------------+---------+
1 row in set (0.00 sec)

Conclusão 

Criptografar conexões de banco de dados não é e não deve ser um grande problema, é feito por padrão em algumas das versões mais recentes do MySQL. À medida que a segurança do banco de dados se torna cada vez mais uma preocupação comercial e regulatória, há muito mais em que pensar do que apenas a criptografia de dados em trânsito para proteger seu ambiente de nuvem híbrida. É importante ter em mente que outras camadas de segurança se aplicam ao hospedar um banco de dados, como segurança de rede e sistema operacional.