Databaser fungerer normalt i et sikkert miljø. Det kan være et datacenter med et dedikeret VLAN til databasetrafik. Det kan være en VPC i EC2. Hvis dit netværk spredes på tværs af flere datacentre i forskellige regioner, vil du normalt bruge en slags Virtual Private Network eller SSH-tunneling til at forbinde disse steder på en sikker måde. Da databeskyttelse og sikkerhed er hotte emner i disse dage, føler du dig måske bedre med et ekstra lag af sikkerhed.
MySQL understøtter SSL som et middel til at kryptere trafik både mellem MySQL-servere (replikering) og mellem MySQL-servere og klienter. Hvis du bruger Galera cluster, er lignende funktioner tilgængelige - både intra-cluster kommunikation og forbindelser med klienter kan krypteres ved hjælp af SSL.
En almindelig måde at implementere SSL-kryptering på er at bruge selvsignerede certifikater. Det meste af tiden er det ikke nødvendigt at købe et SSL-certifikat udstedt af certifikatmyndigheden. Enhver, der har været igennem processen med at generere et selvsigneret certifikat, vil sandsynligvis være enige i, at det ikke er den mest ligetil proces - det meste af tiden ender du med at søge på internettet for at finde howto's og instruktioner om, hvordan du gør dette. Dette gælder især, hvis du er DBA og kun gennemgår denne proces med få måneders eller endda års mellemrum. Det er derfor, vi tilføjede en ClusterControl-funktion til at hjælpe dig med at administrere SSL-nøgler på tværs af din databaseklynge. I dette blogindlæg vil vi gøre brug af ClusterControl 1.5.1.
Nøglestyring i ClusterControl
Du kan gå ind i Nøglestyring ved at gå til Sidemenu -> Nøglestyring afsnit.
Du vil blive præsenteret for følgende skærmbillede:
Du kan se to certifikater genereret, det ene er et CA og det andet et almindeligt certifikat. For at generere flere certifikater skal du skifte til 'Generer nøgle ' fane:
Et certifikat kan genereres på to måder - du kan først oprette en selvsigneret CA og derefter bruge den til at underskrive et certifikat. Eller du kan gå direkte til "Client/Server Certificates and Key ' fanen og opret et certifikat. Den nødvendige CA vil blive oprettet til dig i baggrunden. Sidst, men ikke mindst, kan du importere et eksisterende certifikat (f.eks. et certifikat, du har købt fra en af mange virksomheder, der sælger SSL-certifikater).
For at gøre det skal du uploade dit certifikat, din nøgle og dit CA til din ClusterControl node og gemme dem i mappen /var/lib/cmon/ca. Så udfylder du stierne til disse filer, og certifikatet vil blive importeret.
Hvis du besluttede at generere en CA eller generere et nyt certifikat, er der en anden formular at udfylde - du skal videregive oplysninger om din organisation, almindeligt navn, e-mail, vælge nøglelængde og udløbsdato.
Når du har alt på plads, kan du begynde at bruge dine nye certifikater. ClusterControl understøtter i øjeblikket implementering af SSL-kryptering mellem klienter og MySQL-databaser og SSL-kryptering af intra-cluster-trafik i Galera Cluster. Vi planlægger at udvide rækken af understøttede implementeringer i fremtidige udgivelser af ClusterControl.
Fuld SSL-kryptering til Galera Cluster
Lad os nu antage, at vi har vores SSL-nøgler klar, og vi har en Galera Cluster, som har brug for SSL-kryptering, implementeret gennem vores ClusterControl-instans. Vi kan nemt sikre det i to trin.
Først - krypter Galera-trafik ved hjælp af SSL. Fra din klyngevisning er en af klyngehandlingerne 'Aktiver SSL Galera-kryptering '. Du vil blive præsenteret for følgende muligheder:
Hvis du ikke har et certifikat, kan du generere det her. Men hvis du allerede har genereret eller importeret et SSL-certifikat, bør du være i stand til at se det på listen og bruge det til at kryptere Galera-replikeringstrafik. Husk, at denne operation kræver en klynge-genstart - alle noder skal stoppe på samme tid, anvende konfigurationsændringer og derefter genstarte. Før du fortsætter her, skal du sørge for, at du er forberedt på noget nedetid, mens klyngen genstarter.
Når intra-klyngetrafik er blevet sikret, ønsker vi at dække klient-server-forbindelser. For at gøre det skal du vælge "Aktiver SSL-kryptering ’ job, og du vil se følgende dialogboks:
Det er ret ens - du kan enten vælge et eksisterende certifikat eller generere et nyt. Den største forskel er, at for at anvende klient-server-kryptering er nedetid ikke påkrævet - en rullende genstart vil være tilstrækkelig. Når den er genstartet, vil du finde et låseikon lige under den krypterede vært på Oversigt side:
Etiketten 'Galera ' betyder, at Galera-kryptering er aktiveret, mens 'SSL ' betyder, at klient-server-kryptering er aktiveret for den pågældende vært.
Det er selvfølgelig ikke nok at aktivere SSL på databasen - du skal kopiere certifikater til klienter, som formodes at bruge SSL for at oprette forbindelse til databasen. Alle certifikater kan findes i mappen /var/lib/cmon/ca på ClusterControl-noden. Du skal også huske at ændre bevillinger til brugere og sørge for, at du har tilføjet REQUIRE SSL til dem, hvis du kun vil håndhæve sikre forbindelser.
Vi håber, at du vil finde disse muligheder nemme at bruge og hjælpe dig med at sikre dit MySQL-miljø. Hvis du har spørgsmål eller forslag vedrørende denne funktion, hører vi meget gerne fra dig.