Jak vytvořit uživatele a přidat roli MongoDB

⚡ Chytré shrnutí

Vytvoření uživatele a přidání role v MongoDB spoléhá na metodu db.createUser() k definování přihlašovacích údajů, přiřazování vestavěných rolí a oprávnění pro rozsah platnosti konkrétním databázím, čímž posiluje řízení přístupu napříč administrativními účty a účty s jednou databází.

  • 🔑 Základní metoda: Příkaz db.createUser() zřídí účet zadáním uživatele, hesla a pole rolí v jednom příkazu.
  • 🛡️ Rozsah administrátora: Role userAdminAnyDatabase uděluje práva ke správě napříč každou databází, zatímco role userAdmin omezuje řízení na jednu pojmenovanou databázi.
  • 🎯 Přiřazení role: Vestavěné role, jako například read a readWrite, se přesně mapují na akce, které může uživatel s kolekcí provádět.
  • 👥 Více databází: Jeden účet může v rámci jednoho pole rolí zastávat různé role v několika databázích.
  • (Tj. Ověřování: Metoda db.getUsers() a vrácený výstup potvrzují, že účty a oprávnění byly správně zřízeny.

Jak vytvořit uživatele a přidat roli MongoDB

Co jsou vestavěné role v MongoDB?

Než si vytvoříte účet, je užitečné porozumět vestavěným rolím, které MongoDB poskytuje. Role je pojmenovaná kolekce oprávnění a každé oprávnění spáruje zdroj (databázi nebo kolekci) s akcemi, které jsou na něm povoleny. Přiřazení role během vytváření uživatele tedy přesně určuje, co může daný účet dělat.

MongoDB seskupuje své vestavěné role do rolí uživatelů databáze, rolí pro správu databáze, rolí pro správu clusteru, rolí pro zálohování a obnovu a rolí superuživatelů. Následující tabulka shrnuje role používané nejčastěji při správě uživatelů:

Role Kategorie Udělená oprávnění
číst Uživatel databáze Přístup pouze pro čtení ke všem nesystémovým kolekcím v databázi.
čístPsat Uživatel databáze Přístup pro čtení a také vkládání, aktualizace a mazání kolekcí.
dbAdmin Správce databáze Správa schémat, indexování a statistik pro databázi.
userAdmin Správce databáze Vytvářejte a upravujte uživatele a role v jedné databázi.
userAdminLibovolnáDatabáze Superuser Správa uživatelů napříč každou databází v instanci.
kořen Superuser Plný přístup ke všem zdrojům a operacím.

MongoDB Vytvořit uživatele správce

Vytvoření správce uživatelů v MongoDB se provádí pomocí metody createUser. Následující příklad ukazuje, jak to lze provést.

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

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

MongoDB Vytvořit uživatele správce

Code Vysvětlení:

  1. Prvním krokem je zadání „uživatelského jména“ a „hesla“, které je třeba vytvořit.
  2. Druhým krokem je přiřazení role uživateli. Protože se musí jednat o správce databáze, v takovém případě jsme přiřadili roli „userAdminAnyDatabase“. Tato role umožňuje uživateli mít administrátorská oprávnění ke všem databázím v MongoDB.
  3. Parametr db určuje databázi admin, což je speciální metadatabáze v rámci MongoDB který uchovává informace o tomto uživateli.

Pokud je příkaz úspěšně proveden, zobrazí se následující výstup:

Výstup:

MongoDB Vytvořit uživatele správce

Výstup ukazuje, že uživatel s názvem „GuruByl vytvořen uživatel „99“ a tento uživatel má oprávnění ke všem databázím v MongoDB.

MongoDB Vytvořit uživatele pro jednu databázi

Pro vytvoření uživatele, který bude spravovat jednu databázi, můžeme použít stejný příkaz jako výše, ale stačí použít pouze volbu „userAdmin“.

Následující příklad ukazuje, jak to lze provést:

MongoDB Vytvořit uživatele pro jednu databázi

db.createUser(
{
	user: "Employeeadmin",

	pwd: "password",

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

Code Vysvětlení:

  1. Prvním krokem je zadání „uživatelského jména“ a „hesla“, které je třeba vytvořit.
  2. Druhým krokem je přiřazení role uživateli, která je v tomto případě, protože se musí jednat o správce databáze, přiřazena roli „userAdmin“. Tato role umožňuje uživateli mít administrátorská oprávnění pouze k databázi uvedené v parametru db.
  3. Parametr db určuje databázi, ke které by měl mít uživatel oprávnění správce.

Pokud je příkaz úspěšně proveden, zobrazí se následující výstup:

Výstup:

MongoDB Vytvořit uživatele pro jednu databázi

Výstup ukazuje, že byl vytvořen uživatel s názvem „Employeeadmin“ a tento uživatel má oprávnění pouze k databázi „Employee“.

Správa uživatelů

Nejprve si ujasněte role, které je třeba definovat. V sekci je k dispozici celý seznam rolí. MongoDBNapříklad existuje role „read“, která umožňuje přístup k databázím pouze pro čtení, a pak existuje role „readWrite“, která poskytuje přístup k databázi pro čtení i zápis. To znamená, že uživatel může v dané databázi vydávat příkazy pro vkládání, mazání a aktualizaci kolekcí.

Správa uživatelů

db.createUser(
{
	user: "Mohan",

	pwd: "password",

	roles:[
	{ role: "read" , db:"Marketing" },
	{ role: "readWrite" , db:"Sales" }
	]
})

Výše uvedený úryvek kódu ukazuje, že je vytvořen uživatel jménem Mohan a je mu přiřazeno několik rolí v několika databázích. Ve výše uvedeném příkladu má oprávnění pouze pro čtení databáze „Marketing“ a oprávnění pro čtení a zápis databáze „Prodej“.

Jak zobrazit a spravovat MongoDB uživatelé

Poté, co účty existují, MongoDB poskytuje sadu příkazů pro jejich kontrolu, aktualizaci a odstranění bez nutnosti jejich vyřazeníping a znovuvytvoření každého uživatele. Tyto příkazy se spouštějí v databázi, kde byl uživatel vytvořen, takže před jejich vydáním přepněte pomocí příkazu use na správnou databázi.

Nejběžnější příkazy pro správu uživatelů jsou:

  • db.getUsers() — vypíše všechny uživatele definované v aktuální databázi spolu s rolemi, které každý z nich zastává.
  • db.getUser(„uživatelské_jméno“) — vrací podrobnosti o jednom účtu, což je užitečné pro audit oprávnění.
  • db.grantRoleUživateli() — přidá jednu nebo více rolí existujícímu uživateli bez ovlivnění aktuálních rolí.
  • db.revokeRoleFromUser() — odstraňuje specifické role a zpřísňuje přístup při změně odpovědností.
  • db.změnitUživatelskéHeslo() — resetuje heslo k účtu a zároveň ho uchováváping jeho role zůstávají nedotčené.
  • db.dropUser() — trvale smaže uživatele z databáze.

Níže uvedený příklad udělí další roli, zruší jinou, resetuje heslo a nakonec smaže účet:

// 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")

Opakované spuštění db.getUsers() po těchto operacích potvrdí, že změny byly použity a že zůstanou pouze zamýšlené účty a role.

Nejlepší postupy pro MongoDB Správa uživatelů

Dobře naplánované uživatelské účty udržují MongoDB Bezpečné a snadno auditovatelné nasazení. Následující postupy snižují riziko náhodného úniku dat a zneužití oprávnění:

  • Použít nejnižší oprávnění: Udělujte pouze role, které účet skutečně potřebuje, s upřednostněním readWrite v jedné databázi před širokými administrativními rolemi.
  • Vyhněte se rootování v produkčním prostředí: Role root a userAdminAnyDatabase rezervujte pro nastavení a nouzové úlohy, nikoli pro každodenní provoz.
  • Povolit ověřování: Spusťte server s volbou –auth, aby se přihlašovací údaje skutečně vynucovaly.
  • Používejte silná hesla: Kombinujte délku a složitost a střídejte hesla pomocí db.changeUserPassword() podle plánu.
  • Pravidelně auditujte: RevPeriodicky zobrazovat výstup funkce db.getUsers() a odstraňovat účty, které již nejsou potřeba.

Tyto návyky společně zajišťují, že každý účet odpovídá skutečné potřebě a že k němu lze přistupovat. tracvždy, když probíhá bezpečnostní kontrola.

Nejčastější dotazy

Ano. Asistenti s umělou inteligencí dokáží proměnit prostý popis v platný příkaz db.createUser(), přiřadit správné pole rolí a nastavit jeho rozsah na databázi. Před spuštěním vždy otestujte vygenerovaný příkaz v neprodukční databázi.

Ano. Auditovací nástroje založené na umělé inteligenci dokáží číst výstup db.getUsers(), označovat účty s oprávněními root nebo userAdminAnyDatabase a navrhovat role s nejnižšími oprávněními. Administrátoři by si i tak měli před odebráním přístupu v živém systému každé doporučení zkontrolovat.

Role userAdmin spravuje uživatele a role v jedné konkrétní databázi, zatímco userAdminAnyDatabase uděluje oprávnění pro správu uživatelů napříč všemi databázemi v instanci. Role userAdmin se používá pro omezené ovládání a role userAdminAnyDatabase pouze pro důvěryhodné administrátory.

Přepněte se do databáze, kde se uživatel nachází, pomocí příkazu use a poté spusťte db.dropUser(„uživatelské_jméno“). MongoDB odstraní účet a jeho role v dané databázi. Potvrďte odstranění spuštěním db.getUsers().

Shrňte tento příspěvek takto: