sql >> Databasteknik >  >> RDS >> Database

Säkra dina Mongo-kluster med SSL

SSL är extremt viktigt för att upprätthålla integriteten och giltigheten för dina data över opålitliga nätverk. Om du distribuerar ett produktionsdatabaskluster på internet är SSL definitivt något du bör överväga. ScaleGrid stöder nu aktivering av SSL för dina MongoDB-servrar.

Att aktivera SSL är nu lika enkelt som att markera en ruta i MongoDB-skapningsguiden:

Så varför använda SSL med MongoDB?

  1. Sekretess

    Om du ansluter till din MongoDB-server över osäkra nätverk, färdas din data okrypterad och är känslig för både avlyssning och manipulering. SSL krypterar data så att endast de två slutpunkterna har tillgång till okrypterad data.

  2. Autentisering

    Använd  PKI (privat nyckelinfrastruktur) för att säkerställa att endast klienter med certifikat från en lämplig CA kan ansluta till MongoDB-servern. Detta är ett ytterligare steg och du kan välja att inte använda dina anpassade certifikat eller CA – du kommer fortfarande att ha fördelarna med integritet tack vare end-to-end-kryptering.

Nackdelar med MongoDB SSL

  • Prestanda omkostnader

    Det finns definitivt vissa prestandakostnader för att använda SSL. Även om vi ännu inte har kört heltäckande tester, finns det tydliga omkostnader på grund av att vi använder SSL.

  • Brist på MongoDB UI

    De flesta av de populära MongoDB-gränssnitten stöder inte SSL direkt. Så du kanske måste välja den betalda versionen eller använda mongo-konsolen.

Ansluter till din SSL-aktiverade MongoDB-server

Om du ansluter till en MongoDB-server med SSL aktiverat finns det flera skillnader i MongoDB-anslutningskoden. Se dokumentationen för din förare för mer information.

  1. Mongo Shell

    Mongo-standardklienten stöder inte anslutningar till en SSL-aktiverad server – du behöver den SSL-aktiverade konstruktionen av MongoDB. Du kan SSH till den SSL-aktiverade servern och sedan använda mongo-klienten på servern för att ansluta. Här är syntaxen för att ansluta med adminanvändaren från ScaleGrid:

    mongo <span style="color: #758e9f;">--ssl --sslCAFile <file.crt></span> -u admin -p <pass> servername/admin 
    
    
  2. Kod

    Du måste lägga till egenskapen "ssl=true" till din MongoDB-anslutningssträng. Vissa plattformar (t.ex. JDK) kräver också att du lägger till den offentliga nyckeln för SSL-certifikatet till den betrodda sökvägen innan du kan ansluta till servern. Som standard genereras ett självsignerat certifikat för varje kluster. Du kan ladda ner den offentliga nyckeln för SSL-certifikatet från användargränssnittet eller så kan du ladda ner certifikatet från /etc/ssl/mongodb-cert.crt på servern. I användargränssnittet finns en länk för att ladda ner det offentliga SSL-certifikatet i anslutningssträngen:

    För mer instruktioner om hur du kan SSH in i instansen, se avsnittet "VM-uppgifter" i det här blogginlägget. Crt-filen finns på /etc/ssl/mongodb-cert.crt på servern. När du har laddat ner den offentliga nyckeln måste du lägga till den i din betrodda keystone:

    keytool -import -alias "MongoDB-cert" -file "/etc/ssl/mongodb-cert.crt"
    -keystore "/usr/java/default/jre/lib/security/cacerts"
    -noprompt -storepass "changeit"
    

    Standardlösenordet för cacerts-butiken är "changeit". Av säkerhetsskäl bör du ändra detta lösenord till ditt eget. När du har lagt till certifikatet, räkna upp certifikaten i keystone för att bekräfta att certifikatet har lagts till:

    keytool -list -keystore cacerts -storepass changeit
    
  3. Mongo UI:Robo 3T

    Robo 3T (tidigare Robomongo) är ett av få MongoDB-gränssnitt som stöder anslutning med SSL. När du skapar en anslutning till din MongoDB-server, välj alternativet SSL. För certifikatet, använd .pem-filen som har både den offentliga nyckeln och den privata nyckeln. Den här filen finns på /etc/ssl på din MongoDB-server. Kolla in vår Robo 3T MongoDB Connection Guide för mer information.

Som alltid, om du har några frågor, vänligen kontakta oss på [email protected].


  1. Lägg till ny RAC-instans manuellt

  2. Hur man väljer ett visst antal tecken från vänster eller höger om en sträng i SQL Server

  3. IN vs OR för Oracle, vilket snabbare?

  4. TABLOCK vs TABLOCKX