Databases werken meestal in een beveiligde omgeving. Het kan een datacenter zijn met een dedicated VLAN voor databaseverkeer. Het kan een VPC in EC2 zijn. Als uw netwerk zich verspreidt over meerdere datacenters in verschillende regio's, gebruikt u meestal een soort Virtual Private Network of SSH-tunneling om deze locaties op een veilige manier met elkaar te verbinden. Omdat gegevensprivacy en beveiliging tegenwoordig hot topics zijn, voelt u zich misschien beter met een extra beveiligingslaag.
MySQL ondersteunt SSL als middel om verkeer zowel tussen MySQL-servers (replicatie) als tussen MySQL-servers en clients te versleutelen. Als u Galera-cluster gebruikt, zijn vergelijkbare functies beschikbaar - zowel communicatie binnen het cluster als verbindingen met clients kunnen worden versleuteld met SSL.
Een veelgebruikte manier om SSL-codering te implementeren, is door zelfondertekende certificaten te gebruiken. Meestal is het niet nodig om een SSL-certificaat aan te schaffen dat is uitgegeven door de certificeringsinstantie. Iedereen die het proces van het genereren van een zelfondertekend certificaat heeft doorlopen, zal het er waarschijnlijk mee eens zijn dat dit niet het meest eenvoudige proces is - meestal zoek je uiteindelijk op internet naar howto's en instructies om dit te doen. Dit geldt vooral als u een DBA bent en dit proces slechts om de paar maanden of zelfs jaren doorloopt. Daarom hebben we een ClusterControl-functie toegevoegd om u te helpen bij het beheren van SSL-sleutels in uw databasecluster. In deze blogpost maken we gebruik van ClusterControl 1.5.1.
Sleutelbeheer in de ClusterControl
U kunt Sleutelbeheer openen door naar Zijmenu -> Sleutelbeheer . te gaan sectie.
U krijgt het volgende scherm te zien:
U kunt zien dat er twee certificaten zijn gegenereerd, waarvan de ene een CA is en de andere een regulier certificaat. Om meer certificaten te genereren, schakelt u over naar de 'Sleutel genereren ’ tabblad:
Een certificaat kan op twee manieren worden gegenereerd:u kunt eerst een zelfondertekende CA maken en deze vervolgens gebruiken om een certificaat te ondertekenen. Of u kunt direct naar de 'Client/Server Certificaten en Sleutel . gaan ’ en maak een certificaat aan. De benodigde CA wordt op de achtergrond voor u aangemaakt. Last but not least kunt u een bestaand certificaat importeren (bijvoorbeeld een certificaat dat u hebt gekocht bij een van de vele bedrijven die SSL-certificaten verkopen).
Om dat te doen, moet u uw certificaat, sleutel en CA uploaden naar uw ClusterControl-knooppunt en ze opslaan in de map /var/lib/cmon/ca. Vervolgens vult u de paden naar die bestanden in en het certificaat wordt geïmporteerd.
Als u heeft besloten een CA te genereren of een nieuw certificaat te genereren, moet u nog een formulier invullen:u moet details over uw organisatie, algemene naam, e-mail, sleutellengte en vervaldatum doorgeven.
Zodra u alles op orde heeft, kunt u uw nieuwe certificaten gaan gebruiken. ClusterControl ondersteunt momenteel de implementatie van SSL-codering tussen clients en MySQL-databases en SSL-codering van intra-clusterverkeer in Galera Cluster. We zijn van plan om de verscheidenheid aan ondersteunde implementaties uit te breiden in toekomstige releases van ClusterControl.
Volledige SSL-encryptie voor Galera Cluster
Laten we nu aannemen dat we onze SSL-sleutels gereed hebben en dat we een Galera-cluster hebben, die SSL-codering nodig heeft, geïmplementeerd via onze ClusterControl-instantie. We kunnen het gemakkelijk in twee stappen beveiligen.
Ten eerste - versleutel Galera-verkeer met SSL. Vanuit uw clusterweergave is een van de clusteracties 'SSL Galera-codering inschakelen '. U krijgt de volgende opties te zien:
Als u geen certificaat heeft, kunt u dit hier genereren. Maar als je al een SSL-certificaat hebt gegenereerd of geïmporteerd, zou je het in de lijst moeten kunnen zien en het kunnen gebruiken om Galera-replicatieverkeer te versleutelen. Houd er rekening mee dat voor deze bewerking een cluster opnieuw moet worden opgestart - alle knooppunten moeten tegelijkertijd stoppen, configuratiewijzigingen toepassen en vervolgens opnieuw opstarten. Voordat u hier verder gaat, moet u ervoor zorgen dat u voorbereid bent op enige uitvaltijd terwijl het cluster opnieuw wordt opgestart.
Zodra intra-clusterverkeer is beveiligd, willen we client-serververbindingen afdekken. Kies hiervoor 'SSL-codering inschakelen ' job en je ziet het volgende dialoogvenster:
Het is vrij gelijkaardig - u kunt een bestaand certificaat kiezen of een nieuw certificaat genereren. Het belangrijkste verschil is dat voor het toepassen van client-server-encryptie geen downtime nodig is - een rollende herstart is voldoende. Eenmaal opnieuw opgestart, vindt u een slotpictogram direct onder de gecodeerde host op het Overzicht pagina:
Het label 'Galera ' betekent dat Galera-codering is ingeschakeld, terwijl 'SSL ' betekent dat client-server-encryptie is ingeschakeld voor die specifieke host.
Het inschakelen van SSL op de database is natuurlijk niet voldoende - u moet certificaten kopiëren naar clients die SSL zouden moeten gebruiken om verbinding te maken met de database. Alle certificaten zijn te vinden in de map /var/lib/cmon/ca op het ClusterControl-knooppunt. Je moet er ook aan denken om subsidies voor gebruikers te wijzigen en ervoor te zorgen dat je SSL VEREIST aan hen hebt toegevoegd als je alleen beveiligde verbindingen wilt afdwingen.
We hopen dat u deze opties gebruiksvriendelijk zult vinden en u zult helpen uw MySQL-omgeving te beveiligen. Als je vragen of suggesties hebt met betrekking tot deze functie, horen we graag van je.