Як створити користувача та додати роль MongoDB
⚡ Розумний підсумок
Створення користувача та додавання ролі в MongoDB спирається на метод db.createUser() для визначення облікових даних, призначення вбудованих ролей та привілеїв області дії для певних баз даних, посилюючи контроль доступу між адміністративними обліковими записами та обліковими записами з однією базою даних.
Що таке вбудовані ролі MongoDB?
Перш ніж створювати обліковий запис, корисно зрозуміти вбудовані ролі, які MongoDB надає. Роль — це іменований набір привілеїв, і кожен привілей пов’язує ресурс (базу даних або колекцію) з діями, які дозволені для нього. Таким чином, призначення ролі під час створення користувача визначає, що саме може робити цей обліковий запис.
MongoDB групує свої вбудовані ролі на ролі користувачів бази даних, ролі адміністратора бази даних, ролі адміністратора кластера, ролі резервного копіювання та відновлення, а також ролі суперкористувача. У таблиці нижче підсумовано ролі, які найчастіше використовуються під час керування користувачами:
| Роль | Категорія | Надані привілеї |
|---|---|---|
| зчитування | Користувач бази даних | Доступ лише для читання до всіх несистемних колекцій у базі даних. |
| читатиЗапис | Користувач бази даних | Доступ для читання, а також вставка, оновлення та видалення колекцій. |
| Адміністратор бази даних | Адміністратор бази даних | Схема, індексація та управління статистикою для бази даних. |
| користувачАдмін | Адміністратор бази даних | Створюйте та змінюйте користувачів і ролі в одній базі даних. |
| користувачАдміністраторБудь-якаБазаДаних | Суперкористувача | Адміністрування користувачів у кожній базі даних екземпляра. |
| корінь | Суперкористувача | Повний доступ до всіх ресурсів та операцій. |
MongoDB Створення користувача адміністратора
Створення адміністратора користувача в MongoDB виконується за допомогою методу createUser. Наступний приклад показує, як це можна зробити.
db.createUser(
{ user: "Guru99",
pwd: "password",
roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Code Пояснення:
- Перший крок — вказати «ім’я користувача» та «пароль», які потрібно створити.
- Другий крок – призначити роль користувачеві. Оскільки це має бути адміністратор бази даних, у цьому випадку ми призначили роль «userAdminAnyDatabase». Ця роль дозволяє користувачеві мати адміністративні права для всіх баз даних у MongoDB.
- Параметр db вказує на базу даних admin, яка є спеціальною базою даних Meta всередині MongoDB який містить інформацію про цього користувача.
Якщо команда виконана успішно, буде показано наступний результат:
вихід:
Вивід показує, що користувач з іменем «Guru99” було створено, і цей користувач має привілеї доступу до всіх баз даних у MongoDB.
MongoDB Створення користувача для єдиної бази даних
Щоб створити користувача, який керуватиме однією базою даних, ми можемо використовувати ту саму команду, що й згадано вище, але нам потрібно використовувати лише опцію «userAdmin».
Наступний приклад показує, як це можна зробити:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Пояснення:
- Перший крок — вказати «ім’я користувача» та «пароль», які потрібно створити.
- Другий крок – призначити користувачеві роль, яка в цьому випадку, оскільки це має бути адміністратор бази даних, призначається ролі «userAdmin». Ця роль дозволяє користувачеві мати адміністративні права лише для бази даних, зазначеної в опції db.
- Параметр db визначає базу даних, до якої користувач має мати права адміністратора.
Якщо команда виконана успішно, буде показано наступний результат:
вихід:
Вихідні дані показують, що користувача під назвою «Employeeadmin» було створено, і цей користувач має привілеї лише для бази даних «Employee».
Керування користувачами
Спочатку зрозумійте ролі, які вам потрібно визначити. Існує повний список доступних ролей у MongoDBНаприклад, є роль «читання», яка надає доступ до баз даних лише для читання, а також роль «читання/запису», яка надає доступ до бази даних для читання та запису. Це означає, що користувач може видавати команди вставки, видалення та оновлення колекцій у цій базі даних.
db.createUser(
{
user: "Mohan",
pwd: "password",
roles:[
{ role: "read" , db:"Marketing" },
{ role: "readWrite" , db:"Sales" }
]
})
У наведеному вище фрагменті коду показано, що створено користувача на ім'я Мохан, якому призначено кілька ролей у кількох базах даних. У наведеному вище прикладі йому надано дозвіл лише на читання бази даних «Маркетинг» та дозвіл на читання/запис бази даних «Продажі».
Як переглядати та керувати MongoDB користувачів
Після того, як облікові записи з'являться, MongoDB надає набір команд для їх перевірки, оновлення та видалення без видаленняping та повторне створення кожного користувача. Ці команди виконуються для бази даних, де було створено користувача, тому перед їх виконанням перейдіть до правильної бази даних за допомогою оператора use.
Найпоширеніші команди керування користувачами:
- db.getUsers() — виводить список усіх користувачів, визначених у поточній базі даних, разом із ролями, які кожен з них виконує.
- db.getUser(“ім’я користувача”) — повертає дані одного облікового запису, що корисно для аудиту прав.
- 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 розгортання безпечне та просте в аудиті. Наступні методи зменшують ризик випадкового витоку даних та зловживання привілеями:
- Застосувати найменший привілей: Надавайте обліковому запису лише ті ролі, які дійсно потрібні, надаючи перевагу readWrite для однієї бази даних, а не широким адміністративним ролям.
- Уникайте root-доступу у продакшені: Зарезервуйте ролі root та userAdminAnyDatabase для завдань налаштування та екстрених ситуацій, а не для щоденних операцій.
- Увімкнути автентифікацію: Запустіть сервер з параметром –auth, щоб облікові дані фактично застосовувалися.
- Використовуйте надійні паролі: Поєднуйте довжину та складність, а також чергуйте паролі за розкладом за допомогою db.changeUserPassword().
- Регулярний аудит: RevПеріодично переглядати вивід db.getUsers() та видаляти облікові записи, які більше не потрібні.
Разом ці звички гарантують, що кожен обліковий запис відповідає реальній потребі, а доступ може бути tracщоразу, коли проводиться перевірка безпеки.






