Як створити користувача та додати роль MongoDB

⚡ Розумний підсумок

Створення користувача та додавання ролі в MongoDB спирається на метод db.createUser() для визначення облікових даних, призначення вбудованих ролей та привілеїв області дії для певних баз даних, посилюючи контроль доступу між адміністративними обліковими записами та обліковими записами з однією базою даних.

  • 🔑 Основний метод: Команда db.createUser() створює обліковий запис, вказуючи користувача, пароль та масив ролей в одному операторі.
  • 🛡️ Область застосування адміністратора: Роль userAdminAnyDatabase надає права керування для кожної бази даних, тоді як userAdmin обмежує керування однією іменованою базою даних.
  • 🎯 Призначення ролей: Вбудовані ролі, такі як read та readWrite, точно відповідають діям, які користувач може виконувати з колекцією.
  • 👥 Кілька баз даних: Один обліковий запис може містити різні ролі в кількох базах даних в одному масиві ролей.
  • Перевірка: Метод db.getUsers() та повернутий вивід підтверджують правильність надання облікових записів та привілеїв.

Як створити користувача та додати роль MongoDB

Що таке вбудовані ролі MongoDB?

Перш ніж створювати обліковий запис, корисно зрозуміти вбудовані ролі, які MongoDB надає. Роль — це іменований набір привілеїв, і кожен привілей пов’язує ресурс (базу даних або колекцію) з діями, які дозволені для нього. Таким чином, призначення ролі під час створення користувача визначає, що саме може робити цей обліковий запис.

MongoDB групує свої вбудовані ролі на ролі користувачів бази даних, ролі адміністратора бази даних, ролі адміністратора кластера, ролі резервного копіювання та відновлення, а також ролі суперкористувача. У таблиці нижче підсумовано ролі, які найчастіше використовуються під час керування користувачами:

Роль Категорія Надані привілеї
зчитування Користувач бази даних Доступ лише для читання до всіх несистемних колекцій у базі даних.
читатиЗапис Користувач бази даних Доступ для читання, а також вставка, оновлення та видалення колекцій.
Адміністратор бази даних Адміністратор бази даних Схема, індексація та управління статистикою для бази даних.
користувачАдмін Адміністратор бази даних Створюйте та змінюйте користувачів і ролі в одній базі даних.
користувачАдміністраторБудь-якаБазаДаних Суперкористувача Адміністрування користувачів у кожній базі даних екземпляра.
корінь Суперкористувача Повний доступ до всіх ресурсів та операцій.

MongoDB Створення користувача адміністратора

Створення адміністратора користувача в MongoDB виконується за допомогою методу createUser. Наступний приклад показує, як це можна зробити.

db.createUser(
{	user: "Guru99",
	pwd: "password",

	roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})

MongoDB Створення користувача адміністратора

Code Пояснення:

  1. Перший крок — вказати «ім’я користувача» та «пароль», які потрібно створити.
  2. Другий крок – призначити роль користувачеві. Оскільки це має бути адміністратор бази даних, у цьому випадку ми призначили роль «userAdminAnyDatabase». Ця роль дозволяє користувачеві мати адміністративні права для всіх баз даних у MongoDB.
  3. Параметр db вказує на базу даних admin, яка є спеціальною базою даних Meta всередині MongoDB який містить інформацію про цього користувача.

Якщо команда виконана успішно, буде показано наступний результат:

вихід:

MongoDB Створення користувача адміністратора

Вивід показує, що користувач з іменем «Guru99” було створено, і цей користувач має привілеї доступу до всіх баз даних у MongoDB.

MongoDB Створення користувача для єдиної бази даних

Щоб створити користувача, який керуватиме однією базою даних, ми можемо використовувати ту саму команду, що й згадано вище, але нам потрібно використовувати лише опцію «userAdmin».

Наступний приклад показує, як це можна зробити:

MongoDB Створення користувача для єдиної бази даних

db.createUser(
{
	user: "Employeeadmin",

	pwd: "password",

	roles:[{role: "userAdmin" , db:"Employee"}]})

Code Пояснення:

  1. Перший крок — вказати «ім’я користувача» та «пароль», які потрібно створити.
  2. Другий крок – призначити користувачеві роль, яка в цьому випадку, оскільки це має бути адміністратор бази даних, призначається ролі «userAdmin». Ця роль дозволяє користувачеві мати адміністративні права лише для бази даних, зазначеної в опції db.
  3. Параметр db визначає базу даних, до якої користувач має мати права адміністратора.

Якщо команда виконана успішно, буде показано наступний результат:

вихід:

MongoDB Створення користувача для єдиної бази даних

Вихідні дані показують, що користувача під назвою «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щоразу, коли проводиться перевірка безпеки.

Поширені запитання

Так. Помічники ШІ можуть перетворити простий опис на коректну команду db.createUser(), призначити правильний масив ролей та встановити його область видимості в базі даних. Завжди тестуйте згенеровану команду на невиробничій базі даних перед її запуском.

Так. Інструменти аудиту на основі штучного інтелекту можуть зчитувати вивід db.getUsers(), позначати облікові записи з правами root або userAdminAnyDatabase та пропонувати ролі з найменшими привілеями. Адміністратори все одно повинні переглядати кожну рекомендацію, перш ніж скасовувати доступ у робочій системі.

Роль userAdmin керує користувачами та ролями в одній конкретній базі даних, тоді як userAdminAnyDatabase надає права адміністрування користувачів у кожній базі даних екземпляра. Використовуйте userAdmin для керування з обмеженою областю дії, а userAdminAnyDatabase – лише для довірених адміністраторів.

Перейдіть до бази даних, де знаходиться користувач, за допомогою команди use, а потім виконайте db.dropUser(“ім’я_користувача”). MongoDB видаляє обліковий запис та його ролі з цієї бази даних. Підтвердіть видалення, виконавши db.getUsers() після цього.

Підсумуйте цей пост за допомогою: