Cum se creează un utilizator și se adaugă un rol în MongoDB
⚡ Rezumat inteligent
Crearea unui utilizator și adăugarea unui rol în MongoDB se bazează pe metoda db.createUser() pentru a defini acreditările, a atribui roluri predefinite și a stabili privilegii pentru baze de date specifice, consolidând controlul accesului în conturile administrative și cele ale unei singure baze de date.
Ce sunt rolurile încorporate în MongoDB?
Înainte de a crea un cont, este util să înțelegeți rolurile încorporate care MongoDB oferă. Un rol este o colecție denumită de privilegii, iar fiecare privilegiu asociază o resursă (o bază de date sau o colecție) cu acțiunile permise asupra acesteia. Prin urmare, atribuirea unui rol în timpul creării utilizatorului decide exact ce poate face acel cont.
MongoDB își grupează rolurile încorporate în roluri de utilizator al bazei de date, roluri de administrare a bazei de date, roluri de administrare a clusterului, roluri de backup și restaurare și roluri de superutilizator. Tabelul de mai jos prezintă pe scurt rolurile utilizate cel mai des la gestionarea utilizatorilor:
| Rol | Categorii | Privilegii acordate |
|---|---|---|
| citit | Utilizator baze de date | Acces doar pentru citire la toate colecțiile care nu aparțin sistemului dintr-o bază de date. |
| citeșteScrie | Utilizator baze de date | Acces de citire plus inserare, actualizare și ștergere în colecții. |
| Administrator bază de date | Administrator baze de date | Scheme, indexare și gestionare a statisticilor pentru o bază de date. |
| utilizatorAdmin | Administrator baze de date | Creați și modificați utilizatori și roluri într-o singură bază de date. |
| utilizatorAdminOrice bază de date | superutilizator | Administrarea utilizatorilor în fiecare bază de date din instanță. |
| rădăcină | superutilizator | Acces complet la toate resursele și operațiunile. |
MongoDB Creați utilizator administrator
Crearea unui administrator de utilizator în MongoDB se realizează prin utilizarea metodei createUser. Următorul exemplu arată cum se poate face acest lucru.
db.createUser(
{ user: "Guru99",
pwd: "password",
roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Code Explicaţie:
- Primul pas este să specificați „numele de utilizator” și „parola” care trebuie create.
- Al doilea pas este atribuirea unui rol utilizatorului. Deoarece acesta trebuie să fie administrator de baze de date, caz în care am atribuit rolul „userAdminAnyDatabase”. Acest rol permite utilizatorului să aibă privilegii administrative pentru toate bazele de date din MongoDB.
- Parametrul db specifică baza de date admin, care este o bază de date Meta specială din cadrul MongoDB care conține informațiile pentru acest utilizator.
Dacă comanda este executată cu succes, va fi afișată următoarea ieșire:
ieșire:
Rezultatul arată că un utilizator a apelat „Guru99” a fost creat și utilizatorul respectiv are privilegii asupra tuturor bazelor de date din MongoDB.
MongoDB Creați utilizator pentru o bază de date unică
Pentru a crea un utilizator care va gestiona o singură bază de date, putem folosi aceeași comandă menționată mai sus, dar trebuie să folosim doar opțiunea „userAdmin”.
Următorul exemplu arată cum se poate face acest lucru:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Explicaţie:
- Primul pas este să specificați „numele de utilizator” și „parola” care trebuie create.
- Al doilea pas este atribuirea unui rol utilizatorului, care în acest caz, deoarece trebuie să fie administrator de bază de date, este atribuit rolului „userAdmin”. Acest rol permite utilizatorului să aibă privilegii administrative doar asupra bazei de date specificate în opțiunea db.
- Parametrul db specifică baza de date pe care utilizatorul ar trebui să aibă privilegii administrative.
Dacă comanda este executată cu succes, va fi afișată următoarea ieșire:
ieșire:
Rezultatul arată că un utilizator numit „Employeeadmin” a fost creat și acel utilizator are privilegii numai pe baza de date „Angajat”.
Gestionarea utilizatorilor
Mai întâi, înțelegeți rolurile pe care trebuie să le definiți. Există o listă întreagă de roluri disponibile în MongoDBDe exemplu, există rolul „citire”, care permite doar acces doar pentru citire la bazele de date, și apoi există rolul „readWrite”, care oferă acces de citire și scriere la baza de date. Aceasta înseamnă că utilizatorul poate executa comenzile de inserare, ștergere și actualizare asupra colecțiilor din baza de date respectivă.
db.createUser(
{
user: "Mohan",
pwd: "password",
roles:[
{ role: "read" , db:"Marketing" },
{ role: "readWrite" , db:"Sales" }
]
})
Fragmentul de cod de mai sus arată că este creat un utilizator numit Mohan și că i se atribuie mai multe roluri în mai multe baze de date. În exemplul de mai sus, i se acordă permisiune de citire (only read) pentru baza de date „Marketing” și permisiune de scriere (readWrite) pentru baza de date „Vânzări”.
Cum să vizualizați și să gestionați MongoDB Utilizatori
După ce există conturi, MongoDB oferă un set de comenzi pentru a le inspecta, actualiza și elimina fără a le abandonaping și recrearea fiecărui utilizator. Aceste comenzi rulează pe baza de date în care a fost creat utilizatorul, așadar comutați la baza de date corectă cu instrucțiunea use înainte de a le executa.
Cele mai comune comenzi de gestionare a utilizatorilor sunt:
- db.getUsers() — listează fiecare utilizator definit în baza de date curentă, împreună cu rolurile pe care le deține fiecare.
- db.getUser(„numeutilizator”) — returnează detaliile unui singur cont, ceea ce este util pentru privilegiile de audit.
- db.grantRolesToUser() — adaugă unul sau mai multe roluri unui utilizator existent fără a afecta rolurile actuale.
- db.revokeRolesFromUser() — elimină roluri specifice, înăsprind accesul atunci când responsabilitățile se schimbă.
- db.changeUserPassword() — resetează parola pentru un cont în timp ce este păstratping rolurile sale intacte.
- db.dropUser() — șterge definitiv un utilizator din baza de date.
Exemplul de mai jos acordă un rol suplimentar, revocă un altul, resetează o parolă și, în final, șterge contul:
// 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")
Rularea din nou a funcției db.getUsers() după aceste operațiuni confirmă că modificările au fost aplicate și că rămân doar conturile și rolurile dorite.
Cele mai bune practici pentru MongoDB Ghid de utilizare Managementul
Conturile de utilizator bine planificate mențin o MongoDB implementare sigură și ușor de auditat. Următoarele practici reduc riscul de expunere accidentală a datelor și de utilizare abuzivă a privilegiilor:
- Aplicați privilegiul minim: Acordă doar rolurile de care un cont are nevoie cu adevărat, favorizând readWrite pe o singură bază de date în detrimentul rolurilor administrative generale.
- Evitați root-ul în producție: Rezervați rolurile root și userAdminAnyDatabase pentru sarcini de configurare și de urgență, mai degrabă decât pentru operațiuni zilnice.
- Activați autentificarea: Porniți serverul cu opțiunea –auth astfel încât acreditările să fie efectiv impuse.
- Utilizați parole puternice: Combinați lungimea și complexitatea și rotiți parolele cu db.changeUserPassword() conform unui program.
- Audit regulat: RevVizualizați periodic ieșirile generate de db.getUsers() și eliminați conturile care nu mai sunt necesare.
Împreună, aceste obiceiuri asigură că fiecare cont corespunde unei nevoi reale și că accesul poate fi tracori de câte ori are loc o analiză de securitate.






