Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment chiffrer le trafic de la base de données de cloud hybride

Un environnement de base de données sécurisé est difficile à réaliser, mais extrêmement important pour éviter les violations de données, les ransomwares et autres activités malveillantes. La sécurité des données est une priorité absolue d'un point de vue commercial. Lors de l'exécution dans un centre de données privé, votre réseau est généralement la première couche de défense. Mais dans un environnement cloud de bases de données hybrides distribuées, où les parties internes de la topologie de la base de données ainsi que les applications sont réparties entre les centres de données, le réseau représente une plus grande surface de connexion. Le chiffrement du trafic de données en transit est l'une des mesures courantes de protection contre l'écoute clandestine du réseau. Dans ce blog, nous verrons comment chiffrer le trafic de la base de données mysql du cloud hybride.

Pourquoi avons-nous besoin de chiffrer le trafic de la base de données ?

La principale raison est que les connexions entre les instances de base de données et toutes les applications clientes doivent être chiffrées et garantir uniquement les communications autorisées. Cette couche de sécurité peut empêcher les fuites de données sensibles indésirables ou exclure la possibilité de toute attaque par injection SQL, etc. Les données en transit peuvent également signifier le trafic de réplication entre les nœuds de la base de données ou le trafic entre les équilibreurs de charge/proxy et les instances de la base de données.

 

Activer SSL sur les nœuds MySQL 

Les nouvelles versions de MySQL sont livrées avec des certificats auto-signés et SSL activé. D'autre part, si vous souhaitez ajouter une autre couche de sécurité, vous pouvez utiliser vos propres certificats, ClusterControl vous permet de modifier le certificat SSL. Dans ce blog, nous avons expliqué comment procéder à l'aide de ClusterControl.

Activer SSL sur les clients 

MySQL effectue le chiffrement connexion par connexion, et l'utilisation du chiffrement pour un utilisateur donné peut être facultative ou obligatoire. Pour vous connecter aux nœuds mysql via SSL, assurez-vous d'avoir configuré l'octroi de l'utilisateur avec la syntaxe "REQUIRE SSL", similaire à ci-dessous :

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)

Cela vous permet de choisir une connexion cryptée ou non cryptée selon les exigences des applications individuelles.

Pour garantir que les clients doivent utiliser des connexions chiffrées, nous devons activer le paramètre "require_secure_transport" dans le fichier my.cnf. Par défaut, ce paramètre est désactivé.

Vérifier les connexions à la base de données

Par défaut, le client mysql tente d'établir une connexion cryptée si le serveur prend en charge les connexions cryptées, avec un contrôle supplémentaire disponible via l'option --ssl-mode par exemple,

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

Le protocole SSL utilise différents algorithmes de cryptage pour garantir les données reçues sur les réseaux publics et privés. Il dispose de mécanismes pour détecter toute modification ou perte de données.

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

Conclusion 

Chiffrer une connexion à une base de données n'est pas et ne devrait pas être un gros problème, cela se fait par défaut dans certaines des nouvelles versions de MySQL. Alors que la sécurité des bases de données devient une préoccupation commerciale et réglementaire de plus en plus importante, il faut penser à bien plus que le simple chiffrement des données en transit pour sécuriser votre environnement de cloud hybride. Il est important de garder à l'esprit que d'autres couches de sécurité s'appliquent lors de l'hébergement d'une base de données, telles que la sécurité du réseau et du système d'exploitation.