Felhasználó létrehozása és szerepkör hozzáadása MongoDB
⚡ Okos összefoglaló
Felhasználó létrehozása és szerepkör hozzáadása a MongoDB A db.createUser() metódusra támaszkodik a hitelesítő adatok definiálásához, a beépített szerepkörök és a hatókör-jogosultságok hozzárendeléséhez az adott adatbázisokhoz, megerősítve a hozzáférés-vezérlést az adminisztrátori és az egyetlen adatbázist használó fiókok között.
Mik azok a beépített szerepkörök a MongoDB?
Fiók létrehozása előtt érdemes megérteni a beépített szerepköröket, amelyek MongoDB biztosít. A szerepkör egy elnevezett jogosultsággyűjtemény, és minden jogosultság egy erőforrást (egy adatbázist vagy gyűjteményt) párosít a rajta engedélyezett műveletekkel. A felhasználó létrehozása során hozzárendelt szerepkör tehát pontosan meghatározza, hogy mit tehet az adott fiók.
MongoDB a beépített szerepköreit adatbázis-felhasználói szerepkörökre, adatbázis-adminisztrációs szerepkörökre, fürt-adminisztrációs szerepkörökre, biztonsági mentési és visszaállítási szerepkörökre, valamint szuperfelhasználói szerepkörökre csoportosítja. Az alábbi táblázat összefoglalja a felhasználók kezelése során leggyakrabban használt szerepköröket:
| Szerep | Kategória | Megadott kiváltságok |
|---|---|---|
| olvas | Adatbázis felhasználó | Csak olvasási hozzáférés az adatbázis összes nem rendszergyűjteményéhez. |
| readWrite | Adatbázis felhasználó | Olvasási hozzáférés, valamint beszúrás, frissítés és törlés a gyűjteményeken. |
| dbAdmin | Adatbázis-adminisztrátor | Séma, indexelés és statisztikakezelés adatbázishoz. |
| felhasználóAdmin | Adatbázis-adminisztrátor | Felhasználók és szerepkörök létrehozása és módosítása egyetlen adatbázisban. |
| userAdminAnyDatabase | Rendszergazda | Felhasználói adminisztráció a példány összes adatbázisában. |
| gyökér | Rendszergazda | Teljes hozzáférés minden erőforráshoz és művelethez. |
MongoDB Adminisztrátor felhasználó létrehozása
Felhasználói rendszergazda létrehozása itt MongoDB a createUser metódussal történik. A következő példa bemutatja, hogyan lehet ezt megtenni.
db.createUser(
{ user: "Guru99",
pwd: "password",
roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Code Magyarázat:
- Az első lépés a létrehozandó „felhasználónév” és „jelszó” megadása.
- A második lépés egy szerepkör hozzárendelése a felhasználóhoz. Mivel adatbázis-adminisztrátornak kell lennie, ebben az esetben a „userAdminAnyDatabase” szerepkört rendeltük hozzá. Ez a szerepkör lehetővé teszi a felhasználó számára, hogy rendszergazdai jogosultságokkal rendelkezzen az összes adatbázishoz. MongoDB.
- A db paraméter az adminisztrációs adatbázist adja meg, amely egy speciális Meta adatbázis a MongoDB amely a felhasználó adatait tartalmazza.
Ha a parancs sikeresen végrehajtásra került, a következő kimenet jelenik meg:
output:
A kimenet azt mutatja, hogy egy „Guru99” létrejött, és a felhasználó jogosultságokkal rendelkezik az összes adatbázis felett MongoDB.
MongoDB Felhasználó létrehozása egyetlen adatbázishoz
Egyetlen adatbázist kezelő felhasználó létrehozásához ugyanazt a parancsot használhatjuk, mint a fent említettük, de csak a „userAdmin” opciót kell használnunk.
A következő példa bemutatja, hogyan lehet ezt megtenni:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Magyarázat:
- Az első lépés a létrehozandó „felhasználónév” és „jelszó” megadása.
- A második lépés egy szerepkör hozzárendelése a felhasználóhoz, amely ebben az esetben, mivel adatbázis-adminisztrátornak kell lennie, a „userAdmin” szerepkörhöz van rendelve. Ez a szerepkör lehetővé teszi a felhasználó számára, hogy rendszergazdai jogosultságokkal rendelkezzen csak a db opcióban megadott adatbázishoz.
- A db paraméter megadja azt az adatbázist, amelyhez a felhasználónak rendszergazdai jogosultságokkal kell rendelkeznie.
Ha a parancs sikeresen végrehajtásra került, a következő kimenet jelenik meg:
output:
A kimenet azt mutatja, hogy egy „Employeeadmin” nevű felhasználó jött létre, és ez a felhasználó csak az „Employee” adatbázisban rendelkezik jogosultságokkal.
Felhasználók kezelése
Először is, ismerd meg a definiálandó szerepköröket. A szerepkörök teljes listája megtalálható itt: MongoDBPéldául létezik az „olvasás” szerepkör, amely csak olvasási hozzáférést biztosít az adatbázisokhoz, és létezik a „olvasási” szerepkör, amely olvasási és írási hozzáférést biztosít az adatbázishoz. Ez azt jelenti, hogy a felhasználó kiadhatja az insert, delete és update parancsokat az adatbázis gyűjteményein.
db.createUser(
{
user: "Mohan",
pwd: "password",
roles:[
{ role: "read" , db:"Marketing" },
{ role: "readWrite" , db:"Sales" }
]
})
A fenti kódrészlet azt mutatja, hogy létrejön egy Mohan nevű felhasználó, aki több szerepkört is kap több adatbázisban. A fenti példában csak olvasási jogosultságot kap a „Marketing” adatbázishoz, és olvasási/írási jogosultságot az „Értékesítés” adatbázishoz.
Megtekintés és kezelés MongoDB felhasználók
Miután a számlák léteznek, MongoDB parancskészletet biztosít a vizsgálatukhoz, frissítésükhöz és eltávolításukhoz anélkül, hogy le kellene állítani őketping és minden felhasználó újbóli létrehozása. Ezek a parancsok abban az adatbázisban futnak, ahol a felhasználó létrejött, ezért a kiadásuk előtt váltson a megfelelő adatbázisra a use utasítással.
A leggyakoribb felhasználókezelési parancsok a következők:
- db.getFelhasználók() — felsorolja az aktuális adatbázisban definiált összes felhasználót a hozzájuk tartozó szerepkörökkel együtt.
- db.getUser(„felhasználónév”) — egyetlen fiók adatait adja vissza, ami hasznos a jogosultságok naplózásához.
- db.grantRolesToUser() — egy vagy több szerepkört ad hozzá egy meglévő felhasználóhoz a jelenlegi szerepkörök befolyásolása nélkül.
- db.revokeRolesFromUser() — eltávolít bizonyos szerepköröket, szigorítva a hozzáférést, amikor a felelősségi körök megváltoznak.
- db.felhasználóiJelszóMegosztás() — visszaállítja egy fiók jelszavát, miközben keeping szerepei épek.
- db.dropUser() — véglegesen törli a felhasználót az adatbázisból.
Az alábbi példa egy további szerepkört biztosít, egy másikat visszavon, jelszót állít vissza, és végül törli a fiókot:
// 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")
A db.getUsers() függvény ismételt futtatása a műveletek után megerősíti, hogy a módosítások érvénybe léptek, és csak a kívánt fiókok és szerepkörök maradtak meg.
A legjobb gyakorlatok MongoDB User Management
A jól megtervezett felhasználói fiókok MongoDB A telepítés biztonságos és könnyen auditálható. A következő gyakorlatok csökkentik a véletlen adatszivárgás és a jogosultságokkal való visszaélés kockázatát:
- Legkisebb jogosultság alkalmazása: Csak azokat a szerepköröket add meg egy fióknak, amelyekre valóban szüksége van, előnyben részesítve a readWrite-ot egyetlen adatbázison a széleskörű adminisztrátori szerepkörökkel szemben.
- Kerülje a gyökérkezelést a termelésben: A root és a userAdminAnyDatabase szerepköröket a napi műveletek helyett a beállításhoz és a vészhelyzeti feladatokhoz kell fenntartani.
- Hitelesítés engedélyezése: Indítsa el a szervert az –auth kapcsolóval, hogy a hitelesítő adatok ténylegesen érvényesüljenek.
- Használjon erős jelszavakat: Kombináld a hosszúságot és a bonyolultságot, és ütemezd a jelszavakat a db.changeUserPassword() függvénnyel.
- Rendszeresen ellenőrizze: RevAz iew db.getUsers() függvény rendszeresen kimenetet generál, és eltávolítja a már nem szükséges fiókokat.
Ezek a szokások együttesen biztosítják, hogy minden fiók valós igényhez igazodjon, és hogy a hozzáférés biztosítható legyen. tracminden biztonsági felülvizsgálat során.






