Как да създадете потребител и да добавите роля MongoDB
⚡ Умно обобщение
Създаване на потребител и добавяне на роля в MongoDB разчита на метода db.createUser() за дефиниране на идентификационни данни, присвояване на вградени роли и привилегии за обхват на специфични бази данни, като по този начин засилва контрола на достъпа между администраторските акаунти и акаунтите с единична база данни.
Какво представляват вградените роли в MongoDB?
Преди да създадете акаунт, е полезно да разберете вградените роли, които MongoDB предоставя. Ролята е именувана колекция от привилегии и всяка привилегия свързва ресурс (база данни или колекция) с действията, които са разрешени върху него. Следователно, присвояването на роля по време на създаването на потребител определя точно какво може да прави този акаунт.
MongoDB групира вградените си роли в роли на потребители на база данни, роли за администриране на база данни, роли за администриране на клъстери, роли за архивиране и възстановяване и роли на суперпотребител. Таблицата по-долу обобщава ролите, използвани най-често при управление на потребители:
| Роля | категория | Предоставени привилегии |
|---|---|---|
| чета | Потребител на база данни | Достъп само за четене до всички несистемни колекции в база данни. |
| четенеПишане | Потребител на база данни | Достъп за четене плюс вмъкване, актуализиране и изтриване на колекции. |
| dbAdmin | Администратор на база данни | Управление на схема, индексиране и статистика за база данни. |
| потребителАдминистратор | Администратор на база данни | Създавайте и променяйте потребители и роли в една база данни. |
| потребителАдминистраторВсякаБазаДата | Superuser | Администриране на потребители във всяка база данни в екземпляра. |
| корен | Superuser | Пълен достъп до всички ресурси и операции. |
MongoDB Създаване на администраторски потребител
Създаване на потребителски администратор в MongoDB се извършва с помощта на метода createUser. Следващият пример показва как може да се направи това.
db.createUser(
{ user: "Guru99",
pwd: "password",
roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Code Обяснение:
- Първата стъпка е да посочите „потребителско име“ и „парола“, които трябва да бъдат създадени.
- Втората стъпка е да се зададе роля на потребителя. Тъй като той трябва да е администратор на база данни, в този случай сме задали ролята „userAdminAnyDatabase“. Тази роля позволява на потребителя да има администраторски права за всички бази данни в MongoDB.
- Параметърът db указва базата данни admin, която е специална мета база данни в MongoDB който съдържа информацията за този потребител.
Ако командата е изпълнена успешно, ще се покаже следният изход:
Изход:
Резултатът показва, че потребител с име „Guru„99“ е създаден и този потребител има привилегии върху всички бази данни в MongoDB.
MongoDB Създаване на потребител за единична база данни
За да създадем потребител, който ще управлява една база данни, можем да използваме същата команда, както е посочено по-горе, но е необходимо да използваме само опцията „userAdmin“.
Следният пример показва как може да се направи това:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Обяснение:
- Първата стъпка е да посочите „потребителско име“ и „парола“, които трябва да бъдат създадени.
- Втората стъпка е да се присвои роля на потребителя, която в този случай, тъй като трябва да е администратор на база данни, се присвоява на ролята „userAdmin“. Тази роля позволява на потребителя да има администраторски права само за базата данни, посочена в опцията db.
- Параметърът db указва базата данни, към която потребителят трябва да има административни привилегии.
Ако командата е изпълнена успешно, ще се покаже следният изход:
Изход:
Резултатът показва, че е създаден потребител, наречен „Employeeadmin“, и този потребител има привилегии само в базата данни „Employee“.
Управление на потребителите
Първо, разберете ролите, които трябва да дефинирате. Има цял списък с роли, налични в MongoDBНапример, има роля „read“, която позволява само достъп до бази данни само за четене, и роля „readWrite“, която предоставя достъп за четене и запис до базата данни. Това означава, че потребителят може да издава команди за вмъкване, изтриване и актуализиране на колекции в тази база данни.
db.createUser(
{
user: "Mohan",
pwd: "password",
roles:[
{ role: "read" , db:"Marketing" },
{ role: "readWrite" , db:"Sales" }
]
})
Горният фрагмент от код показва, че е създаден потребител на име Mohan и му са присвоени множество роли в множество бази данни. В горния пример му е дадено разрешение само за четене на базата данни „Маркетинг“ и разрешение за четене/писане на базата данни „Продажби“.
Как да преглеждате и управлявате 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винаги когато се извършва проверка за сигурност.






