SSL е изключително важен за поддържане на поверителността и валидността на вашите данни през ненадеждни мрежи. Ако внедрявате клъстер на производствена база данни в интернет, SSL определено е нещо, което трябва да имате предвид. ScaleGrid вече поддържа активиране на SSL за вашите MongoDB сървъри.
Активирането на SSL вече е толкова лесно, колкото поставянето на отметка в квадратче в съветника за създаване на MongoDB:
Така че защо да използвате SSL с MongoDB?
-
Поверителност
Ако се свързвате с вашия MongoDB сървър през незащитени мрежи, вашите данни пътуват некриптирани и са податливи както на подслушване, така и на подправяне. SSL криптира данните, така че само двете крайни точки имат достъп до нешифрованите данни.
-
Удостоверяване
Използвайте PKI (инфраструктура за частен ключ), за да гарантирате, че само клиенти със сертификати от подходящ CA могат да се свързват със сървъра на MongoDB. Това е допълнителна стъпка и можете да изберете да не използвате вашите персонализирани сертификати или CA – все пак ще имате предимствата на поверителността поради криптиране от край до край.
Недостатъци на MongoDB SSL
-
Резервни разходи за производителност
Определено има някои допълнителни разходи за използване на SSL. Въпреки че тепърва ще провеждаме изчерпателни тестове, има определени допълнителни разходи поради използването на SSL.
-
Липса на потребителски интерфейс на MongoDB
Повечето популярни потребителски интерфейси на MongoDB не поддържат SSL от кутията. Така че може да се наложи да изберете платената версия или да използвате конзолата mongo.
Свързване с вашия сървър MongoDB с активиран SSL
Ако се свързвате към сървър на MongoDB с активиран SSL, има няколко разлики в кода за връзка на MongoDB. Моля, вижте документацията на вашия драйвер за повече подробности.
-
Mongo Shell
По подразбиране mongo клиентът не поддържа връзки към сървър с активиран SSL – имате нужда от SSL активирана компилация на MongoDB. Можете да използвате SSH в сървъра с активиран SSL и след това да използвате mongo клиента на сървъра, за да се свържете. Ето синтаксиса за свързване с помощта на администраторския потребител, предоставен от ScaleGrid:
mongo <span style="color: #758e9f;">--ssl --sslCAFile <file.crt></span> -u admin -p <pass> servername/admin
-
Код
Ще трябва да добавите свойството „ssl=true“ към своя низ за връзка с MongoDB. Освен това някои платформи (напр. JDK) ще изискват от вас да добавите публичния ключ на SSL сертификата към доверения път, преди да можете да се свържете със сървъра. По подразбиране за всеки клъстер се генерира самоподписан сертификат. Можете да изтеглите публичния ключ на SSL сертификата от потребителския интерфейс или можете да изтеглите сертификата от /etc/ssl/mongodb-cert.crt на сървъра. В потребителския интерфейс връзка за изтегляне на публичния SSL сертификат е налична в модалния низ за връзка:
За повече инструкции как можете да SSH в екземпляра, вижте раздела „Идентификационни данни за VM“ в тази публикация в блога. crt файлът се намира в /etc/ssl/mongodb-cert.crt на сървъра. След като изтеглите публичния ключ, ще трябва да го добавите към вашия доверен ключов камък:
keytool -import -alias "MongoDB-cert" -file "/etc/ssl/mongodb-cert.crt" -keystore "/usr/java/default/jre/lib/security/cacerts" -noprompt -storepass "changeit"
Паролата по подразбиране за cacerts store е „changeit“. От съображения за сигурност трябва да промените тази парола на своя собствена. След като добавите сертификата, избройте сертификатите в ключовия камък, за да потвърдите, че сертификатът е добавен:
keytool -list -keystore cacerts -storepass changeit
-
Потребителски интерфейс на Mongo:Robo 3T
Robo 3T (бивш Robomongo) е един от малкото потребителски интерфейси на MongoDB, които поддържат свързване със SSL. Когато създавате връзка с вашия MongoDB сървър, изберете опцията SSL. За сертификата използвайте файла .pem, който има както публичния, така и частния ключ. Този файл се намира в /etc/ssl на вашия MongoDB сървър. Вижте нашето Ръководство за свързване на Robo 3T MongoDB за повече подробности.
Както винаги, ако имате въпроси, моля, свържете се с нас на [email protected].