Хакеры становятся все более изощренными и знают, как использовать уязвимости. Если у вас есть чувствительные данные в вашей базе данных MongoDB, важно относиться к безопасности серьезно. Но как? Не беспокойтесь! Этот учебник поможет вам в этом!
В этом учебнике вы узнаете, как защитить ваши базы данных MongoDB и отпугнуть хакеров, настраивая средства безопасности.
Продолжайте читать и начните контролировать безопасность вашей MongoDB!
Предварительные требования
- Этот учебник будет практической демонстрацией. Чтобы следовать за ним, убедитесь, что у вас есть следующее:
- MongoDB установлен на вашем Linux-устройстве.
- A non-root user with
sudo
privileges.
Создание отдельного административного пользователя
MongoDB не имеет встроенной системы аутентификации. По умолчанию у кого угодно с доступом к базе данных есть полные административные привилегии — слишком опасно! Как обезопасить вашу базу данных? Вы создадите пользователя с административными привилегиями и ограничите доступ к базам данных этому административному пользователю.
Эта настройка позволяет вам предоставить единую точку доступа пользователю с административными привилегиями, ограничив при этом, что каждый пользователь может делать в базе данных. Например, разработчики должны иметь только чтение баз данных, в то время как администраторы могут создавать и редактировать данные.
1. Откройте ваш терминал и выполните команду mongo
без аргументов. Эта команда позволяет подключиться к оболочке MongoDB как пользователь администратора по умолчанию.
Этот пользователь-администратор мощен, так как у него полный доступ на чтение/запись ко всем базам данных на сервере, и лучше избегать использования этого пользователя для повседневной работы.
Вы получите предупреждение, которое говорит о том, что Управление доступом не включено…, как показано ниже.
Это предупреждение указывает на то, что любой, кто имеет доступ к серверу MongoDB, может выполнять действия, которые они хотят с базами данных. Эти действия включают, но не ограничиваются, удалением, отбрасыванием, обновлением баз данных.
Это предупреждение появляется потому, что вы еще не включили контроль доступа. Не беспокойтесь об этом пока. Вы узнаете, как включить контроль доступа в следующем разделе.

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

3. Запустите команду use admin
ниже, чтобы переключиться на базу данных администратора, поскольку ваша задача состоит в создании отдельного административного пользователя. Эта команда изменяет контекст вашей текущей базы данных для использования базы данных администратора, как показано ниже.
MongoDB использует базу данных admin для хранения прав доступа и обеспечения встроенной аутентификации, имен пользователей и паролей для пользователей и их ролей. Вы не можете удалить или переименовать базу данных admin, потому что она является неотъемлемой частью функциональности базы данных.

4. Теперь скопируйте и вставьте код ниже в оболочку mongo и нажмите Enter. Этот код создает пользователя с именем AdminATA
и паролем LDWbPf6Fy9Ezs3Mv
, но вы можете использовать другие учетные данные по вашему усмотрению.
Этот новый пользователь имеет доступ на чтение/запись (readWriteAnyDatabase
) ко всем базам данных и административный доступ ко всем коллекциям. Но у этого пользователя нет привилегий на удаление баз данных и он не может удалять или изменять привилегии других пользователей.
После выполнения команды, если вы получите ошибку, перепроверьте свой код и попробуйте снова.
5. Предоставьте безопасный пароль по запросу, как показано ниже, и нажмите Enter.

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

6. Наконец, выполните команду exit, чтобы выйти из оболочки mongo.

Добавление безопасности путем включения аутентификации
Теперь, когда у вас есть административный пользователь, вы добавите еще один уровень безопасности, включив аутентификацию. Это дает доступ к базе данных только пользователям с правильными учетными данными.
Аутентификация относится к процессу проверки соединения, обычно путем предоставления имени пользователя и пароля или использования токена аутентификации. Аутентификация гарантирует, что вы тот, за кого себя выдаете, а не импостор, пытающийся получить доступ к ресурсам.
1. Включите аутентификацию, изменив файл конфигурации MongoDB следующим образом и сохраните изменения:
- Откройте файл /etc/mongod.conf в вашем любимом текстовом редакторе. Файл /etc/mongod.conf содержит конфигурацию вашего кластера MongoDB.
- Найдите и раскомментируйте директиву #security, удалив символ # перед директивой, как показано ниже. Эта директива сообщает MongoDB о поиске параметра безопасности в файле конфигурации.
- Добавьте новую строку ниже директивы security, которая говорит authorization: enabled. Обратите внимание, что строка authorization: enabled с отступом (имеет два пробела в начале), как показано ниже.

2. Затем выполните следующую команду systemctl
, чтобы перезапустить сервер MongoDB и внести изменения в действие.
3. Наконец, выполните следующую команду, чтобы просмотреть статус вашей службы MongoDB.
Ниже вы можете увидеть строку, которая говорит Активно: активно (запущено) зелёным текстом, что указывает на то, что ваш сервер MongoDB запущен и готов принимать подключения.

Проверка работоспособности аутентификации
Вы только что включили аутентификацию, но как вы знаете, что она работает? Вы войдете под административным пользователем, чтобы протестировать и убедиться, что ваша аутентификация работает, просматривая базы данных.
1. Запустите следующие команды, чтобы получить доступ к оболочке mongo
, как вы делали в разделе «Создание отдельного административного пользователя» (шаг один).
Как видите ниже, вы больше не получаете Предупреждение: управление доступом не включено… предупреждение о включении аутентификации. Вместо этого вы получите сообщение, которое сообщает вам версию вашего сервера MongoDB и оболочки MongoDB.

2. Затем повторно выполните команду show dbs
, чтобы проверить, можете ли вы по-прежнему получить доступ к базе данных.
Команда должна показать вам все базы данных, даже базу данных admin. Но, как видите ниже, ничего не появляется. Почему? Просмотр списка баз данных является привилегией, зарезервированной только для административных пользователей.
Вы не аутентифицировали вашу оболочку mongo для использования роли Admin, поэтому у вас нет прав на просмотр списка баз данных.

С включенной аутентификацией подключение не удастся, если кто-то попытается получить доступ к базе данных, используя строку подключения, которая не содержит правильных учетных данных.
Аутентификация строк подключения – ключевая часть безопасности MongoDB, и вы должны реализовать аутентификацию на всех уровнях приложения. Все подключения к MongoDB должны использовать строку аутентификации, состоящую из учетных данных. К этих учетных данных относятся правильное имя пользователя и пароль.
3. Выполните команду exit
, чтобы выйти из оболочки MongoDB.
4. Теперь выполните команду ниже, чтобы войти в оболочку MongoDB с именем пользователя вашего только что созданного административного пользователя (-u
) и паролем (-p
). Замените AdminATA
именем пользователя, созданным в разделе “Создание отдельного административного пользователя” (шаг четыре).
Параметр --authenticationDatabase
указывает оболочке MongoDB аутентифицироваться в базе данных admin
.
5. Введите пароль для вашего административного пользователя по запросу.


6. Наконец, повторно выполните команду show dbs
, чтобы попробовать посмотреть, можете ли вы просматривать все базы данных.
На этот раз, как видите ниже, список баз данных появляется, так как вы администратор.

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