Les bases de données fonctionnent généralement dans un environnement sécurisé. Il peut s'agir d'un centre de données avec un VLAN dédié pour le trafic de la base de données. Il peut s'agir d'un VPC dans EC2. Si votre réseau s'étend sur plusieurs centres de données dans différentes régions, vous utiliserez généralement une sorte de réseau privé virtuel ou de tunnel SSH pour connecter ces emplacements de manière sécurisée. La confidentialité et la sécurité des données étant des sujets d'actualité de nos jours, vous vous sentirez peut-être mieux avec une couche de sécurité supplémentaire.
MySQL prend en charge SSL comme moyen de crypter le trafic à la fois entre les serveurs MySQL (réplication) et entre les serveurs MySQL et les clients. Si vous utilisez le cluster Galera, des fonctionnalités similaires sont disponibles :la communication intra-cluster et les connexions avec les clients peuvent être cryptées à l'aide de SSL.
Une manière courante d'implémenter le cryptage SSL consiste à utiliser des certificats auto-signés. La plupart du temps, il n'est pas nécessaire d'acheter un certificat SSL émis par l'autorité de certification. Quiconque est passé par le processus de génération d'un certificat auto-signé conviendra probablement que ce n'est pas le processus le plus simple - la plupart du temps, vous finissez par chercher sur Internet pour trouver des instructions et des instructions sur la façon de le faire. Cela est particulièrement vrai si vous êtes un administrateur de base de données et que vous ne suivez ce processus que tous les quelques mois, voire plusieurs années. C'est pourquoi nous avons ajouté une fonctionnalité ClusterControl pour vous aider à gérer les clés SSL dans votre cluster de base de données. Dans cet article de blog, nous utiliserons ClusterControl 1.5.1.
Gestion des clés dans le ClusterControl
Vous pouvez accéder à la gestion des clés en allant dans Menu latéral -> Gestion des clés rubrique.
L'écran suivant s'affichera :
Vous pouvez voir deux certificats générés, l'un étant une autorité de certification et l'autre un certificat normal. Pour générer plus de certificats, passez à l'option "Générer une clé ' onglet :
Un certificat peut être généré de deux manières :vous pouvez d'abord créer une autorité de certification auto-signée, puis l'utiliser pour signer un certificat. Ou vous pouvez accéder directement à la section "Client/Server Certificates and Key ’ et créez un certificat. L'autorité de certification requise sera créée pour vous en arrière-plan. Enfin, vous pouvez importer un certificat existant (par exemple, un certificat que vous avez acheté auprès de l'une des nombreuses sociétés qui vendent des certificats SSL).
Pour ce faire, vous devez télécharger votre certificat, votre clé et votre autorité de certification sur votre nœud ClusterControl et les stocker dans le répertoire /var/lib/cmon/ca. Ensuite, vous remplissez les chemins d'accès à ces fichiers et le certificat sera importé.
Si vous avez décidé de générer une autorité de certification ou de générer un nouveau certificat, il y a un autre formulaire à remplir - vous devez transmettre des détails sur votre organisation, votre nom commun, votre adresse e-mail, choisir la longueur de la clé et la date d'expiration.
Une fois que tout est en place, vous pouvez commencer à utiliser vos nouveaux certificats. ClusterControl prend actuellement en charge le déploiement du cryptage SSL entre les clients et les bases de données MySQL et le cryptage SSL du trafic intra-cluster dans Galera Cluster. Nous prévoyons d'étendre la variété des déploiements pris en charge dans les futures versions de ClusterControl.
Cryptage SSL complet pour Galera Cluster
Supposons maintenant que nos clés SSL soient prêtes et que nous ayons un cluster Galera, qui nécessite un cryptage SSL, déployé via notre instance ClusterControl. Nous pouvons facilement le sécuriser en deux étapes.
Tout d'abord - cryptez le trafic Galera à l'aide de SSL. Depuis votre vue de cluster, l'une des actions de cluster est 'Activer le chiffrement SSL Galera '. Les options suivantes s'afficheront :
Si vous n'avez pas de certificat, vous pouvez le générer ici. Mais si vous avez déjà généré ou importé un certificat SSL, vous devriez pouvoir le voir dans la liste et l'utiliser pour chiffrer le trafic de réplication Galera. Veuillez garder à l'esprit que cette opération nécessite un redémarrage du cluster - tous les nœuds devront s'arrêter en même temps, appliquer les modifications de configuration, puis redémarrer. Avant de continuer ici, assurez-vous que vous êtes prêt pour un certain temps d'arrêt pendant le redémarrage du cluster.
Une fois le trafic intra-cluster sécurisé, nous voulons couvrir les connexions client-serveur. Pour ce faire, sélectionnez "Activer le cryptage SSL ' et vous verrez la boîte de dialogue suivante :
C'est assez similaire - vous pouvez choisir un certificat existant ou en générer un nouveau. La principale différence est que pour appliquer le chiffrement client-serveur, aucun temps d'arrêt n'est requis - un redémarrage progressif suffira. Une fois redémarré, vous trouverez une icône de verrouillage juste sous l'hôte chiffré sur la Présentation page :
Le label 'Galera ' signifie que le cryptage Galera est activé, tandis que 'SSL ' signifie que le chiffrement client-serveur est activé pour cet hôte particulier.
Bien sûr, activer SSL sur la base de données ne suffit pas - vous devez copier les certificats sur les clients censés utiliser SSL pour se connecter à la base de données. Tous les certificats se trouvent dans le répertoire /var/lib/cmon/ca sur le nœud ClusterControl. Vous devez également vous rappeler de modifier les autorisations pour les utilisateurs et de vous assurer que vous leur avez ajouté REQUIRE SSL si vous souhaitez appliquer uniquement des connexions sécurisées.
Nous espérons que vous trouverez ces options faciles à utiliser et qu'elles vous aideront à sécuriser votre environnement MySQL. Si vous avez des questions ou des suggestions concernant cette fonctionnalité, nous serions ravis de vous entendre.