Как я могу иметь безопасную установку MongoDB - Mongoose? - PullRequest
0 голосов
/ 08 ноября 2019

Я занимаюсь разработкой приложения Node.js, которое будет использовать MongoDB, и пытаюсь сделать его максимально безопасным.

Аутентификация в базе данных

Сначала я хотел ограничить доступ к базе данных, поэтому я добавил аутентификацию. Так что теперь, в терминале, я должен войти в систему следующим образом:

~$ mongo -u <myusername> -p --authenticationDatabase admin

Но затем, в моем javascript мне пришлось добавить пароль в виде простого текста в следующей строке:

// Connect to the database 
mongoose.connect('mongodb://localhost/<myDB>?authSource=admin', {user: <myusername>, pass: <mypassword>, useNewUrlParser: true, useUnifiedTopology: true}); 

Это беспокоит меня. Это подводит меня к моему первому вопросу: Как я могу иметь ограниченный доступ к моей базе данных, не имея паролей в текстовом виде?


Между Mongoose и MongoDB

Я обнаружил, что Mongoose взаимодействует с MongoDB через TCP / IP. Я запустил Wireshark, чтобы посмотреть, смогу ли я обнаружить данные, и на самом деле я мог: снимок экрана

Внутренняя часть и MongoDB, вероятно, могут быть на 2 разных машинах. Это подводит меня к моему последнему вопросу: я видел на нескольких постах здесь, что иногда было установлено соединение SSH, но это лучший способ защитить связь?

1 Ответ

0 голосов
/ 09 ноября 2019

MongoDB не включает контроль доступа по умолчанию. Запуск экземпляра MongoDB без контроля доступа означает, что любой, кто может подключиться к базе данных, может запускать команды и потенциально видеть все данные в базе данных.

После включения управления доступом, чтобы заставить всех пользователей проходить аутентификацию при подключении к базе данных,Следующим шагом является настройка контроля доступа на основе ролей (RBAC).

Вот контрольный список для безопасности MongoDB: https://docs.mongodb.com/manual/administration/security-checklist/

Это нормально для предоставленных имени пользователя и пароля, даже в других СУБД. Проверьтечасть аутентификации MongoDB здесь: https://docs.mongodb.com/manual/core/authentication/

Также, как вы включаете аутентификацию: https://docs.mongodb.com/manual/tutorial/enable-authentication/

Чтобы ответить на 2-й вопрос о связи, вы можете проверить ссылку, которую я отправил https://docs.mongodb.com/manual/administration/security-checklist/ и goto Encrypt Communication, он использует TLS / SSL для шифрования связи между mongod и mongos.

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...