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.

  • 🔑 Alapvető módszer: A db.createUser() parancs egyetlen utasításban adja meg a felhasználó, a jelszó és a szerepkörök tömbjét, így hoz létre egy fiókot.
  • 🛡️ Adminisztrátori hatókör: A userAdminAnyDatabase szerepkör minden adatbázisra vonatkozóan felügyeleti jogokat biztosít, míg a userAdmin egyetlen elnevezett adatbázisra korlátozza a vezérlést.
  • 🎯 Szerepkiosztás: A beépített szerepkörök, mint például a read és a readWrite, pontosan leképezik azokat a műveleteket, amelyeket a felhasználó egy gyűjteményen végrehajthat.
  • 👥 Több adatbázis: Egyetlen fiók különböző szerepköröket tartalmazhat több adatbázisban egy szerepkörtömbön belül.
  • Ellenőrzés: A db.getUsers() metódus és a visszaadott kimenet megerősíti, hogy a fiókok és a jogosultságok kiépítése helyesen történt.

Felhasználó létrehozása és szerepkör hozzáadása MongoDB

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"}]})

MongoDB Adminisztrátor felhasználó létrehozása

Code Magyarázat:

  1. Az első lépés a létrehozandó „felhasználónév” és „jelszó” megadása.
  2. 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.
  3. 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:

MongoDB Adminisztrátor felhasználó létrehozása

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:

MongoDB Felhasználó létrehozása egyetlen adatbázishoz

db.createUser(
{
	user: "Employeeadmin",

	pwd: "password",

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

Code Magyarázat:

  1. Az első lépés a létrehozandó „felhasználónév” és „jelszó” megadása.
  2. 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.
  3. 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:

MongoDB Felhasználó létrehozása egyetlen adatbázishoz

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.

Felhasználók kezelése

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.

GYIK

Igen. Az AI asszisztensek képesek egy egyszerű leírást érvényes db.createUser() parancspá alakítani, hozzárendelni a megfelelő szerepkörtömböt, és hatókörét egy adatbázisra szabni. A létrehozott parancs futtatása előtt mindig tesztelje a parancsot egy nem éles adatbázison.

Igen. A mesterséges intelligencia által vezérelt auditeszközök képesek beolvasni a db.getUsers() kimenetét, megjelölni a root vagy userAdminAnyDatabase jogosultsággal rendelkező fiókokat, és a legalacsonyabb jogosultságú szerepköröket javasolni. A rendszergazdáknak továbbra is át kell tekinteniük az egyes javaslatokat, mielőtt visszavonják a hozzáférést egy élő rendszerben.

A userAdmin szerepkör egy adott adatbázis felhasználóit és szerepköreit kezeli, míg a userAdminAnyDatabase felhasználó-adminisztrátori jogosultságokat biztosít a példány összes adatbázisára vonatkozóan. A userAdmin szerepkört hatókörön belüli vezérléshez, a userAdminAnyDatabase szerepkört pedig csak megbízható rendszergazdák számára használja.

Válts át arra az adatbázisra, ahol a felhasználó található, a use paranccsal, majd futtasd a db.dropUser(„username”) parancsot. MongoDB eltávolítja a fiókot és a hozzá tartozó szerepköröket az adatbázisból. Ezután a db.getUsers() futtatásával erősítse meg az eltávolítást.

Foglald össze ezt a bejegyzést a következőképpen: