Как да създадете потребител и да добавите роля MongoDB

⚡ Умно обобщение

Създаване на потребител и добавяне на роля в MongoDB разчита на метода db.createUser() за дефиниране на идентификационни данни, присвояване на вградени роли и привилегии за обхват на специфични бази данни, като по този начин засилва контрола на достъпа между администраторските акаунти и акаунтите с единична база данни.

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

Как да създадете потребител и да добавите роля в него MongoDB

Какво представляват вградените роли в MongoDB?

Преди да създадете акаунт, е полезно да разберете вградените роли, които MongoDB предоставя. Ролята е именувана колекция от привилегии и всяка привилегия свързва ресурс (база данни или колекция) с действията, които са разрешени върху него. Следователно, присвояването на роля по време на създаването на потребител определя точно какво може да прави този акаунт.

MongoDB групира вградените си роли в роли на потребители на база данни, роли за администриране на база данни, роли за администриране на клъстери, роли за архивиране и възстановяване и роли на суперпотребител. Таблицата по-долу обобщава ролите, използвани най-често при управление на потребители:

Роля категория Предоставени привилегии
чета Потребител на база данни Достъп само за четене до всички несистемни колекции в база данни.
четенеПишане Потребител на база данни Достъп за четене плюс вмъкване, актуализиране и изтриване на колекции.
dbAdmin Администратор на база данни Управление на схема, индексиране и статистика за база данни.
потребителАдминистратор Администратор на база данни Създавайте и променяйте потребители и роли в една база данни.
потребителАдминистраторВсякаБазаДата Superuser Администриране на потребители във всяка база данни в екземпляра.
корен Superuser Пълен достъп до всички ресурси и операции.

MongoDB Създаване на администраторски потребител

Създаване на потребителски администратор в MongoDB се извършва с помощта на метода createUser. Следващият пример показва как може да се направи това.

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

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

MongoDB Създаване на администраторски потребител

Code Обяснение:

  1. Първата стъпка е да посочите „потребителско име“ и „парола“, които трябва да бъдат създадени.
  2. Втората стъпка е да се зададе роля на потребителя. Тъй като той трябва да е администратор на база данни, в този случай сме задали ролята „userAdminAnyDatabase“. Тази роля позволява на потребителя да има администраторски права за всички бази данни в MongoDB.
  3. Параметърът db указва базата данни admin, която е специална мета база данни в MongoDB който съдържа информацията за този потребител.

Ако командата е изпълнена успешно, ще се покаже следният изход:

Изход:

MongoDB Създаване на администраторски потребител

Резултатът показва, че потребител с име „Guru„99“ е създаден и този потребител има привилегии върху всички бази данни в 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Например, има роля „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винаги когато се извършва проверка за сигурност.

Въпроси и Отговори

Да. Асистентите с изкуствен интелект могат да превърнат обикновено описание във валидна команда db.createUser(), да присвоят правилния масив с роли и да го обхватят в база данни. Винаги тествайте генерираната команда върху база данни, която не е в производствена среда, преди да я изпълните.

Да. Инструментите за одит, базирани на изкуствен интелект, могат да четат изхода на db.getUsers(), да маркират акаунти с root или userAdminAnyDatabase права и да предлагат роли с най-ниски привилегии. Администраторите все пак трябва да преглеждат всяка препоръка, преди да отнемат достъпа в работеща система.

Ролята userAdmin управлява потребители и роли в една конкретна база данни, докато userAdminAnyDatabase предоставя права за администриране на потребители във всяка база данни в екземпляра. Използвайте userAdmin за контрол с ограничен обхват, а userAdminAnyDatabase само за доверени администратори.

Превключете към базата данни, където се намира потребителят, с командата use, след което изпълнете db.dropUser(“потребителско име”). MongoDB премахва акаунта и неговите роли в тази база данни. Потвърдете премахването, като изпълните db.getUsers() след това.

Обобщете тази публикация с: