SSL is uiterst belangrijk om de privacy en geldigheid van uw gegevens over niet-vertrouwde netwerken te behouden. Als u een productiedatabasecluster op internet implementeert, is SSL zeker iets dat u moet overwegen. ScaleGrid ondersteunt nu het inschakelen van SSL voor uw MongoDB-servers.
SSL inschakelen is nu net zo eenvoudig als het aanvinken van een vakje in de wizard voor het maken van MongoDB:
Dus waarom SSL gebruiken met MongoDB?
-
Privacy
Als u verbinding maakt met uw MongoDB-server via onbeveiligde netwerken, reizen uw gegevens niet-versleuteld en zijn ze vatbaar voor zowel afluisteren als knoeien. SSL versleutelt de gegevens, zodat alleen de twee eindpunten toegang hebben tot de niet-versleutelde gegevens.
-
Verificatie
Gebruik PKI (private key infrastructure) om ervoor te zorgen dat alleen clients met certificaten van een geschikte CA verbinding kunnen maken met de MongoDB-server. Dit is een extra stap en u kunt ervoor kiezen om uw aangepaste certificaten of CA niet te gebruiken - u heeft nog steeds de voordelen van privacy dankzij end-to-end-codering.
MongoDB SSL-nadelen
-
Overheadprestaties
Er is zeker wat prestatieoverhead voor het gebruik van SSL. Hoewel we nog geen uitgebreide tests moeten uitvoeren, zijn er duidelijke overheadkosten vanwege het gebruik van SSL.
-
Gebrek aan MongoDB UI
De meeste populaire MongoDB UI's ondersteunen standaard SSL niet. Het kan dus zijn dat je voor de betaalde versie moet gaan of de mongo-console moet gebruiken.
Verbinding maken met uw SSL-geactiveerde MongoDB-server
Als je verbinding maakt met een MongoDB-server met SSL ingeschakeld, zijn er verschillende verschillen in de MongoDB-verbindingscode. Raadpleeg de documentatie van uw chauffeur voor meer informatie.
-
Mongo-schelp
De standaard mongo-client ondersteunt geen verbindingen met een SSL-enabled server - je hebt de SSL-enabled build van MongoDB nodig. U kunt SSH naar de SSL-enabled server sturen en vervolgens de mongo-client op de server gebruiken om verbinding te maken. Hier is de syntaxis om verbinding te maken met de admin-gebruiker die door ScaleGrid wordt geleverd:
mongo <span style="color: #758e9f;">--ssl --sslCAFile <file.crt></span> -u admin -p <pass> servername/admin
-
Code
Je moet de eigenschap "ssl=true" toevoegen aan je MongoDB-verbindingsreeks. Ook vereisen bepaalde platforms (bijv. JDK) dat u de openbare sleutel van het SSL-certificaat aan het vertrouwde pad toevoegt voordat u verbinding kunt maken met de server. Standaard wordt voor elk cluster een zelfondertekend certificaat gegenereerd. U kunt de openbare sleutel van het SSL-certificaat downloaden van de gebruikersinterface of u kunt het certificaat downloaden van /etc/ssl/mongodb-cert.crt op de server. In de gebruikersinterface is een link om het openbare SSL-certificaat te downloaden beschikbaar in de verbindingsreeks modal:
Raadpleeg het gedeelte 'VM-referenties' in deze blogpost voor meer instructies over hoe u SSH kunt gebruiken in de instantie. Het crt-bestand bevindt zich in /etc/ssl/mongodb-cert.crt op de server. Nadat u de openbare sleutel heeft gedownload, moet u deze toevoegen aan uw vertrouwde keystone:
keytool -import -alias "MongoDB-cert" -file "/etc/ssl/mongodb-cert.crt" -keystore "/usr/java/default/jre/lib/security/cacerts" -noprompt -storepass "changeit"
Het standaardwachtwoord voor de cacerts-winkel is "changeit". Om veiligheidsredenen moet u dit wachtwoord wijzigen in uw eigen wachtwoord. Nadat u het certificaat heeft toegevoegd, somt u de certificaten op in de keystone om te bevestigen dat het certificaat is toegevoegd:
keytool -list -keystore cacerts -storepass changeit
-
Mongo-gebruikersinterface:Robo 3T
Robo 3T (voorheen Robomongo) is een van de weinige MongoDB-gebruikersinterface die verbinding met SSL ondersteunt. Wanneer u een verbinding maakt met uw MongoDB-server, selecteert u de SSL-optie. Gebruik voor het certificaat het .pem-bestand dat zowel de openbare sleutel als de persoonlijke sleutel bevat. Dit bestand bevindt zich in /etc/ssl op uw MongoDB-server. Bekijk onze Robo 3T MongoDB-verbindingsgids voor meer details.
Als je vragen hebt, neem dan zoals altijd contact met ons op via [email protected].