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.
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"}]})
Code Forklaring:
- Det første trin er at angive "brugernavn" og "adgangskode", som skal oprettes.
- 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.
- 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:
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:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Forklaring:
- Det første trin er at angive "brugernavn" og "adgangskode", som skal oprettes.
- 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.
- 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:
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.
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.






