Kako stvoriti korisnika i dodati ulogu MongoDB
โก Pametni saลพetak
Stvaranje korisnika i dodavanje uloge u MongoDB oslanja se na metodu db.createUser() za definiranje vjerodajnica, dodjeljivanje ugraฤenih uloga i privilegija opsega odreฤenim bazama podataka, jaฤajuฤi kontrolu pristupa preko administratorskih raฤuna i raฤuna s jednom bazom podataka.
ล to su ugraฤene uloge u MongoDB?
Prije nego ลกto kreirate raฤun, korisno je razumjeti ugraฤene uloge koje MongoDB pruลพa. Uloga je imenovana zbirka privilegija, a svaka privilegija uparuje resurs (bazu podataka ili zbirku) s radnjama koje su na njemu dopuลกtene. Dodjeljivanje uloge tijekom stvaranja korisnika stoga toฤno odreฤuje ลกto taj raฤun moลพe uฤiniti.
MongoDB grupira svoje ugraฤene uloge u uloge korisnika baze podataka, uloge administratora baze podataka, uloge administratora klastera, uloge sigurnosnog kopiranja i vraฤanja te uloge superkorisnika. Tablica u nastavku saลพima uloge koje se najฤeลกฤe koriste pri upravljanju korisnicima:
| Uloga | Kategorija | Dodijeljene privilegije |
|---|---|---|
| ฤitati | Korisnik baze podataka | Pristup samo za ฤitanje svim kolekcijama u bazi podataka koje nisu sistemske. |
| ฤitajPiลกi | Korisnik baze podataka | Pristup za ฤitanje plus umetanje, aลพuriranje i brisanje zbirki. |
| dbAdmin | Administrator baze podataka | Upravljanje shemama, indeksiranjem i statistikama za bazu podataka. |
| korisnikAdministrator | Administrator baze podataka | Stvaranje i mijenjanje korisnika i uloga u jednoj bazi podataka. |
| korisnikAdministratorBilo kojaBazaPodataka | Superuser | Administracija korisnika u svakoj bazi podataka u instanci. |
| korijen | Superuser | Potpuni pristup svim resursima i operacijama. |
MongoDB Stvorite korisnika administratora
Stvaranje korisniฤkog administratora u MongoDB radi se pomoฤu metode createUser. Sljedeฤi primjer pokazuje kako se to moลพe uฤiniti.
db.createUser(
{ user: "Guru99",
pwd: "password",
roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Code Objaลกnjenje:
- Prvi korak je odreฤivanje "korisniฤkog imena" i "lozinke" koje je potrebno izraditi.
- Drugi korak je dodjeljivanje uloge korisniku. Buduฤi da se mora raditi o administratoru baze podataka, u tom sluฤaju smo dodijelili ulogu โuserAdminAnyDatabaseโ. Ova uloga omoguฤuje korisniku administratorske privilegije za sve baze podataka u MongoDB.
- Parametar db odreฤuje admin bazu podataka, koja je posebna Meta baza podataka unutar MongoDB koji sadrลพi informacije za ovog korisnika.
Ako je naredba uspjeลกno izvrลกena, prikazat ฤe se sljedeฤi izlaz:
Izlaz:
Izlaz pokazuje da je korisnik pod nazivom "Guru99โ je kreiran i taj korisnik ima privilegije nad svim bazama podataka u MongoDB.
MongoDB Stvorite korisnika za jednu bazu podataka
Za stvaranje korisnika koji ฤe upravljati jednom bazom podataka, moลพemo koristiti istu naredbu kao gore spomenuto, ali moramo koristiti samo opciju โuserAdminโ.
Sljedeฤi primjer pokazuje kako se to moลพe uฤiniti:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Objaลกnjenje:
- Prvi korak je odreฤivanje "korisniฤkog imena" i "lozinke" koje je potrebno izraditi.
- Drugi korak je dodjeljivanje uloge korisniku, koja se u ovom sluฤaju, buduฤi da mora biti administrator baze podataka, dodjeljuje ulozi โuserAdminโ. Ova uloga omoguฤuje korisniku administratorske privilegije samo za bazu podataka navedenu u opciji db.
- Parametar db navodi bazu podataka za koju korisnik treba imati administrativne ovlasti.
Ako je naredba uspjeลกno izvrลกena, prikazat ฤe se sljedeฤi izlaz:
Izlaz:
Izlaz pokazuje da je kreiran korisnik pod nazivom "Employeeadmin" i da taj korisnik ima privilegije samo na bazi podataka "Employee".
Upravljanje korisnicima
Prvo, shvatite uloge koje trebate definirati. Postoji cijeli popis uloga dostupnih u MongoDBNa primjer, postoji uloga โreadโ koja dopuลกta samo pristup bazama podataka samo za ฤitanje, a zatim postoji uloga โreadWriteโ koja omoguฤuje pristup bazi podataka za ฤitanje i pisanje. To znaฤi da korisnik moลพe izdavati naredbe za umetanje, brisanje i aลพuriranje kolekcija u toj bazi podataka.
db.createUser(
{
user: "Mohan",
pwd: "password",
roles:[
{ role: "read" , db:"Marketing" },
{ role: "readWrite" , db:"Sales" }
]
})
Gornji isjeฤak koda pokazuje da je kreiran korisnik pod nazivom Mohan kojem je dodijeljeno viลกe uloga u viลกe baza podataka. U gornjem primjeru, dobio je dopuลกtenje samo za ฤitanje baze podataka โMarketingโ i dopuลกtenje za ฤitanje/pisanje baze podataka โProdajaโ.
Kako pregledavati i upravljati MongoDB korisnici
Nakon ลกto raฤuni postoje, MongoDB pruลพa skup naredbi za pregled, aลพuriranje i uklanjanje bez brisanjaping i ponovno stvaranje svakog korisnika. Ove naredbe se izvode na bazi podataka u kojoj je korisnik stvoren, stoga se prije njihovog izdavanja prebacite na ispravnu bazu podataka pomoฤu naredbe use.
Najฤeลกฤe naredbe za upravljanje korisnicima su:
- db.getUsers() โ navodi sve korisnike definirane u trenutnoj bazi podataka zajedno s ulogama koje svaki od njih ima.
- db.getUser(โkorisniฤkoimeโ) โ vraฤa detalje jednog raฤuna, ลกto je korisno za revizijske privilegije.
- db.grantRolesToUser() โ dodaje jednu ili viลกe uloga postojeฤem korisniku bez utjecaja na trenutne uloge.
- db.revokeRolesFromUser() โ uklanja odreฤene uloge, pooลกtravajuฤi pristup kada se odgovornosti promijene.
- db.promjenaKorisniฤkeLozinke() โ resetira lozinku za raฤun dok ฤuvaping njegove uloge netaknute.
- db.dropUser() โ trajno briลกe korisnika iz baze podataka.
Primjer u nastavku dodjeljuje dodatnu ulogu, opoziva drugu, resetira lozinku i na kraju briลกe raฤun:
// 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")
Ponovno pokretanje db.getUsers() nakon ovih operacija potvrฤuje da su promjene primijenjene i da ostaju samo ลพeljeni raฤuni i uloge.
Najbolji primjeri iz prakse za MongoDB Upute za upravljanje
Dobro isplanirani korisniฤki raฤuni odrลพavaju MongoDB Implementacija je sigurna i jednostavna za reviziju. Sljedeฤe prakse smanjuju rizik od sluฤajnog izlaganja podataka i zlouporabe privilegija:
- Primijeni najmanje privilegije: Dodijelite samo uloge koje su raฤunu zaista potrebne, favorizirajuฤi readWrite na jednoj bazi podataka u odnosu na ลกiroke administratorske uloge.
- Izbjegavajte root u produkciji: Uloge root i userAdminAnyDatabase rezervirajte za postavljanje i hitne zadatke umjesto za dnevne operacije.
- Omoguฤi autentifikaciju: Pokrenite posluลพitelj s opcijom โauth kako bi se vjerodajnice stvarno primijenile.
- Koristite jake lozinke: Kombinirajte duljinu i sloลพenost te rotirajte lozinke pomoฤu db.changeUserPassword() prema rasporedu.
- Redovito provjeravajte: RevPeriodiฤno pregledava izlaz funkcije db.getUsers() i uklanja raฤune koji viลกe nisu potrebni.
Zajedno, ove navike osiguravaju da svaki raฤun odgovara stvarnoj potrebi i da se pristup moลพe tracsvaki put kada se provodi sigurnosni pregled.






