Hoe u een gebruiker maakt en een rol toevoegt MongoDB
โก Slimme samenvatting
Een gebruiker aanmaken en een rol toevoegen in MongoDB Het maakt gebruik van de db.createUser()-methode om referenties te definiรซren, ingebouwde rollen toe te wijzen en privileges te beperken tot specifieke databases, waardoor de toegangscontrole voor beheerdersaccounts en accounts voor รฉรฉn database wordt versterkt.
Wat zijn ingebouwde rollen in MongoDB?
Voordat je een account aanmaakt, is het handig om de ingebouwde rollen te begrijpen. MongoDB Een rol is een benoemde verzameling van privileges, waarbij elk privilege een bron (een database of verzameling) koppelt aan de acties die erop zijn toegestaan. Het toewijzen van een rol tijdens het aanmaken van een gebruiker bepaalt dus precies wat dat account kan doen.
MongoDB Het systeem groepeert zijn ingebouwde rollen in databasegebruikersrollen, databasebeheerrollen, clusterbeheerrollen, back-up- en herstelrollen en supergebruikersrollen. De onderstaande tabel geeft een overzicht van de rollen die het vaakst worden gebruikt bij het beheren van gebruikers:
| Rol | Categorie | Verleende privileges |
|---|---|---|
| dit artikel lezen | Databasegebruiker | Alleen-leestoegang tot alle niet-systeemcollecties in een database. |
| lezenSchrijven | Databasegebruiker | Leesrechten plus invoeg-, update- en verwijderrechten voor collecties. |
| dbAdmin | Databasebeheerder | Schema-, indexerings- en statistiekbeheer voor een database. |
| gebruikersbeheerder | Databasebeheerder | Gebruikers en rollen aanmaken en wijzigen in รฉรฉn enkele database. |
| gebruikerAdminAnyDatabase | superuser | Gebruikersbeheer voor alle databases in de instantie. |
| wortel | superuser | Volledige toegang tot alle middelen en processen. |
MongoDB Beheerdergebruiker aanmaken
Een gebruikersbeheerder aanmaken in MongoDB wordt gedaan met behulp van de createUser-methode. Het volgende voorbeeld laat zien hoe dit kan worden gedaan.
db.createUser(
{ user: "Guru99",
pwd: "password",
roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Code Uitleg:
- De eerste stap is het specificeren van de โgebruikersnaamโ en het โwachtwoordโ die moeten worden aangemaakt.
- De tweede stap is het toewijzen van een rol aan de gebruiker. Omdat het een databasebeheerder moet zijn, hebben we de rol "userAdminAnyDatabase" toegewezen. Deze rol geeft de gebruiker beheerdersrechten voor alle databases in de database. MongoDB.
- De parameter db specificeert de beheerdersdatabase, een speciale metadatabase binnen MongoDB die de informatie voor deze gebruiker bevat.
Als de opdracht succesvol is uitgevoerd, wordt de volgende uitvoer weergegeven:
Output:
De uitvoer laat zien dat een gebruiker genaamd "Guru"99" is aangemaakt en die gebruiker heeft privileges over alle databases in MongoDB.
MongoDB Gebruiker maken voor รฉรฉn database
Om een โโgebruiker aan te maken die รฉรฉn enkele database beheert, kunnen we hetzelfde commando gebruiken als hierboven vermeld, maar we hoeven alleen de optie "userAdmin" te gebruiken.
Het volgende voorbeeld laat zien hoe dit gedaan kan worden:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Uitleg:
- De eerste stap is het specificeren van de โgebruikersnaamโ en het โwachtwoordโ die moeten worden aangemaakt.
- De tweede stap is het toewijzen van een rol aan de gebruiker. In dit geval, aangezien het een databasebeheerder moet zijn, wordt de rol "userAdmin" toegewezen. Deze rol geeft de gebruiker alleen beheerdersrechten voor de database die is gespecificeerd in de db-optie.
- De parameter db specificeert de database waarvoor de gebruiker beheerdersrechten moet hebben.
Als de opdracht succesvol is uitgevoerd, wordt de volgende uitvoer weergegeven:
Output:
Uit de uitvoer blijkt dat er een gebruiker met de naam โEmployeeadminโ is aangemaakt en dat die gebruiker alleen bevoegdheden heeft voor de database โEmployeeโ.
Gebruikers beheren
Begrijp eerst welke rollen je moet definiรซren. Er is een hele lijst met rollen beschikbaar in MongoDBZo is er bijvoorbeeld de rol 'lezen', die alleen leesrechten tot databases verleent, en de rol 'lezen en schrijven', die lees- en schrijfrechten tot de database biedt. Dit betekent dat de gebruiker invoeg-, verwijder- en updateopdrachten kan uitvoeren op collecties in die database.
db.createUser(
{
user: "Mohan",
pwd: "password",
roles:[
{ role: "read" , db:"Marketing" },
{ role: "readWrite" , db:"Sales" }
]
})
Het bovenstaande codefragment laat zien dat een gebruiker genaamd Mohan wordt aangemaakt en dat hem meerdere rollen in meerdere databases worden toegewezen. In het bovenstaande voorbeeld krijgt hij alleen leesrechten voor de database "Marketing" en lees- en schrijfrechten voor de database "Sales".
Hoe u informatie kunt bekijken en beheren MongoDB Gebruikers
Nadat er accounts bestaan, MongoDB biedt een reeks opdrachten om ze te inspecteren, bij te werken en te verwijderen zonder ze te laten vallen.ping en het opnieuw aanmaken van elke gebruiker. Deze opdrachten worden uitgevoerd op de database waarin de gebruiker is aangemaakt, dus schakel over naar de juiste database met de `use`-instructie voordat u ze uitvoert.
De meest voorkomende gebruikersbeheeropdrachten zijn:
- db.getUsers() โ geeft een overzicht van alle gebruikers die in de huidige database zijn gedefinieerd, samen met de rollen die elk van hen heeft.
- db.getUser(โgebruikersnaamโ) โ Geeft de details van een enkel account weer, wat handig is voor het controleren van toegangsrechten.
- db.grantRolesToUser() โ voegt een of meer rollen toe aan een bestaande gebruiker zonder de huidige rollen te beรฏnvloeden.
- db.revokeRolesFromUser() โ verwijdert specifieke rollen en beperkt de toegang wanneer verantwoordelijkheden veranderen.
- db.changeUserPassword() โ reset het wachtwoord voor een account terwijl het account behouden blijftping De rollen blijven intact.
- db.dropUser() โ Hiermee wordt een gebruiker permanent uit de database verwijderd.
Het onderstaande voorbeeld kent een extra rol toe, trekt een andere rol in, reset een wachtwoord en verwijdert ten slotte het account:
// 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")
Door db.getUsers() na deze bewerkingen opnieuw uit te voeren, wordt bevestigd dat de wijzigingen zijn doorgevoerd en dat alleen de beoogde accounts en rollen overblijven.
Beste praktijken voor MongoDB user management
Goed geplande gebruikersaccounts zorgen voor een MongoDB Een veilige en eenvoudig te controleren implementatie. De volgende werkwijzen verkleinen het risico op onbedoelde datalekken en misbruik van bevoegdheden:
- Pas de minste privileges toe: Wijs alleen de rollen toe die een account daadwerkelijk nodig heeft, waarbij lees- en schrijfrechten voor รฉรฉn enkele database de voorkeur krijgen boven brede beheerdersrollen.
- Vermijd root-toegang in productieomgevingen: Reserveer de rollen root en userAdminAnyDatabase voor installatie- en noodtaken, en niet voor dagelijkse werkzaamheden.
- Authenticatie inschakelen: Start de server met de optie โauth zodat de authenticatie daadwerkelijk wordt afgedwongen.
- Gebruik sterke wachtwoorden: Combineer lengte en complexiteit en roteer wachtwoorden volgens een schema met db.changeUserPassword().
- Regelmatig controleren: RevBekijk periodiek de uitvoer van db.getUsers() en verwijder accounts die niet langer nodig zijn.
Deze werkwijzen zorgen er gezamenlijk voor dat elk account aansluit op een reรซle behoefte en dat toegang mogelijk is. traced telkens wanneer er een beveiligingscontrole plaatsvindt.






