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.

  • 🔑 Metoda de bază: Comanda db.createUser() furnizează un cont prin specificarea utilizatorului, parolei și a unui array de roluri într-o singură instrucțiune.
  • 🛡️ Domeniul de aplicare al administratorului: Rolul userAdminAnyDatabase acordă drepturi de administrare pentru fiecare bază de date, în timp ce userAdmin limitează controlul la o singură bază de date denumită.
  • 🎯 Atribuirea rolului: Rolurile încorporate, cum ar fi citire și citire/scriere, se referă precis la acțiunile pe care un utilizator le poate efectua asupra unei colecții.
  • 👥 Baze de date multiple: Un singur cont poate deține roluri diferite în mai multe baze de date în cadrul unei matrice de roluri.
  • Verificare: Metoda db.getUsers() și rezultatul returnat confirmă că conturile și privilegiile au fost furnizate corect.

Cum se creează un utilizator și se adaugă un rol în MongoDB

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

MongoDB Creați utilizator administrator

Code Explicaţie:

  1. Primul pas este să specificați „numele de utilizator” și „parola” care trebuie create.
  2. 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.
  3. 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:

MongoDB Creați utilizator administrator

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:

MongoDB Creați utilizator pentru o bază de date unică

db.createUser(
{
	user: "Employeeadmin",

	pwd: "password",

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

Code Explicaţie:

  1. Primul pas este să specificați „numele de utilizator” și „parola” care trebuie create.
  2. 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.
  3. 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:

MongoDB Creați utilizator pentru o bază de date unică

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ă.

Gestionarea utilizatorilor

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.

Întrebări frecvente

Da. Asistenții inteligenți artificiali pot transforma o descriere simplă într-o comandă db.createUser() validă, pot atribui matricea de roluri corectă și o pot extinde la o bază de date. Testați întotdeauna comanda generată pe o bază de date non-producție înainte de a o rula.

Da. Instrumentele de audit bazate pe inteligență artificială pot citi ieșirea funcției db.getUsers(), pot semnala conturile care dețin root sau userAdminAnyDatabase și pot sugera roluri cu cele mai puține privilegii. Administratorii ar trebui să revizuiască în continuare fiecare recomandare înainte de a revoca accesul într-un sistem activ.

Rolul userAdmin gestionează utilizatorii și rolurile dintr-o anumită bază de date, în timp ce userAdminAnyDatabase acordă privilegii de administrare a utilizatorilor în fiecare bază de date din instanță. Folosiți userAdmin pentru control limitat și userAdminAnyDatabase doar pentru administratorii de încredere.

Comutați la baza de date în care există utilizatorul cu comanda use, apoi executați db.dropUser(„username”). MongoDB elimină contul și rolurile sale din baza de date. Confirmați eliminarea rulând ulterior comanda db.getUsers().

Rezumați această postare cu: