sql >> Base de Datos >  >> RDS >> Mysql

Cómo cifrar el tráfico de la base de datos de la nube híbrida

Un entorno de base de datos seguro es difícil de lograr, pero extremadamente importante para evitar filtraciones de datos, ransomware y otras actividades maliciosas. La seguridad de los datos es una prioridad máxima desde el punto de vista empresarial. Cuando se ejecuta en un centro de datos privado, su red suele ser la primera capa de defensa. Pero en un entorno de nube de base de datos híbrida distribuida, donde las partes internas de la topología de la base de datos, así como las aplicaciones, se distribuyen entre los centros de datos, la red representa una superficie de conexión más grande. El cifrado del tráfico de datos en tránsito es una de las medidas comunes para protegerse contra las escuchas ilegales de la red. En este blog veremos cómo podemos cifrar el tráfico de la base de datos mysql de la nube híbrida.

¿Por qué necesitamos cifrar el tráfico de la base de datos?

La razón principal es que las conexiones entre las instancias de la base de datos y cualquier aplicación cliente deben cifrarse y garantizar solo la comunicación autorizada. Esta capa de seguridad puede evitar la fuga de datos confidenciales no deseados o excluir la posibilidad de cualquier ataque de inyección SQL, etc. Los datos en tránsito también pueden significar el tráfico de replicación entre los nodos de la base de datos o el tráfico entre los balanceadores de carga/proxies y las instancias de la base de datos.

 

Activar SSL en nodos MySQL 

Las versiones más nuevas de MySQL vienen con certificados autofirmados y SSL habilitado. Por otro lado, si desea agregar otra capa de seguridad, puede usar sus propios certificados, ClusterControl le permite cambiar el certificado SSL. En este blog, explicamos cómo hacer esto usando ClusterControl.

Activación de SSL en clientes 

MySQL realiza el cifrado por conexión, y el uso del cifrado para un usuario determinado puede ser opcional u obligatorio. Para conectarse a los nodos mysql a través de SSL, asegúrese de haber configurado la concesión del usuario con la sintaxis "REQUIERE SSL", similar a la siguiente:

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)

Esto le permite elegir una conexión cifrada o no cifrada según los requisitos de las aplicaciones individuales.

Para asegurarnos de que los clientes deben usar conexiones cifradas, debemos habilitar el parámetro "require_secure_transport" en el archivo my.cnf. Por defecto este parámetro está desactivado.

Verificación de las conexiones de la base de datos

De forma predeterminada, el cliente mysql intenta establecer una conexión cifrada si el servidor admite conexiones cifradas, con más control disponible a través de la opción --ssl-mode, por ejemplo,

[[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

El protocolo SSL utiliza diferentes algoritmos de encriptación para asegurar los datos recibidos a través de las redes públicas y privadas. Dispone de mecanismos para detectar cualquier cambio o pérdida de datos.

[[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)

Conclusión 

Cifrar las conexiones de una base de datos no es ni debería ser un gran problema, se hace de forma predeterminada en algunas de las versiones más nuevas de MySQL. A medida que la seguridad de la base de datos se convierte cada vez más en una preocupación empresarial y reglamentaria, hay mucho más en lo que pensar que solo el cifrado de datos en tránsito para proteger su entorno de nube híbrida. Es importante tener en cuenta que se aplican otras capas de seguridad cuando se aloja una base de datos, como la seguridad de la red y del sistema operativo.