Ga naar hoofdinhoud

MongoDB-beveiliging 101: kernfuncties die elke developer moet kennen

Beheers authenticatie, role-based access control (RBAC), PoLP, TLS/SSL-versleuteling en CSFLE om veilige, performante NoSQL-applicaties te bouwen.
Bijgewerkt 2 okt 2026  · 10 min lezen

Verken met AI

ChatGPTClaudePerplexity

MongoDB biedt een uitgebreid beveiligingsraamwerk gebaseerd op drie kernprincipes: authenticatie, autorisatie en versleuteling.

Deze pijlers vormen een gelaagde beveiligingsverdediging, zodat één fout niet het hele systeem in gevaar brengt. De autorisatiepijler wordt gestuurd door het principe van minimale privileges (PoLP), zodat elke gebruiker of applicatie alleen de minimale rechten heeft die nodig zijn om taken uit te voeren. 

Door deze complete, gelaagde aanpak te implementeren, versterk je je algehele beveiligingshouding en verlaag je het risico op misconfiguraties of inbreuken aanzienlijk. 

De eerste poort openen: authenticatie

Authenticatie is de fundamentele beveiligingsstap. Het verifieert de identiteit van elke partij die verbinding probeert te maken. In MongoDB doe je dit door beveiligingsfuncties in te schakelen die standaard zijn uitgeschakeld voor gemak bij lokale ontwikkeling.

Standaard luistert je MongoDB-implementatie alleen op localhost en staat deze niet-geverifieerde toegang toe. Deze configuratie is bewust zo gekozen, om de eerste setup en lokaal experimenteren zo eenvoudig mogelijk te maken.

Voor elke productie-implementatie verdienen twee instellingen de aandacht van developers:

  • Authenticatiestatus: Authenticatie is standaard uitgeschakeld. Je kunt autorisatie inschakelen via de --auth of de instelling security.authorization. Het inschakelen van interne authenticatie schakelt ook clientautorisatie in. Let op: zodra toegangscontrole is ingeschakeld, moeten gebruikers zichzelf authenticeren.
  • Netwerkbinding (bindIp): Standaard binden de MongoDB-binaries (mongod en mongos) alleen aan localhost. Deze veilige standaard beperkt verbindingen tot dezelfde machine. Voor productieomgevingen moet je de instelling bindIp expliciet configureren met de IP-adressen van je geautoriseerde applicatieservers. Als je IPv6-ondersteuning nodig hebt, kun je de net.ipv6 configuratiebestandsinstelling of de commandoregeloptie --ipv6 gebruiken, waardoor de binary ook bindt aan het localhost-IPv6-adres. Beperk dit altijd tot geautoriseerde netwerkinterfaces.

2. Hoe je authenticatie inschakelt

Door authenticatie in te schakelen verandert MongoDB van een lokale playground in een veilige data-opslag. Dit doe je door je MongoDB-configuratiebestand (meestal mongod.conf) aan te passen en de server te herstarten.

Instelling in configuratiebestand: Zet de autorisatieoptie in de sectie security om de functie in te schakelen:

  authorization: enabled

De eerste gebruiker: Zodra authenticatie is ingeschakeld, kan niemand verbinden totdat je een beheerder aanmaakt. Deze cruciale eerste gebruiker moet worden aangemaakt in de admin-database, waarbij je de initiële rechten toekent die nodig zijn om het systeem te beheren en andere gebruikers aan te maken.

3. Beheer van gebruikers en wachtwoorden (createUser)

Na het inschakelen van autorisatie wordt alle database-toegang geregeld door gebruikers en hun bijbehorende rollen. Je gebruikt het commando createUser om deze identiteiten te definiëren.

Syntaxis en rollen: Bij het aanmaken van een gebruiker geef je de gebruikersnaam, het wachtwoord en een array van rollen op. Rollen definiëren hun rechten (bijv. readWrite op een specifieke database).

db.createUser(
   {
     user: "appUser",
     pwd: passwordPrompt(),  // This function prompts for a password, which 
                                              // avoids storing the plain-text password in 
                                              // shell history and command logs.
     roles: [ { role: "readWrite", db: "inventory" } ]
   }
)

SCRAM-standaard: MongoDB vertrouwt op het Salted Challenge Response Authentication Mechanism (SCRAM) om wachtwoorden veilig te verwerken. SCRAM slaat geen wachtwoorden in platte tekst op, maar gebruikt cryptografisch sterke hashing en salting, waardoor het robuust is tegen veelvoorkomende aanvalsvectoren zoals rainbow table-aanvallen.

4. Geavanceerde authenticatie-opties

Voor organisaties met strikte compliance-eisen of complexe infrastructuur biedt MongoDB integratie met bestaande authenticatiesystemen op ondernemingsniveau:

  • x.509 clientcertificaten: Hiermee kunnen clients zich authenticeren met digitale certificaten in plaats van wachtwoorden, wat een robuuste laag identiteitsverificatie biedt, vaak gebruikt voor machine-to-machine vertrouwen.
  • LDAP/Kerberos: Integreert MongoDB met externe services zoals Active Directory of OpenLDAP, zodat gebruikers hun bestaande bedrijfsinloggegevens kunnen gebruiken voor database-toegang.
  • OpenID Connect (OIDC)-authenticatie - Workforce en Workloads: Voor moderne cloud-native en hybride omgevingen ondersteunt MongoDB Identity Federation voor zowel Workforce (gebruikers­toegang via IdP's zoals Azure AD, Okta) als Workload (machine-to-machine authenticatie met cloudprovider-identiteit, zoals AWS IAM of Google Cloud Service Accounts).

Autorisatie: rollen definiëren met RBAC

Authenticatie bevestigt wie een gebruiker is; autorisatie bepaalt wat die gebruiker mag doen. Het Role-Based Access Control (RBAC)-systeem van MongoDB is het kernmechanisme voor het beheren van rechten, zodat gebruikers en services alleen met de data en opdrachten interageren die ze strikt nodig hebben.

1. Role-Based Access Control

In het RBAC-model van MongoDB worden rechten gebundeld in rollen, en deze rollen worden toegewezen aan gebruikers. In plaats van honderden individuele rechten toe te wijzen, wijs je één rol toe (bijv. inventoryReader), die automatisch de gedefinieerde set rechten bevat (bijv. lezen op inventory.products). Dit maakt rechtenbeheer schaalbaar en controleerbaar.

2. Ingebouwde rollen die elke developer nodig heeft

MongoDB biedt een robuuste set ingebouwde rollen die de meest voorkomende toegangspatronen dekken. Hieronder een paar voorbeelden. Voor de volledige set kun je de link hierboven raadplegen.

  • read en readWrite (database-niveau): Dit zijn de meest gebruikte rollen voor applicatiegebruikers. Ze geven respectievelijk lees- of lees-/schrijfrechten op alle niet-systeemcollecties binnen een opgegeven database.
  • dbAdmin: Geeft de beheerrechten die nodig zijn om een specifieke database te beheren, zoals het aanmaken, droppen en wijzigen van indexen en collecties. Geschikt voor developmentteams of scripts voor database-onderhoud.
  • clusterAdmin (operationele toegang): Deze rol met hoge rechten is doorgaans voorbehouden aan operations (DevOps/Ops). Ze verleent de rechten die nodig zijn om de hele MongoDB-omgeving te beheren, inclusief het configureren van replica sets, sharding en het maken van back-ups. Applicatiedevelopers hebben deze rol zelden nodig.

3. Het principe van minimale privileges toepassen

De hoeksteen van moderne databasebeveiliging is het principe van minimale privileges (PoLP). Dit houdt in dat elke gebruiker (vooral applicatiegebruikers) alleen de minimaal benodigde rechten krijgt om hun taken uit te voeren, en niet meer dan dat.

Een best practice-voorbeeld: In plaats van een globale readWrite-gebruiker te gebruiken, maak je applicatiespecifieke gebruikers aan. Als je voorraaddienst bijvoorbeeld alleen met de database app_data werkt, dan krijgt de applicatiegebruiker alleen readWrite-toegang 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 minimale privileges aanmaken

Dit voorbeeld maakt een gebruiker (inventory_service) met lees-/schrijfrechten die strikt beperkt zijn tot de database app_data.

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

4. Aangepaste rollen maken (als ingebouwd niet volstaat)

Hoewel ingebouwde rollen krachtig zijn, kunnen compliance-eisen of complexe applicatielogica zeer fijnmazige controle vereisen. In zulke gevallen kun je in MongoDB aangepaste rollen definiëren met het commando db.createRole().

Fijnmazige rechten definiëren: Met aangepaste rollen kun je exact specificeren welke privilege-acties (bijv. find, update, insert) mogen worden uitgevoerd op resources met scope op cluster-, database- of collectie­niveau. Organisaties kunnen technieken zoals field-level redaction inzetten om zeer gevoelige data­velden te beschermen binnen een verder openbare collectie.

Codevoorbeeld: een aangepaste rol maken

Dit voorbeeld maakt een aangepaste rol (product_creator) die alleen documenten mag inserten in de collectie products binnen de database app_data.

use app_data
db.createRole(
   {
     role: "product_creator",
     privileges: [
       {
         resource: { db: "app_data", collection: "products" },
         actions: [ "insert" ]
       }
     ],
     roles: []
   }
)

Uitgebreide databeveiliging: netwerkisolatie en versleuteling

Hoewel sterke authenticatie en autorisatie de toegang tot je database beheersen, vereist totale beveiliging ook bescherming van de data zelf — zowel tijdens transport over het netwerk (in transit) als wanneer deze op schijf staat (at rest).

1. Data in transit beschermen met TLS/SSL

Datatransport over elk netwerk, of dat nu intern in een datacenter is of extern naar de cloud, moet worden versleuteld om afluisteren en man-in-the-middle (MITM)-aanvallen te voorkomen. MongoDB gebruikt Transport Layer Security/Secure Sockets Layer (TLS/SSL) om alle communicatie tussen clients (zoals je applicatie) en de server te versleutelen.

Zonder TLS/SSL worden gebruikers­gegevens, queryparameters en gevoelige resultaten in platte tekst verzonden, waardoor ze eenvoudig te onderscheppen zijn. Door TLS/SSL in te schakelen, wordt data versleuteld en beveiligd tijdens de overdracht.

TLS/SSL inschakelen: Dit gebeurt voornamelijk via configuratie-instellingen, waarin je de certificaten opgeeft die de server moet gebruiken voor identiteitsverificatie en sleuteluitwisseling voor versleuteling:

net:
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/mongodb.pem
  • net.ssl.mode: requireTLS dwingt af dat alle inkomende verbindingen TLS/SSL gebruiken en weigert onveilige pogingen.
  • certificateKeyFile verwijst respectievelijk naar je gegenereerde TLS/SSL-certificaat en het Certificate Authority-bestand.

2. Firewall en netwerksegmentatie

Netwerksegmentatie biedt een cruciale verdedigingslaag door de fysieke of virtuele interfaces te beperken die met de database kunnen verbinden. Zelfs als een aanvaller netwerktoegang krijgt, moet hij nog steeds door je perimeter heen breken.

  • Toegang beperken via IP-whitelisting: Met de instelling bindIp of via netwerkfirewalls kun je specifieke IP-adressen op een whitelist zetten.
  • Best practice: De MongoDB-server mag alleen worden blootgesteld aan je applicatieservers, load balancer of proxylayer. Hij mag nooit direct toegankelijk zijn vanaf het publieke internet. Deze segmentatie zorgt ervoor dat de database wordt afgeschermd door de beveiligingsperimeter van de applicatie-infrastructuur.

3. Versleuteling at rest (storage engine-encryptie)

Data at rest beschermen zorgt ervoor dat als de fysieke schijf of hostomgeving wordt gecompromitteerd, de bestanden onleesbaar blijven. MongoDB bereikt dit via storage engine-encryptie.

  • Hoe het werkt: De WiredTiger storage engine kan zo worden geconfigureerd dat alle databestanden, configuratiebestanden en journalbestanden op schijf worden versleuteld. De data wordt transparant versleuteld bij het wegschrijven en ontsleuteld bij het lezen, met een encryptiesleutel die door het systeem wordt beheerd.
  • Cruciale overweging: Hoewel dit een essentiële beveiligingslaag is, is native versleuteling at rest doorgaans een MongoDB Enterprise-functie en is deze afhankelijk van externe Key Management Interoperability Protocol (KMIP)-servers of lokale sleutelbestanden voor sleutelbeheer.

4. Client-Side Field Level Encryption (CSFLE): de gouden standaard voor developers

Hoewel versleuteling at rest de hele database beschermt, geeft Client-Side Field Level Encryption (CSFLE) developers nauwkeurige controle over gevoelige data, doordat je specifieke velden kunt versleutelen vóórdat ze naar de database worden gestuurd.

  • Introductie van CSFLE: Met CSFLE vindt versleuteling plaats binnen de applicatiedriver voordat de data de applicatieserver verlaat. Dit betekent dat de MongoDB-server de gevoelige data nooit in platte tekst ziet; hij slaat alleen de ciphertext op. De gevoelige data blijft te allen tijde versleuteld op de server, inclusief in geheugen, serverlogs en opslag.
  • Meest krachtige tool voor developers: CSFLE is de gouden standaard voor compliance (bijv. AVG/GDPR, HIPAA), omdat het ervoor zorgt dat zelfs bij een volledige datalek gevoelige velden (zoals PII of financiële informatie) versleuteld en beschermd blijven. Developers moeten actief beslissen wat ze versleutelen en de versleutelingslogica direct in hun applicatiecode integreren.

5. Versleuteling in gebruik met Queryable Encryption

Queryable Encryption is een uitbreiding op CSFLE die het probleem van query's op versleutelde velden aanpakt. Het stelt applicaties in staat om gelijkheidsquery's uit te voeren (bijv. documenten vinden waarin een versleuteld veld gelijk is aan een bepaalde waarde) direct op de ciphertext. Dit biedt de beveiliging van CSFLE met behoud van datagebruik, en versleutelt effectief data tijdens gebruik.

Auditing: de post-mortemtool

Beveiligingsmaatregelen gaan over preventie, maar auditing draait om verantwoording en detectie. Het ingebouwde auditraamwerk van MongoDB biedt de cruciale mogelijkheid om beveiligingsrelevante gebeurtenissen te volgen en te loggen, en levert een onveranderlijk verslag dat essentieel is voor forensisch onderzoek, compliance en proactieve dreigingsdetectie.

1. Wat is auditing en waarom is het belangrijk?

Auditing registreert elke kritieke actie die tegen de database wordt uitgevoerd en creëert zo een gedetailleerd historisch log. Dit omvat:

  • Authenticatiegebeurtenissen: geslaagde en mislukte inlogpogingen.
  • Autorisatiewijzigingen: het aanmaken, wijzigen of verwijderen van gebruikers en rollen.
  • Configuratiewijzigingen: aanpassingen aan systeemparameters die de beveiliging beïnvloeden.

Dit log is van onschatbare waarde voor securityteams die post-incidentanalyses uitvoeren (de "post-mortem"-tool) of om aan wettelijke compliance-eisen te voldoen.

2. Configuratie en filtering

Auditing inschakelen is eenvoudig en vergt vaak één regel in het configuratiebestand om het systeem te activeren en de bestemming voor het log te specificeren (bestand, syslog of console).

auditLog:
  destination: file
  format: BSON
  path: /var/log/mongodb/audit.bson
  filter: '{ atype: { $in: [ "authenticate", "createRole", "dropUser" ] } }'
  • Filtering: Het auditsysteem maakt zeer fijnmazige filtering mogelijk met een query-achtige syntax. Dit is cruciaal om het logvolume te beheersen. Developers moeten de filter richten op kritieke, beveiligingsrelevante gebeurtenissen, zoals gebruikersbeheeracties, wijzigingen in beveiligingsconfiguratie en authenticatiepogingen.

Samenvatting en vervolgstappen

MongoDB biedt een uitgebreide reeks beveiligingsfuncties die, correct ingezet, een krachtige defense-in-depth-strategie vormen. Jouw primaire taak als developer is om verder te gaan dan de ontwikkelingsstandaarden en deze kerncontroles te implementeren.

Voordat een applicatie live gaat, onthoud deze drie kernmandaten voor beveiliging:

  • Versleutel data in transit: Gebruik TLS/SSL voor alle netwerkverbindingen (net.ssl.mode: requireTLS).
  • Versleutel data at rest: Zorg dat de databasebestanden op schijf zijn beveiligd met volume- of bestandssysteemencryptie of met encryptie van de WiredTiger storage engine (beschikbaar in MongoDB Enterprise), om ongeautoriseerde toegang tot databasebestanden te voorkomen.
  • Versleutel data in gebruik: Gebruik Client-Side Field Level Encryption (CSFLE) en Queryable Encryption voor zeer gevoelige datavelden, zodat de data versleuteld blijft zelfs terwijl de database draait.

Beveiliging is een continu ontwikkelend vakgebied. Voor diepgaandere informatie en geavanceerde configuraties gebruik je de officiële documentatie:

Ik raad ook aan om de Introduction to Using MongoDB for Data Science in Python-cursus te bekijken.

MongoDB-beveiliging: veelgestelde vragen

Wat is de allerbelangrijkste beveiligingsinstelling voor productie?

Authenticatie door security.authorization: enabled in te stellen.

Wat is het verschil tussen authenticatie en autorisatie?

Authenticatie verifieert wie je bent (identiteit), meestal met een gebruikersnaam en wachtwoord. Autorisatie bepaalt wat je kunt doen (rechten), waarbij RBAC minimale privileges afdwingt.

Wat is het doel van het principe van minimale privileges (PoLP)?

Het principe van minimale privileges (PoLP) heeft als doel om gebruikers en systemen alleen de toegang te geven die absoluut noodzakelijk is voor hun specifieke taken. Dit beperkt de schade bij een inbreuk, maar fungeert ook als belangrijke verdediging tegen insider threats en operationele fouten, en helpt je organisatie tegelijk te voldoen aan strenge regelgevingseisen. Het is het beveiligings­equivalent van je peuter alleen toegang geven tot onbreekbaar speelgoed.

Hoe beschermt TLS/SSL mijn data?

TLS/SSL versleutelt data in transit, wat betekent dat alle communicatie tussen je applicatie en de MongoDB-server over het netwerk wordt versleuteld.

Wat is het belangrijkste voordeel van Client-Side Field Level Encryption (CSFLE)?

CSFLE versleutelt specifieke gevoelige data (zoals PII) in de applicatie voordat deze de client verlaat. Dit zorgt ervoor dat de data beschermd blijft, zelfs als de MongoDB-server zelf, of de beheerder ervan, wordt gecompromitteerd.


Karen Zhang's photo
Author
Karen Zhang
LinkedIn

Karen is een Data Engineer met een passie voor het bouwen van schaalbare dataplatforms. Ze heeft ervaring met infrastructuurautomatisering met Terraform en deelt haar inzichten graag in blogposts en tutorials. Karen is een community builder en ze zet zich in om verbindingen tussen dataprofessionals te stimuleren.

Onderwerpen
MongoDB

Topcursussen op DataCamp

{count, plural, one {Cursus} other {Cursussen}}

Introductie tot MongoDB in Python

{hours} uur
24.4K
Leer hoe je flexibel gestructureerde data kunt bewerken en analyseren met MongoDB.
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

{count, plural, one {blog} other {blogs}}

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