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í.
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"}]})
Code Vysvětlení:
- Prvním krokem je zadání „uživatelského jména“ a „hesla“, které je třeba vytvořit.
- 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.
- 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:
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:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Vysvětlení:
- Prvním krokem je zadání „uživatelského jména“ a „hesla“, které je třeba vytvořit.
- 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.
- 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:
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í.
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.






