MongoDB Basics:Role-Based Access Control (RBAC) configureren
MongoDB, een open-source documentopslag en de populairste NoSQL-database die momenteel op de markt is, biedt een verscheidenheid aan geavanceerde functies om de beveiliging van uw MongoDB-implementaties te beheren. In deze zelfstudiepost laten we u zien hoe u op rollen gebaseerde toegangscontrole (RBAC) instelt om gebruikerstoegang in uw MongoDB-systemen voor reIndex, mongodump en mongorestore te beheren.
Als u de beheerder van uw MongoDB-databases bent, heeft u waarschijnlijk verzoeken ontvangen om een individuele gebruiker de mogelijkheid te bieden om bepaalde actie(s) uit te voeren. De beveiligingsfuncties van MongoDB zijn nu redelijk volwassen en stellen u in staat om zeer gedetailleerde, op rollen gebaseerde toegangscontrole te maken en toe te wijzen.
We gaan een voorbeeld doornemen waarbij een gebruiker het specifieke recht wordt gegeven om de reIndex-actie stapsgewijs uit te voeren via de resolutie. Voordat we laten zien hoe deze algemene beveiligingsactie moet worden uitgevoerd, laten we eerst een overzicht van MongoDB's op rollen gebaseerde actiecontrole doornemen.
Hoe MongoDB RBAC werkt
Met MongoDB kunt u een RBAC-mechanisme gebruiken om de toegang tot gebruikers te beperken via toegewezen 'rollen'. RBAC-toegangsbeheer is niet standaard ingeschakeld en moet worden geconfigureerd door een beheerder in uw team. Door een gebruiker toegang te verlenen tot een specifieke bron, machtigt u die rol of gebruiker om acties op die bron uit te voeren.
-
Bronnen
Een database, verzameling, verzameling verzamelingen of het cluster.
-
Acties
Specifieke bewerkingen die een gebruiker kan uitvoeren op een bron (meestal een database).
MongoDB ondersteunt vooraf gedefinieerde rollen, ingebouwde rollen genaamd, met acties die zijn verzameld in logische groepen, zoals read(-Only), readWrite, back-up, enzovoort. MongoDB ondersteunt ook het maken van door de gebruiker gedefinieerde rollen.
MongoDB reIndex RBAC-rechten autoriseren
Nu je wat context hebt, gaan we beginnen met de stappen om een gebruiker het recht te geven om de reIndex-actie uit te voeren.
Hoe reIndex-rechten te creëren via op rollen gebaseerde toegangscontrole van MongoDB #RBACClick To Tweet-
Bepaal de privilege-acties
Acties in de MongoDB-context staan bekend als Privilege-acties en u kunt een uitputtende lijst van deze acties vinden in de documentatie van MongoDB. De actie waarin we geïnteresseerd zijn, is reIndex, of het privilege waarmee een gebruiker de opdracht reIndex kan uitvoeren op een bepaalde database of verzameling. Aangezien de opdracht reIndex duur kan zijn voor verzamelingen met grote hoeveelheden gegevens of een groot aantal indexen, maakt deze standaard deel uit van beheerdersrollen.
-
Bevoegdheden toekennen aan een rol
Zodra we hebben bepaald welke rechten we nodig hebben, gaan we verder met het toekennen van deze rechten aan een rol. U kunt ook gewoon een ingebouwde rol kiezen die al het recht heeft, maar we raden u aan uw eigen door de gebruiker gedefinieerde rol te maken in plaats van ingebouwde rollen te wijzigen, aangezien dit goede standaardinstellingen zijn om naar terug te keren.
-
Maak een nieuwe door de gebruiker gedefinieerde rol
Dit is wat we gaan gebruiken om onze nieuwe door de gebruiker gedefinieerde rol te creëren:
> use test switched to db test > db.createRole({role: "reIndexing", privileges: [], roles: ["readWrite"]}) // Create a new role out of the default readWrite rule. { "role" : "reIndexing", "privileges" : [ ], "roles" : [ "readWrite" ] } > db.getRole("reIndexing") { "role" : "reIndexing", "db" : "test", "isBuiltin" : false, "roles" : [ { "role" : "readWrite", "db" : "test" } ], "inheritedRoles" : [ { "role" : "readWrite", "db" : "test" } ] }
-
Bevoegdheden toekennen aan de nieuwe rol
Nu gaan we onze gewenste privileges toewijzen aan onze nieuw gecreëerde, door de gebruiker gedefinieerde rol.
> db.grantPrivilegesToRole("reIndexing", [ { resource: { db : "test", collection: "" }, actions: ["reIndex"] } ]) > db.getRole("reIndexing", {showPrivileges: true}) { "role" : "reIndexing", "db" : "test", "isBuiltin" : false, "roles" : [ { "role" : "readWrite", "db" : "test" } ], "inheritedRoles" : [ { "role" : "readWrite", "db" : "test" } ], "privileges" : [ { "resource" : { "db" : "test", "collection" : "" }, "actions" : [ "reIndex" ] } ], "inheritedPrivileges" : [ .... ] }
-
-
De rol toekennen aan een gebruiker
De laatste stap is om de gebruiker deze nieuwe rol toe te wijzen:
> db.getUser("indexUser") { "_id" : "test.indexUser", "user" : "indexUser", "db" : "test", "roles" : [ { "role" : "readWrite", "db" : "test" } ] } > db.grantRolesToUser("indexUser", ["reIndexing"]) > db.getUser("indexUser") { "_id" : "test.indexUser", "user" : "indexUser", "db" : "test", "roles" : [ { "role" : "reIndexing", "db" : "test" }, { "role" : "readWrite", "db" : "test" } ] }
Vergeet niet deze stappen uit te voeren op een dummy-gebruiker, zodat u kunt testen en bevestigen dat de nieuwe rechten werken voordat u de betreffende gebruiker hun autorisatie verleent en hiervan op de hoogte stelt.
Aanvullende rechten:mongodump &mongorestore
We hebben eerst het reIndex-voorbeeld gedemonstreerd om zowel het verlenen van privileges aan rollen als het verlenen van rollen aan gebruikers te illustreren.
Een meer algemeen gebruik is het verlenen van autorisatie om back-up- en herstelacties uit te voeren met behulp van mongodump
en mongorestore
. Dit kan in één stap worden gedaan via de ingebouwde rollen van MongoDB, en zowel back-up- als herstelrechten kunnen worden verleend om gebruikers in staat te stellen mongodump
uit te voeren. en mongorestore
, respectievelijk.
Hier is bijvoorbeeld hoe we een gebruiker toestemming zouden verlenen om een back-up te maken van een database en deze te herstellen. Merk op dat deze rollen alleen beschikbaar zijn voor gebruikers in de beheerdersdatabase.
> db.grantRolesToUser("backupUser", ["backup", "restore"]) > db.getUser("backupUser") { "_id" : "admin.backupUser", "user" : "backupUser", "db" : "admin", "roles" : [ { "role" : "restore", "db" : "admin" }, { "role" : "backup", "db" : "admin" }, { "role" : "readWrite", "db" : "admin" } ] }
Het toevoegen van rechten voor back-up en herstel op één database of verzameling vereist meer werk. Voor mongodump
, u moet bovendien een zoekrecht toekennen aan die bepaalde database, maar mongorestore
heeft meer gecompliceerde privilege-eisen.
Geïnteresseerd in MongoDB-beveiliging? Dit zijn de belangrijkste berichten over MongoDB-beveiligingsonderwerpen:
- De drie A's van MongoDB-beveiliging:authenticatie, autorisatie en auditing
- Drie eenvoudige stappen om de beveiliging van uw MongoDB-installatie te verbeteren
- MongoDB-CR-authenticatie als standaard configureren op MongoDB 3.x
- MongoDB SSL met zelfondertekende certificaten in Node.js
- 10 tips om uw MongoDB-beveiliging te verbeteren