sql >> Databasteknik >  >> RDS >> MariaDB

SSL-nyckelhantering och kryptering av MySQL-data under transport

Databaser fungerar vanligtvis i en säker miljö. Det kan vara ett datacenter med ett dedikerat VLAN för databastrafik. Det kan vara en VPC i EC2. Om ditt nätverk sprids över flera datacenter i olika regioner, skulle du vanligtvis använda någon form av virtuellt privat nätverk eller SSH-tunnling för att ansluta dessa platser på ett säkert sätt. Eftersom datasekretess och säkerhet är aktuella ämnen nu för tiden, kanske du mår bättre med ett extra lager av säkerhet.

MySQL stöder SSL som ett sätt att kryptera trafik både mellan MySQL-servrar (replikering) och mellan MySQL-servrar och klienter. Om du använder Galera-kluster finns liknande funktioner tillgängliga - både intra-klusterkommunikation och anslutningar med klienter kan krypteras med SSL.

Ett vanligt sätt att implementera SSL-kryptering är att använda självsignerade certifikat. För det mesta är det inte nödvändigt att köpa ett SSL-certifikat utfärdat av certifikatutfärdaren. Alla som har gått igenom processen att generera ett självsignerat certifikat kommer förmodligen att hålla med om att det inte är den mest enkla processen - för det mesta slutar du med att du söker på internet för att hitta instruktioner och instruktioner om hur du gör detta. Detta gäller särskilt om du är en DBA och bara går igenom denna process med några månaders eller till och med års mellanrum. Det är därför vi har lagt till en ClusterControl-funktion som hjälper dig att hantera SSL-nycklar över ditt databaskluster. I det här blogginlägget kommer vi att använda oss av ClusterControl 1.5.1.

Nyckelhantering i ClusterControl

Du kan gå in i Nyckelhantering genom att gå till Sidomeny -> Nyckelhantering avsnitt.

Du kommer att presenteras med följande skärm:

Du kan se två genererade certifikat, ett är ett CA och det andra ett vanligt certifikat. Om du vill generera fler certifikat byter du till Generera nyckel fliken ':

Ett certifikat kan genereras på två sätt - du kan först skapa en självsignerad CA och sedan använda den för att signera ett certifikat. Eller så kan du gå direkt till "Client/Server Certificates and Key ' och skapa ett certifikat. Den nödvändiga CA kommer att skapas åt dig i bakgrunden. Sist men inte minst kan du importera ett befintligt certifikat (till exempel ett certifikat du köpt från ett av många företag som säljer SSL-certifikat).

För att göra det bör du ladda upp ditt certifikat, nyckel och CA till din ClusterControl-nod och lagra dem i katalogen /var/lib/cmon/ca. Sedan fyller du i sökvägarna till dessa filer och certifikatet kommer att importeras.

Om du bestämde dig för att generera en CA eller generera ett nytt certifikat, finns det ett annat formulär att fylla i - du måste skicka information om din organisation, vanligt namn, e-post, välja nyckellängd och utgångsdatum.

När du har allt på plats kan du börja använda dina nya certifikat. ClusterControl stöder för närvarande distribution av SSL-kryptering mellan klienter och MySQL-databaser och SSL-kryptering av intra-klustertrafik i Galera Cluster. Vi planerar att utöka utbudet av stödda implementeringar i framtida versioner av ClusterControl.

Fullständig SSL-kryptering för Galera Cluster

Låt oss nu anta att vi har våra SSL-nycklar redo och att vi har ett Galera Cluster, som behöver SSL-kryptering, distribuerat via vår ClusterControl-instans. Vi kan enkelt säkra den i två steg.

Först - kryptera Galera-trafik med SSL. Från din klustervy är en av klusteråtgärderna "Aktivera SSL Galera Encryption '. Du kommer att presenteras med följande alternativ:

Om du inte har ett certifikat kan du generera det här. Men om du redan har genererat eller importerat ett SSL-certifikat bör du kunna se det i listan och använda det för att kryptera Galera-replikeringstrafik. Kom ihåg att den här operationen kräver omstart av kluster - alla noder måste stoppas samtidigt, tillämpa konfigurationsändringar och sedan starta om. Innan du fortsätter här, se till att du är beredd på lite driftstopp medan klustret startar om.

När intra-klustertrafik har säkrats vill vi täcka klient-server-anslutningar. För att göra det, välj "Aktivera SSL-kryptering ' jobb och du kommer att se följande dialogruta:

Det är ganska likt - du kan antingen välja ett befintligt certifikat eller skapa ett nytt. Den största skillnaden är att för att tillämpa klient-server-kryptering krävs inte driftstopp - en rullande omstart räcker. När du har startat om hittar du en låsikon precis under den krypterade värden på Översikt sida:

Etiketten "Galera ' betyder att Galera-kryptering är aktiverad, medan 'SSL ' betyder klient-serverkryptering är aktiverad för den specifika värden.

Naturligtvis räcker det inte att aktivera SSL på databasen - du måste kopiera certifikat till klienter som ska använda SSL för att ansluta till databasen. Alla certifikat kan hittas i katalogen /var/lib/cmon/ca på ClusterControl-noden. Du måste också komma ihåg att ändra anslag för användare och se till att du har lagt till REQUIRE SSL till dem om du bara vill upprätthålla säkra anslutningar.

Vi hoppas att du kommer att finna dessa alternativ lätta att använda och hjälpa dig att säkra din MySQL-miljö. Om du har några frågor eller förslag angående den här funktionen vill vi gärna höra från dig.


  1. Hur skickar jag sqlparameter till IN()?

  2. Fungerar funktionen snabbare utan STRICT modifierare?

  3. Finns det en prestandaskillnad mellan CTE , Sub-Query, Temporary tabell eller Tabellvariabel?

  4. operation inte tillåten när objektet är stängt när mer avancerad fråga körs