Ga naar hoofdinhoud

Role-based access control (RBAC) in MongoDB

Ontdek role-based access control (RBAC) in MongoDB voor het beheren van gebruikers en rollen, het maken van aangepaste rollen en het afdwingen van least-privilegebeleid voor deployments.
Bijgewerkt 2 okt 2026  · 5 min lezen

Verken met AI

ChatGPTClaudePerplexity

Nu in dit digitale tijdperk steeds meer mensen online komen, is er een grotere behoefte aan het definiëren van permissies en rollen om de beveiliging te waarborgen en de toegang tot applicaties en systemen te beheren. Role-based access control is een autorisatiemodel dat wordt gebruikt om de toegang tot resources te beheren op basis van vooraf gedefinieerde rollen van gebruikers. 

Met het RBAC-model van MongoDB worden acties weergegeven in de vorm van rollen, die aan de juiste gebruikers worden toegewezen. In plaats van bijvoorbeeld meerdere individuele permissies toe te wijzen, kun je één rol toewijzen (bijv. dbAdmin), die automatisch de gedefinieerde set permissies bevat (bijv. read op collecties in de database). Dit model maakt het eenvoudig om gebruikers­toegang op een schaalbare manier te beheren.

RBAC inschakelen in MongoDB

Binnen het kern-RBAC-model is toegang standaard geweigerd, wat betekent dat gebruikers geen toegang tot resources hebben zonder een rol. Gebruikers kunnen meerdere rollen krijgen, en elke rol kan een specifieke set privileges of permissies hebben om bepaalde mogelijkheden te gebruiken.

Kernconcepten van RBAC

Hier zijn enkele kernconcepten die je over RBAC moet weten:

Gebruikers

In het RBAC-model is een gebruiker een entiteit waaraan één of meer rollen worden toegekend die bepalen welke toegang de gebruiker heeft tot databaseresources en -bewerkingen. Een gebruiker heeft geen toegang tot een systeem als er geen rollen zijn toegewezen. Om toegang te krijgen tot een systeem moeten gebruikers zich authenticeren en minimaal één rol toegewezen krijgen.

Rollen

MongoDB biedt ingebouwde rollen en privileges voor zelfbeheerde deployments en voor MongoDB Atlas. Enkele veelvoorkomende ingebouwde rollen zijn read, readWrite en dbAdmin/atlasAdmin. Databasebeheerdersrollen hebben hogere privileges dan andere databasegebruikersrollen, waaronder het privilege om de privileges van andere rollen te beheren.

Als deze ingebouwde rollen niet de gewenste set privileges bieden, stelt MongoDB je in staat eigen rollen te maken en te wijzigen.

Een rol is een set privileges die aan de gebruiker wordt toegewezen.

Een “read”-rol kan bijvoorbeeld alleen-lezenprivileges hebben, een “admin”-rol kan lees- en schrijfrechten hebben, terwijl de “owner”-rol lees-, schrijf- en verwijderrechten kan hebben voor een specifiek item (een database, een document, enz.).  Een rol verleent privileges om de gespecificeerde acties op resources uit te voeren. Elk privilege wordt expliciet in de rol gespecificeerd of geërfd van een andere rol, of beide.

Door de gebruiker gedefinieerde rollen / Custom roles

MongoDB biedt een aantal ingebouwde rollen die beheerders kunnen gebruiken om de toegang tot een MongoDB-systeem te beheren. Maar als de bestaande rollen niet precies de privileges beschrijven die je wilt, kun je nieuwe rollen definiëren en toewijzen aan gebruikers in een database — dat is een custom role. Met uitzondering van rollen die in de admin-database zijn gemaakt, kan een rol alleen privileges bevatten die van toepassing zijn op zijn eigen database en alleen erven van andere rollen in diezelfde database.

Om een nieuwe rol te maken, gebruik je de methode db.createRole(), waarbij je de privileges opgeeft in de privileges-array en de geërfde rollen in de roles-array.

MongoDB gebruikt de combinatie van de databasenaam en de rolename om een rol uniek te definiëren, en slaat alle rolinformatie op in de collectie admin.system.roles in de admin-database.

Voorbeeld: Dit voorbeeld maakt een aangepaste rol (sales_attendant) die alleen documenten kan invoegen in de sales-collectie binnen de sales_db-database.

use sales
db.createRole(
   {
     role: "sales_attendant",
     privileges: [
       {
         resource: { db: "sales_db", collection: "sales" },
         actions: [ "insert" ]
       }
     ],
     roles: []
   }
)

Ingebouwde rollen 

Ingebouwde rollen zijn vooraf aangemaakte rollen die aan gebruikers worden toegewezen en waarmee ze bewerkingen kunnen uitvoeren, zoals lezen en schrijven op collecties in een database. Voorbeelden van ingebouwde rollen zijn read, write, readWrite, dbAdmin en readAnyDatabase.

  • read en readWrite (toegang op databaseniveau): Deze rollen verlenen respectievelijk alleen-lezen- of lees-/schrijftoegang tot alle niet-systeemcollecties binnen een opgegeven database.
  • dbAdmin: Deze rol verleent de administratieve rechten die nodig zijn voor het beheren van een specifieke database, zoals het aanmaken, verwijderen en aanpassen van indexen en collecties. Dit is geschikt voor developmentteams of scripts voor databaseonderhoud.
  • clusterAdmin (operationele toegang): Deze rol heeft hoge privileges en is meestal voorbehouden aan operations‑personeel (DevOps/Ops). De rol verleent permissies die nodig zijn om de volledige MongoDB‑deployment te beheren, waaronder het maken van periodieke back-ups, het configureren van replica sets en sharding.

Privileges (permissies)

Privileges zijn een set acties (bijv. find, insert) die zijn toegestaan voor een mogelijkheid.

Als de mogelijkheid bijvoorbeeld is om “de klant te informeren over zijn huidige saldo”, dan zouden de gebruikersprivileges (stel: de baliemedewerker) alleen-lezen kunnen zijn. Als de mogelijkheid is om de transactielimiet van een bankrekening te verhogen, dan zouden de privileges lezen en schrijven kunnen zijn.

Geërfde privileges

Een rol kan een of meer bestaande rollen bevatten (inclusief alle privileges). Zo kan een dbAdmin-rol read-, write- en update‑rollen (die afzonderlijke rollen kunnen zijn) omvatten met de bijbehorende privileges.

Resources

Een resource is een database, collectie, set collecties of de cluster. 

Het principe van least privilege toepassen

In moderne databasebeveiliging is het principe van least privilege (PoLP) cruciaal. Dit principe stelt dat iedere gebruiker alleen de minimale permissies moet krijgen die nodig zijn om de vereiste taken uit te voeren.

Hier is een voorbeeld van best practice: maak in plaats van een globale readWrite‑gebruiker applicatiespecifieke gebruikers. Als je inventoryservice bijvoorbeeld alleen communiceert met de app_data‑database, dan moet de applicatiegebruiker alleen readWrite‑toegang krijgen tot die ene database. Deze compartimentering voorkomt dat een gecompromitteerde service ongeautoriseerde toegang krijgt tot andere databases (zoals billing of users).

Codevoorbeeld: 

Een gebruiker met least privilege maken. Dit voorbeeld maakt een gebruiker (branch_manager) met lees-/schrijfrechten die strikt beperkt zijn tot de bank_data‑database.

use admin
db.createUser(
   {
     user: "branch_manager",
     pwd: passwordPrompt(),
     roles: [ 
       { role: "readWrite", db: "bank_data" }
     ]
   }
)

Best practices

  • Definieer en wijs goed omschreven rollen en beleidsregels vooraf toe.
  • Volg het principe van least privilege voor strakke beveiliging.
  • Gebruik waar mogelijk ingebouwde rollen; audit toegewezen rollen periodiek om afwijkingen te ontdekken.

FAQ's

Wat is RBAC in MongoDB?

Role-based access control is een beveiligingscontrole die wordt gebruikt om gebruikers­toegang te beheren.

Wat is het verschil tussen een ingebouwde rol en een custom role?

Een ingebouwde rol is een vooraf aangemaakte rol die aan gebruikers wordt toegewezen en waarmee ze bewerkingen kunnen uitvoeren, zoals lezen en schrijven op collecties in een database. Een custom role is een door de gebruiker gedefinieerde rol die de specifieke privileges beschrijft die je wilt.

Waarom is het principe van least privilege belangrijk?

Het is belangrijk omdat het ervoor zorgt dat gebruikers alleen de minimale permissies krijgen die nodig zijn om hun taken uit te voeren.

Als je wilt dat een filiaalmanager alleen kan lezen en schrijven in een specifieke database, welk type rol wijs je dan toe?

readWrite

Welke opdracht wordt gebruikt om een custom role te maken?

db.createRole()


Afi Gbadago's photo
Author
Afi Gbadago
LinkedIn

Afi maakt zich sterk voor developers bij MongoDB, met een focus op Django en Python. Ze helpt engineers bouwen met moderne datatechnologieën via tutorials, talks en communitybetrokkenheid. Als erkende Microsoft MVP voor Python en het web zit ze in het bestuur van de Django Software Foundation en is ze Programme Chair voor DjangoCon US 2025. Afi is ook Regional Executor voor Black Python Devs en een actieve open-sourcestukschrijver en internationale spreker.

Onderwerpen
MongoDB

Topcursussen op DataCamp

Cursus

Introductie tot MongoDB in Python

3 uur
24.3K
Leer hoe je flexibel gestructureerde data kunt bewerken en analyseren met MongoDB.
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken