Sådan opretter du bruger og tilføjer rolle i MongoDB

⚡ Smart opsummering

Oprettelse af en bruger og tilføjelse af en rolle i MongoDB bruger db.createUser()-metoden til at definere legitimationsoplysninger, tildele indbyggede roller og omfangsrettigheder til specifikke databaser, hvilket styrker adgangskontrollen på tværs af administrative konti og konti med én database.

  • 🔑 Kernemetode: Kommandoen db.createUser() klargør en konto ved at angive brugeren, pwd og et roles-array i en enkelt sætning.
  • 🛡️ Administratoromfang: Rollen userAdminAnyDatabase giver administrationsrettigheder på tværs af alle databaser, mens userAdmin begrænser kontrollen til én navngiven database.
  • 🎯 Rolletildeling: Indbyggede roller som read og readWrite knytter præcist til de handlinger, en bruger kan udføre på en samling.
  • 👥 Flere databaser: En enkelt konto kan indeholde forskellige roller på tværs af flere databaser i ét rollearray.
  • Verifikation: Metoden db.getUsers() og det returnerede output bekræfter, at konti og rettigheder blev tildelt korrekt.

Sådan opretter du en bruger og tilføjer en rolle MongoDB

Hvad er indbyggede roller i MongoDB?

Før du opretter en konto, er det en god idé at forstå de indbyggede roller, der MongoDB giver. En rolle er en navngiven samling af privilegier, og hvert privilegium parrer en ressource (en database eller samling) med de handlinger, der er tilladt på den. Tildeling af en rolle under brugeroprettelsen afgør derfor præcis, hvad den pågældende konto kan gøre.

MongoDB grupperer sine indbyggede roller i databasebrugerroller, databaseadministrationsroller, klyngeadministrationsroller, backup- og gendannelsesroller samt superbrugerroller. Tabellen nedenfor opsummerer de roller, der oftest bruges ved administration af brugere:

roller Kategori Tildelte privilegier
læse Database bruger Skrivebeskyttet adgang til alle ikke-systemsamlinger i en database.
læseSkrive Database bruger Læseadgang plus indsæt, opdater og slet i samlinger.
dbAdmin Databaseadministrator Skema-, indekserings- og statistikstyring for en database.
brugeradministrator Databaseadministrator Opret og rediger brugere og roller i en enkelt database.
brugerAdminAnyDatabase superbruger Brugeradministration på tværs af alle databaser i instansen.
rod superbruger Fuld adgang til alle ressourcer og operationer.

MongoDB Opret administratorbruger

Oprettelse af en brugeradministrator i MongoDB gøres ved at bruge createUser metoden. Følgende eksempel viser, hvordan dette kan gøres.

db.createUser(
{	user: "Guru99",
	pwd: "password",

	roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})

MongoDB Opret administratorbruger

Code Forklaring:

  1. Det første trin er at angive "brugernavn" og "adgangskode", som skal oprettes.
  2. Det andet trin er at tildele en rolle til brugeren. Da det skal være en databaseadministrator, har vi i så fald tildelt rollen "userAdminAnyDatabase". Denne rolle giver brugeren administratorrettigheder til alle databaser i MongoDB.
  3. db-parameteren angiver admin-databasen, som er en speciel metadatabase indenfor MongoDB der indeholder oplysningerne for denne bruger.

Hvis kommandoen udføres med succes, vil følgende output blive vist:

Output:

MongoDB Opret administratorbruger

Outputtet viser, at en bruger kaldte “Guru99” blev oprettet, og den bruger har rettigheder over alle databaserne i MongoDB.

MongoDB Opret bruger til en enkelt database

For at oprette en bruger, der skal administrere en enkelt database, kan vi bruge den samme kommando som nævnt ovenfor, men vi skal kun bruge indstillingen "userAdmin".

Følgende eksempel viser, hvordan dette kan gøres:

MongoDB Opret bruger til en enkelt database

db.createUser(
{
	user: "Employeeadmin",

	pwd: "password",

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

Code Forklaring:

  1. Det første trin er at angive "brugernavn" og "adgangskode", som skal oprettes.
  2. Det andet trin er at tildele en rolle til brugeren, som i dette tilfælde, da det skal være en databaseadministrator, tildeles rollen "userAdmin". Denne rolle giver brugeren administratorrettigheder kun til den database, der er angivet i db-indstillingen.
  3. Parameteren db angiver den database, som brugeren skal have administrative rettigheder til.

Hvis kommandoen udføres med succes, vil følgende output blive vist:

Output:

MongoDB Opret bruger til en enkelt database

Outputtet viser, at en bruger kaldet "Employeeadmin" blev oprettet, og at brugeren kun har privilegier på "Employee"-databasen.

Håndtering af brugere

Først skal du forstå de roller, du skal definere. Der er en hel liste over roller tilgængelige i MongoDBFor eksempel er der rollen "læs", som kun tillader skrivebeskyttet adgang til databaser, og så er der rollen "læs og skriv", som giver læse- og skriveadgang til databasen. Det betyder, at brugeren kan udføre kommandoerne "indsæt", "slet" og "opdater" på samlinger i den pågældende database.

Håndtering af brugere

db.createUser(
{
	user: "Mohan",

	pwd: "password",

	roles:[
	{ role: "read" , db:"Marketing" },
	{ role: "readWrite" , db:"Sales" }
	]
})

Ovenstående kodestykke viser, at en bruger ved navn Mohan oprettes, og at han tildeles flere roller i flere databaser. I ovenstående eksempel får han skrivebeskyttet tilladelse til "Marketing"-databasen og læse- og skrivetilladelse til "Salg"-databasen.

Sådan får du vist og administrerer MongoDB Brugere

Efter at konti eksisterer, MongoDB indeholder et sæt kommandoer til at inspicere, opdatere og fjerne dem uden at slippe demping og genskaber hver bruger. Disse kommandoer kører mod den database, hvor brugeren blev oprettet, så skift til den korrekte database med use-sætningen, før du udsteder dem.

De mest almindelige brugerstyringskommandoer er:

  • db.getUsers() — viser en liste over alle brugere, der er defineret i den aktuelle database, sammen med de roller, hver enkelt har.
  • db.getUser("brugernavn") — returnerer detaljerne for en enkelt konto, hvilket er nyttigt til revisionsrettigheder.
  • db.grantRolesToUser() — tilføjer en eller flere roller til en eksisterende bruger uden at påvirke nuværende roller.
  • db.tilbagekaldRollerFraBruger() — fjerner specifikke roller og strammer adgangen, når ansvarsområder ændrer sig.
  • db.ændreBrugerAdgangskode() — nulstiller adgangskoden til en konto, mens keepping dens roller intakte.
  • db.dropUser() — sletter en bruger permanent fra databasen.

Eksemplet nedenfor tildeler en ekstra rolle, tilbagekalder en anden, nulstiller en adgangskode og sletter endelig kontoen:

// 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")

Kørsel af db.getUsers() igen efter disse handlinger bekræfter, at ændringerne blev anvendt, og at kun de tilsigtede konti og roller forbliver.

Bedste praksis for MongoDB Bruger Management

Velplanlagte brugerkonti holder en MongoDB Implementeringen er sikker og nem at revidere. Følgende fremgangsmåder reducerer risikoen for utilsigtet dataeksponering og misbrug af rettigheder:

  • Anvend færrest rettigheder: Tildel kun de roller, som en konto reelt har brug for, og prioriter readWrite på en enkelt database frem for brede administrative roller.
  • Undgå rod i produktionen: Reserver rollerne root og userAdminAnyDatabase til opsætning og nødopgaver i stedet for daglig drift.
  • Aktivér godkendelse: Start serveren med -auth-indstillingen, så legitimationsoplysninger rent faktisk håndhæves.
  • Brug stærke adgangskoder: Kombinér længde og kompleksitet, og roter adgangskoder med db.changeUserPassword() efter en tidsplan.
  • Revision regelmæssigt: Review db.getUsers() output med jævne mellemrum og fjerner konti, der ikke længere er nødvendige.

Sammen sikrer disse vaner, at hver konto er afstemt med et reelt behov, og at adgangen kan trachver gang en sikkerhedsgennemgang finder sted.

Ofte Stillede Spørgsmål

Ja. AI-assistenter kan omdanne en almindelig beskrivelse til en gyldig db.createUser()-kommando, tildele det rigtige rollematrix og scope det til en database. Test altid den genererede kommando på en ikke-produktionsdatabase, før du kører den.

Ja. AI-drevne revisionsværktøjer kan læse output fra db.getUsers(), markere konti med root eller userAdminAnyDatabase og foreslå roller med færrest rettigheder. Administratorer bør stadig gennemgå hver anbefaling, før de tilbagekalder adgang i et live-system.

Rollen userAdmin administrerer brugere og roller på én specifik database, mens userAdminAnyDatabase giver brugeradministrationsrettigheder på tværs af alle databaser i instansen. Brug userAdmin til scoped-kontrol og kun userAdminAnyDatabase til betroede administratorer.

Skift til den database, hvor brugeren findes, med kommandoen use, og kør derefter db.dropUser("brugernavn"). MongoDB fjerner kontoen og dens roller i den pågældende database. Bekræft fjernelsen ved at køre db.getUsers() bagefter.

Opsummer dette indlæg med: