Hvordan opprette bruker og legge til rolle i MongoDB

โšก Smart oppsummering

Opprette en bruker og legge til en rolle i MongoDB er avhengig av db.createUser()-metoden for รฅ definere legitimasjonsinformasjon, tilordne innebygde roller og omfangsrettigheter til spesifikke databaser, noe som styrker tilgangskontrollen pรฅ tvers av administrative kontoer og kontoer for รฉn database.

  • ๐Ÿ”‘ Kjernemetode: Kommandoen db.createUser() klargjรธr en konto ved รฅ spesifisere brukeren, passordet og en roller-matrise i รฉn enkelt setning.
  • ๐Ÿ›ก๏ธ Administratoromfang: Rollen userAdminAnyDatabase gir administrasjonsrettigheter pรฅ tvers av alle databaser, mens userAdmin begrenser kontrollen til รฉn navngitt database.
  • ๐ŸŽฏ Rolletildeling: Innebygde roller som read og readWrite tilordner presist til handlingene en bruker kan utfรธre pรฅ en samling.
  • ๐Ÿ‘ฅ Flere databaser: En enkelt konto kan inneholde forskjellige roller pรฅ tvers av flere databaser i รฉn rollematrise.
  • โœ… Verifikasjon: Metoden db.getUsers() og det returnerte resultatet bekrefter at kontoer og rettigheter ble riktig klargjort.

Slik oppretter du en bruker og legger til en rolle MongoDB

Hva er innebygde roller i MongoDB?

Fรธr du oppretter en konto, er det nyttig รฅ forstรฅ de innebygde rollene som MongoDB gir. En rolle er en navngitt samling av privilegier, og hvert privilegium kobler en ressurs (en database eller samling) med handlingene som er tillatt pรฅ den. Tildeling av en rolle under brukeropprettelsen avgjรธr derfor nรธyaktig hva den kontoen kan gjรธre.

MongoDB grupperer de innebygde rollene i databasebrukerroller, databaseadministrasjonsroller, klyngeadministrasjonsroller, sikkerhetskopierings- og gjenopprettingsroller og superbrukerroller. Tabellen nedenfor oppsummerer rollene som brukes oftest nรฅr man administrerer brukere:

Rolle Kategori Privilegier gitt
lese Databasebruker Skrivebeskyttet tilgang til alle ikke-systemsamlinger i en database.
leseSkrive Databasebruker Lesetilgang pluss innsetting, oppdatering og sletting i samlinger.
dbAdmin Databaseadministrator Skjema-, indekserings- og statistikkhรฅndtering for en database.
brukeradministrator Databaseadministrator Opprett og endre brukere og roller i รฉn enkelt database.
brukerAdminAnyDatabase Superbruker Brukeradministrasjon pรฅ tvers av alle databaser i instansen.
root Superbruker Full tilgang til alle ressurser og operasjoner.

MongoDB Opprett administratorbruker

Opprette en brukeradministrator i MongoDB gjรธres ved รฅ bruke createUser-metoden. Fรธlgende eksempel viser hvordan dette kan gjรธres.

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

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

MongoDB Opprett administratorbruker

Code Forklaring:

  1. Det fรธrste trinnet er รฅ spesifisere "brukernavnet" og "passordet" som mรฅ opprettes.
  2. Det andre trinnet er รฅ tildele en rolle til brukeren. Siden det mรฅ vรฆre en databaseadministrator, har vi i sรฅ fall tildelt rollen ยซuserAdminAnyDatabaseยป. Denne rollen lar brukeren ha administratorrettigheter til alle databaser i MongoDB.
  3. db-parameteren spesifiserer admin-databasen, som er en spesiell metadatabase innenfor MongoDB som inneholder informasjonen for denne brukeren.

Hvis kommandoen utfรธres vellykket, vil fรธlgende utgang vises:

Utgang:

MongoDB Opprett administratorbruker

Resultatet viser at en bruker kalte ยซGuru99โ€ ble opprettet, og den brukeren har rettigheter over alle databasene i MongoDB.

MongoDB Opprett bruker for enkeltdatabase

For รฅ opprette en bruker som skal administrere รฉn database, kan vi bruke samme kommando som nevnt ovenfor, men vi trenger bare รฅ bruke alternativet ยซuserAdminยป.

Fรธlgende eksempel viser hvordan dette kan gjรธres:

MongoDB Opprett bruker for enkeltdatabase

db.createUser(
{
	user: "Employeeadmin",

	pwd: "password",

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

Code Forklaring:

  1. Det fรธrste trinnet er รฅ spesifisere "brukernavnet" og "passordet" som mรฅ opprettes.
  2. Det andre trinnet er รฅ tilordne en rolle for brukeren, som i dette tilfellet, siden det mรฅ vรฆre en databaseadministrator, er tildelt rollen ยซuserAdminยป. Denne rollen lar brukeren ha administratorrettigheter kun til databasen som er spesifisert i db-alternativet.
  3. Parameteren db spesifiserer databasen som brukeren skal ha administrative rettigheter til.

Hvis kommandoen utfรธres vellykket, vil fรธlgende utgang vises:

Utgang:

MongoDB Opprett bruker for enkeltdatabase

Utdataene viser at en bruker kalt "Employeeadmin" ble opprettet og at brukeren har rettigheter kun pรฅ "Employee"-databasen.

Administrere brukere

Fรธrst mรฅ du forstรฅ rollene du mรฅ definere. Det finnes en hel liste over roller tilgjengelig i MongoDBFor eksempel finnes det rollen ยซleseยป, som kun gir skrivebeskyttet tilgang til databaser, og sรฅ finnes det rollen ยซlese og skriveยป, som gir lese- og skrivetilgang til databasen. Dette betyr at brukeren kan utstede kommandoene ยซsett innยป, ยซslettยป og ยซoppdaterยป pรฅ samlinger i den databasen.

Administrere brukere

db.createUser(
{
	user: "Mohan",

	pwd: "password",

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

Kodestykket ovenfor viser at en bruker kalt Mohan opprettes, og han er tildelt flere roller i flere databaser. I eksemplet ovenfor fรฅr han skrivebeskyttet tillatelse til ยซMarkedsfรธringยป-databasen og lese- og skrivetillatelse til ยซSalgยป-databasen.

Slik viser og administrerer du MongoDB brukere

Etter at kontoer finnes, MongoDB gir et sett med kommandoer for รฅ inspisere, oppdatere og fjerne dem uten รฅ slippe demping og gjenoppretting av hver bruker. Disse kommandoene kjรธrer mot databasen der brukeren ble opprettet, sรฅ bytt til riktig database med use-setningen fรธr du utsteder dem.

De vanligste kommandoene for brukeradministrasjon er:

  • db.getUsers() โ€” viser alle brukere som er definert i gjeldende database, sammen med rollene hver enkelt har.
  • db.getUser(โ€œbrukernavnโ€) โ€” returnerer detaljene for en enkelt konto, noe som er nyttig for revisjonsrettigheter.
  • db.grantRolesToUser() โ€” legger til รฉn eller flere roller til en eksisterende bruker uten รฅ pรฅvirke nรฅvรฆrende roller.
  • db.revokeRolesFromUser() โ€” fjerner spesifikke roller og strammer inn tilgangen nรฅr ansvarsomrรฅder endres.
  • db.endreBrukerpassord() โ€” tilbakestiller passordet for en konto mens keepping dens roller intakte.
  • db.dropUser() โ€” sletter en bruker permanent fra databasen.

Eksemplet nedenfor gir en ekstra rolle, tilbakekaller en annen, tilbakestiller et passord og sletter til slutt 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")

ร… kjรธre db.getUsers() pรฅ nytt etter disse operasjonene bekrefter at endringene ble brukt, og at bare de tiltenkte kontoene og rollene gjenstรฅr.

Beste praksis for MongoDB brukeradministrasjon

Godt planlagte brukerkontoer holder en MongoDB distribusjon sikker og enkel รฅ revidere. Fรธlgende fremgangsmรฅter reduserer risikoen for utilsiktet dataeksponering og misbruk av rettigheter:

  • Bruk minste privilegium: Gi kun rollene en konto virkelig trenger, og prioriter readWrite pรฅ รฉn enkelt database fremfor brede administrative roller.
  • Unngรฅ rot i produksjon: Reserver root- og userAdminAnyDatabase-rollene for oppsett og nรธdoppgaver i stedet for daglig drift.
  • Aktiver autentisering: Start serveren med โ€“auth-alternativet slik at legitimasjonsinformasjonen faktisk hรฅndheves.
  • Bruk sterke passord: Kombiner lengde og kompleksitet, og roter passord med db.changeUserPassword() etter en tidsplan.
  • Revisjon regelmessig: Review db.getUsers() sender ut jevnlig og fjerner kontoer som ikke lenger er nรธdvendige.

Sammen sikrer disse vanene at hver konto er knyttet til et reelt behov, og at tilgang kan trachver gang en sikkerhetsgjennomgang finner sted.

Spรธrsmรฅl og svar

Ja. AI-assistenter kan gjรธre en enkel beskrivelse om til en gyldig db.createUser()-kommando, tilordne riktig roller-array og sette omfanget til en database. Test alltid den genererte kommandoen pรฅ en ikke-produksjonsdatabase fรธr du kjรธrer den.

Ja. AI-drevne revisjonsverktรธy kan lese utdata fra db.getUsers(), flagge kontoer som inneholder root- eller userAdminAnyDatabase-kontoer, og foreslรฅ roller med minst privilegium. Administratorer bรธr fortsatt gjennomgรฅ hver anbefaling fรธr de tilbakekaller tilgang i et aktivt system.

Rollen userAdmin administrerer brukere og roller pรฅ รฉn spesifikk database, mens userAdminAnyDatabase gir brukeradministrasjonsrettigheter pรฅ tvers av alle databasene i instansen. Bruk userAdmin for kontroll med omfang og userAdminAnyDatabase bare for klarerte administratorer.

Bytt til databasen der brukeren finnes med use-kommandoen, og kjรธr deretter db.dropUser(โ€œbrukernavnโ€). MongoDB fjerner kontoen og dens roller i den databasen. Bekreft fjerningen ved รฅ kjรธre db.getUsers() etterpรฅ.

Oppsummer dette innlegget med: