SSL jest niezwykle ważny dla zachowania prywatności i ważności danych w niezaufanych sieciach. Jeśli wdrażasz produkcyjny klaster baz danych w Internecie, zdecydowanie powinieneś rozważyć SSL. ScaleGrid obsługuje teraz włączanie SSL dla serwerów MongoDB.
Włączenie SSL jest teraz tak proste, jak zaznaczenie pola w kreatorze tworzenia MongoDB:
Dlaczego więc używać SSL z MongoDB?
-
Prywatność
Jeśli łączysz się z serwerem MongoDB przez niezabezpieczone sieci, Twoje dane są przesyłane w postaci niezaszyfrowanej i mogą być zarówno podsłuchiwane, jak i manipulowane. SSL szyfruje dane, więc tylko dwa punkty końcowe mają dostęp do niezaszyfrowanych danych.
-
Uwierzytelnianie
Użyj PKI (infrastruktury kluczy prywatnych), aby mieć pewność, że tylko klienci z certyfikatami z odpowiedniego urzędu certyfikacji mogą łączyć się z serwerem MongoDB. Jest to dodatkowy krok i możesz zrezygnować z używania niestandardowych certyfikatów lub CA – nadal będziesz korzystać z prywatności dzięki kompleksowemu szyfrowaniu.
Wady protokołu SSL MongoDB
-
Ogólne wyniki
Z pewnością korzystanie z SSL wiąże się z pewnym obciążeniem wydajnością. Chociaż nie przeprowadziliśmy jeszcze kompleksowych testów, korzystanie z SSL wiąże się z pewnym obciążeniem.
-
Brak interfejsu użytkownika MongoDB
Większość popularnych interfejsów użytkownika MongoDB nie obsługuje SSL po wyjęciu z pudełka. Być może będziesz musiał wybrać wersję płatną lub skorzystać z konsoli mongo.
Łączenie z serwerem MongoDB z obsługą SSL
Jeśli łączysz się z serwerem MongoDB z włączonym SSL, istnieje kilka różnic w kodzie połączenia MongoDB. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją kierowcy.
-
Muszla Mongo
Domyślny klient mongo nie obsługuje połączeń z serwerem z włączoną obsługą SSL – potrzebujesz kompilacji MongoDB z włączoną obsługą SSL. Możesz SSH do serwera z włączonym SSL, a następnie użyć klienta mongo na serwerze do połączenia. Oto składnia połączenia przy użyciu administratora dostarczonego przez ScaleGrid:
mongo <span style="color: #758e9f;">--ssl --sslCAFile <file.crt></span> -u admin -p <pass> servername/admin
-
Kod
Musisz dołączyć właściwość „ssl=true” do ciągu połączenia MongoDB. Ponadto niektóre platformy (np. JDK) będą wymagać dodania klucza publicznego certyfikatu SSL do zaufanej ścieżki przed połączeniem się z serwerem. Domyślnie dla każdego klastra generowany jest certyfikat samopodpisany. Możesz pobrać klucz publiczny certyfikatu SSL z interfejsu użytkownika lub możesz pobrać certyfikat z /etc/ssl/mongodb-cert.crt na serwerze. W interfejsie użytkownika link do pobrania publicznego certyfikatu SSL jest dostępny w modalnym ciągu połączenia:
Więcej instrukcji na temat łączenia się przez SSH z instancją znajdziesz w sekcji „Poświadczenia maszyn wirtualnych” w tym poście na blogu. Plik crt znajduje się w /etc/ssl/mongodb-cert.crt na serwerze. Po pobraniu klucza publicznego musisz dodać go do zaufanego klucza:
keytool -import -alias "MongoDB-cert" -file "/etc/ssl/mongodb-cert.crt" -keystore "/usr/java/default/jre/lib/security/cacerts" -noprompt -storepass "changeit"
Domyślne hasło do sklepu cacerts to „changeit”. Ze względów bezpieczeństwa należy zmienić to hasło na własne. Po dodaniu certyfikatu wylicz certyfikaty w keystone, aby potwierdzić, że certyfikat został dodany:
keytool -list -keystore cacerts -storepass changeit
-
Interfejs użytkownika Mongo:Robo 3T
Robo 3T (dawniej Robomongo) to jeden z niewielu interfejsów użytkownika MongoDB obsługujących łączenie z SSL. Podczas tworzenia połączenia z serwerem MongoDB wybierz opcję SSL. W przypadku certyfikatu użyj pliku .pem, który zawiera zarówno klucz publiczny, jak i klucz prywatny. Ten plik znajduje się w /etc/ssl na twoim serwerze MongoDB. Sprawdź nasz przewodnik połączenia Robo 3T MongoDB, aby uzyskać więcej informacji.
Jak zawsze, jeśli masz jakieś pytania, skontaktuj się z nami pod adresem [email protected].