Поиск по сайту:

Как подключиться к базе данных по сети


При подключении к базе данных вы должны принять дополнительные меры предосторожности, если она не работает локально. Любые соединения по сети должны быть безопасными, и вы никогда не должны оставлять базу данных открытой для того, чтобы кто-либо мог взломать соединение.

Лучшее решение: запускайте свою БД в частной подсети

Подключение через Интернет опасно. Вы никогда не должны просто оставлять свою базу данных открытой для Интернета, так как это просто увеличивает вашу поверхность атаки без всякой причины. При правильной настройке паролей никто не позволит мгновенно вас взломать, но обычно нет необходимости в общедоступной базе данных.

При этом часто архитектурно выгодно, чтобы базы данных работали на отдельных серверах. Отделение вашей базы данных от ваших веб-серверов позволяет вам управлять ею индивидуально. Если вы хотите масштабировать свои веб-серверы или добавить реплики чтения для базы данных, это будет проще сделать, если она будет отдельной.

Запуск его на другом компьютере означает, что вы будете запускать его в какой-то сети. Для этого лучше всего запускать базу данных в частной подсети. Большинство облачных провайдеров, таких как AWS, предлагают возможность сделать определенные серверы частными, чтобы не было публичного IP-адреса. Затем вы можете настроить базу данных для прослушивания частного IP-адреса.

Таким образом, подключения к базе данных осуществляются только внутри вашего VPC или виртуального частного облака. Пользователь подключается к вашему общедоступному веб-серверу, который взаимодействует с базой данных для пользователя, даже не зная адреса сервера базы данных.

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

sudo ufw allow from 172.16.0.0/12 to any port 22

Это заблокирует каждый запрос к вашему серверу, поступающий с общедоступного IP-адреса, эффективно закрывая доступ внешнего мира к серверу, хотя вы, вероятно, захотите оставить SSH каким-то образом открытым для административных целей.

Для удаленного администрирования добавьте IP-адреса в белый список

Если вы хотите получить доступ к базе данных со своего компьютера, вы должны подключиться через Интернет. Самое простое решение сделать это безопасно — просто внести в белый список IP-адрес машины, которую вы используете для администрирования. Это не заменяет пароль, но намного лучше, чем позволять кому-либо угадывать его.

В ufw, брандмауэре по умолчанию в Ubuntu, это можно сделать довольно просто:

sudo ufw allow from 123.123.123.123 to any port 27017

Вы должны убедиться, что у вас нет других правил, разрешающих доступ к этому порту с любого IP-адреса.

Если вы не хотите, чтобы какой-либо трафик шел через Интернет, проблема становится немного сложнее. Вам нужно будет настроить VPN-сервер, такой как OpenVPN, который работает в вашей сети и обеспечивает управляемый доступ к машинам в частных подсетях. Вы можете подключиться к VPN, и ваш компьютер будет работать так, как будто он находится в том же VPC, что и база данных, что даст вам возможность подключаться к нему напрямую через безопасное соединение. Такой способ позволяет полностью заблокировать сервер базы данных в вашей собственной сети, что является огромным преимуществом для безопасности.