Как создать пользователя и добавить роль в MongoDB
⚡ Умное резюме
Создание пользователя и добавление роли в MongoDB Этот метод использует db.createUser() для определения учетных данных, назначения встроенных ролей и ограничения привилегий для конкретных баз данных, что усиливает контроль доступа как для административных, так и для учетных записей, работающих с одной базой данных.
Что такое встроенные роли в MongoDB?
Прежде чем создавать учетную запись, полезно ознакомиться со встроенными ролями, которые она предоставляет. MongoDB Роль представляет собой именованный набор привилегий, и каждая привилегия связывает ресурс (базу данных или коллекцию) с разрешенными для него действиями. Таким образом, назначение роли при создании пользователя точно определяет, что может делать эта учетная запись.
MongoDB Встроенные роли базы данных подразделяются на роли пользователей, роли администраторов базы данных, роли администраторов кластера, роли резервного копирования и восстановления, а также роли суперпользователей. В таблице ниже приведено краткое описание ролей, наиболее часто используемых при управлении пользователями:
| Роли | Категория | Предоставленные привилегии |
|---|---|---|
| читать | Пользователь базы данных | Доступ только для чтения ко всем несистемным коллекциям в базе данных. |
| читатьЗапись | Пользователь базы данных | Доступ на чтение, а также операции вставки, обновления и удаления данных в коллекциях. |
| dbAdmin | Администратор базы данных | Управление схемой, индексированием и статистикой базы данных. |
| пользовательАдминистратор | Администратор базы данных | Создавайте и изменяйте пользователей и роли в единой базе данных. |
| userAdminAnyDatabase | Суперпользователь | Администрирование пользователей во всех базах данных в рамках данного экземпляра. |
| корень | Суперпользователь | Полный доступ ко всем ресурсам и операциям. |
MongoDB Создать пользователя-администратора
Создание администратора пользователя в MongoDB делается с помощью метода createUser. Следующий пример показывает, как это можно сделать.
db.createUser(
{ user: "Guru99",
pwd: "password",
roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Code Объяснение:
- Первым шагом является указание «имени пользователя» и «пароля», которые необходимо создать.
- Второй шаг — назначение роли пользователю. Поскольку это должен быть администратор базы данных, мы назначили ему роль «userAdminAnyDatabase». Эта роль предоставляет пользователю административные привилегии ко всем базам данных. MongoDB.
- Параметр db указывает на административную базу данных, которая представляет собой специальную метабазу данных внутри административной панели. MongoDB В ней хранится информация об этом пользователе.
Если команда выполнена успешно, будет показан следующий вывод:
Выход:
В результате поиска выяснилось, что пользователь позвонил по номеру "GuruБыла создана учетная запись пользователя "99", и этот пользователь имеет права доступа ко всем базам данных в MongoDB.
MongoDB Создать пользователя для одной базы данных
Для создания пользователя, который будет управлять одной базой данных, можно использовать ту же команду, что и выше, но с опцией «userAdmin».
Следующий пример показывает, как это можно сделать:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Объяснение:
- Первым шагом является указание «имени пользователя» и «пароля», которые необходимо создать.
- Второй шаг — назначение роли пользователю, который в данном случае, поскольку должен быть администратором базы данных, получает роль «userAdmin». Эта роль предоставляет пользователю административные привилегии только к базе данных, указанной в параметре db.
- Параметр db указывает базу данных, к которой пользователь должен иметь права администратора.
Если команда выполнена успешно, будет показан следующий вывод:
Выход:
Вывод показывает, что был создан пользователь с именем «Employeeadmin», и этот пользователь имеет права только в базе данных «Сотрудник».
Управление пользователями
Для начала определите роли, которые вам необходимо определить. В системе доступен целый список ролей. MongoDBНапример, существует роль «чтение», которая предоставляет доступ к базам данных только для чтения, и роль «чтение и запись», которая предоставляет доступ к базе данных как для чтения, так и для записи. Это означает, что пользователь может выполнять команды вставки, удаления и обновления коллекций в этой базе данных.
db.createUser(
{
user: "Mohan",
pwd: "password",
roles:[
{ role: "read" , db:"Marketing" },
{ role: "readWrite" , db:"Sales" }
]
})
Приведенный выше фрагмент кода показывает, что создан пользователь по имени Мохан, и ему назначены несколько ролей в нескольких базах данных. В приведенном выше примере ему предоставлены права только на чтение базы данных «Маркетинг» и права на чтение и запись базы данных «Продажи».
Как просматривать и управлять MongoDB Пользователи
После создания учетных записей, MongoDB Предоставляет набор команд для проверки, обновления и удаления без удаления.ping и заново создавая каждого пользователя. Эти команды выполняются в базе данных, где был создан пользователь, поэтому перед их выполнением переключитесь на правильную базу данных с помощью оператора use.
Наиболее распространенные команды управления пользователями:
- db.getUsers() — отображает список всех пользователей, определенных в текущей базе данных, вместе с ролями, которые каждый из них выполняет.
- db.getUser(“username”) — возвращает подробную информацию об одной учетной записи, что полезно для управления правами доступа к данным.
- db.grantRolesToUser() — Добавляет одну или несколько ролей к существующему пользователю, не затрагивая текущие роли.
- db.revokeRolesFromUser() — исключает определенные роли, ужесточая доступ при изменении обязанностей.
- db.changeUserPassword() — сбрасывает пароль для учетной записи, пока сохраняетсяping ее функции остаются неизменными.
- db.dropUser() — Безвозвратно удаляет пользователя из базы данных.
В приведенном ниже примере учетная запись получает дополнительную роль, отзывает другую, сбрасывает пароль и, наконец, удаляется:
// List all users in the current database db.getUsers() // Grant an additional role to an existing user db.grantRolesToUser("Employeeadmin", [{ role: "readWrite", db: "Employee" }]) // Remove a role from a user db.revokeRolesFromUser("Employeeadmin", [{ role: "userAdmin", db: "Employee" }]) // Change a user's password db.changeUserPassword("Employeeadmin", "newPassword") // Delete a user db.dropUser("Employeeadmin")
Повторный запуск db.getUsers() после этих операций подтверждает, что изменения были применены и остались только нужные учетные записи и роли.
Передовые методы для MongoDB Управление пользователями
Грамотно спланированные учетные записи пользователей обеспечивают... MongoDB Развертывание безопасное и легко поддающееся аудиту. Следующие методы снижают риск случайного раскрытия данных и неправомерного использования привилегий:
- Применить минимальные привилегии: Предоставляйте учетной записи только те роли, которые ей действительно необходимы, отдавая предпочтение праву чтения/записи для одной базы данных перед широкими административными ролями.
- Избегайте использования root-прав в производственной среде: Зарезервируйте роли root и userAdminAnyDatabase для задач настройки и экстренных ситуаций, а не для повседневной работы.
- Включить аутентификацию: Запустите сервер с опцией –auth, чтобы учетные данные действительно использовались.
- Используйте надежные пароли: Учитывайте как длину, так и сложность паролей, а также меняйте пароли по расписанию с помощью функции db.changeUserPassword().
- Регулярно проверяйте: RevПериодически просматривайте вывод db.getUsers() и удаляйте учетные записи, которые больше не нужны.
В совокупности эти привычки гарантируют, что каждая учетная запись соответствует реальным потребностям и что доступ к ней возможен. traced всякий раз, когда проводится проверка безопасности.






