Databasegebruikersbeheer is een bijzonder belangrijk onderdeel van gegevensbeveiliging, omdat we moeten begrijpen wie toegang heeft tot de database en de toegangsrechten van elke gebruiker moeten instellen. Als een database geen goed gebruikersbeheer heeft, wordt de gebruikerstoegang in de loop van de tijd erg rommelig en moeilijk te onderhouden.
MongoDB is een NoSQL-database en documentopslag. Het toepassen van het RBAC-concept (Role Based-Access Control) is de sleutel tot het implementeren van goed gebruikersbeheer om gebruikersreferenties te beheren.
Wat is Role Based Access Control (RBAC)?
RBAC is een benadering die het systeem alleen beperkt tot geautoriseerde gebruikers. In een organisatie worden rollen gecreëerd voor verschillende functiefuncties, in de database creëren we vervolgens de toegangsrechten om enkele bewerkingen uit te voeren die aan een bepaalde rol zijn toegewezen.
Personeelsleden (of andere systeemgebruikers) krijgen bepaalde rollen toegewezen en krijgen via hen machtigingen om computersysteemfuncties uit te voeren. Gebruikers krijgen niet rechtstreeks machtigingen, maar krijgen ze alleen via hun rol (of rollen). Het beheren van individuele gebruikersrechten wordt een kwestie van simpelweg de juiste rol in het gebruikersaccount plaatsen; dit vereenvoudigt algemene handelingen (zoals het toevoegen van gebruikers of het wijzigen van gebruikersafdelingen).
Er zijn drie hoofdregels voor RBAC:
- Roltoewijzing :Een onderwerp kan alleen machtigingen uitvoeren als het onderwerp is gekozen of een rol is toegewezen.
- De rol van autorisatie :de actieve rol van een proefpersoon moet voor de proefpersoon worden geautoriseerd. Met regel 1 hierboven zorgt deze regel ervoor dat gebruikers alleen rollen kunnen aannemen voor degenen die geautoriseerd zijn.
- Toestemming Autorisatie :Een proefpersoon kan alleen vergunningen uitvoeren als toestemming is geautoriseerd voor de actieve rol van de proefpersoon. Met regel 1 en 2 zorgt deze regel ervoor dat gebruikers alleen toestemming kunnen uitoefenen voor degenen die geautoriseerd zijn.
Deze blog gaat kort in op Role Based Access Control in de MongoDB-database.
MongoDB-gebruikersrollen
MongoDB heeft verschillende soorten rollen in de database, dat zijn...
Ingebouwde rollen
Biedt toegang tot gegevens en acties aan MongoDB via op rollen gebaseerde autorisatie en heeft ingebouwde rollen die verschillende toegangsniveaus in de database bieden.
Rol geeft verschillende privileges om iets te doen op de bron die is aangemaakt. MongoDB ingebouwde rollen hebben verschillende categorieën:
- Gebruikersdatabase :Rollen Databasegebruikers hebben een rol om gegevens te manipuleren in niet-systeemverzameling. Voorbeelden van gebruikersdatabaserollen zijn:lezen, lezenSchrijven.
- Databasebeheer :Rollen Databasebeheer houdt zich bezig met administratief beheer van databases zoals gebruikersbeheer, schema en objecten daarin.
- Voorbeelden van databasebeheerrollen zijn:dbAdmin, userAdmin, dbOwner.
- Clusterbeheer :De rol van clusterbeheer is om het volledige MongoDB-systeem te beheren, inclusief de replicasets en shards. Voorbeelden van clusterbeheerrollen zijn:clusterAdmin, clusterManager.
- Back-up en herstel :Deze rollen zijn specifiek voor functies die verband houden met databaseback-up in MongoDB. Voorbeelden van rollen zijn:back-up, herstel.
- Alle databaserollen :Rollen bevinden zich in de databasebeheerder en hebben toegang tot alle databases behalve lokaal en config. Voorbeelden zijn:readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase.
- Supergebruiker :Rollen heeft de mogelijkheid om toegang te verlenen aan elke gebruiker, tot elk privilege, in alle databases. Voorbeeld van deze rol:root
Door gebruiker gedefinieerde rollen
Naast ingebouwde rollen, kunnen we onze eigen rollen maken op basis van onze behoeften, en welke privileges we aan die rollen zullen geven. Om rollen te maken, kunt u de functieopdracht db.createRole () gebruiken. Naast het kunnen maken van rollen, zijn er verschillende andere functies om bestaande rollen te beheren, zoals:db.dropRole () wat handig is voor het verwijderen van bestaande rollen in de database, db.getRole () functies om alle informatie van specifieke rollen te krijgen.
Privilege-acties in MongoDB
Privileges-acties in MongoDB zijn acties die door een gebruiker op een resource kunnen worden uitgevoerd. MongoDB heeft verschillende actiecategorieën, namelijk:
- Databasebeheeracties, acties met betrekking tot opdrachten met betrekking tot databasebeheer, zoals changePassword, createCollection, createIndex-acties.
- Query- en schrijfacties, acties die betrekking hebben op het uitvoeren van gegevensmanipulatie in een verzameling. In de invoegactie is het commando dat in die actie kan worden uitgevoerd bijvoorbeeld het invoegcommando dat in documenten kan worden ingevoegd.
- Acties voor implementatiebeheer, acties met betrekking tot wijzigingen in de databaseconfiguratie. Sommige acties die in de categorie Deployment Management vallen, zijn cpuProfiler, storageDetails, killOp.
- Replicatieacties, acties met betrekking tot de uitvoering van databasereplicatiebronnen zoals replSetConfigure, replSetHeartbeat.
- Serverbeheeracties, acties met betrekking tot opdrachten van serverbeheerbronnen op mongoDB, zoals logrotate-acties die worden gebruikt om logdatabases op besturingssysteemniveau te roteren.
- Sharding-acties, acties met betrekking tot opdrachten van database-sharding-databases zoals addShard om nieuwe shard-knooppunten toe te voegen.
- Sessieacties, acties met betrekking tot bronsessies in een database zoals listSessions, killAnySession.
- Diagnostische acties, acties gerelateerd aan de diagnose van bronnen zoals dbStats om de laatste voorwaarden in de database te achterhalen.
- Gratis monitoringacties, acties met betrekking tot monitoring in de database.
MongoDB-gebruikers en -rollen beheren
U kunt een gebruiker maken en de gebruiker vervolgens toewijzen aan ingebouwde rollen, bijvoorbeeld als volgt:
db.createUser( {
user: "admin",
pwd: "thisIspasswordforAdmin",
roles: [ { role: "root", db: "admin" } ]
} );
In het bovenstaande script, wat betekent dat de admin-gebruiker wordt gemaakt met een wachtwoord dat is gedefinieerd met ingebouwde root-rollen, waarbij de rol is opgenomen in de categorie Superuser.
Bovendien kunt u meer dan één rol toewijzen aan een gebruiker, hier is een voorbeeld:
db.createUser(
{user:'businessintelligence',
pwd:'BIpassw0rd',
roles:[{'role':'read', 'db':'oltp'}, { 'role':'readWrite', 'db':'olapdb'}]
});
Business intelligence-gebruikers hebben 2 rollen, eerst de leesrollen in de oltp-database en de readWrite-rollen in de olapdb-database.
Het maken van door de gebruiker gedefinieerde rollen kan de opdracht db.createRole () gebruiken. U moet het doel van het maken van de rol bepalen, zodat u kunt bepalen welke acties in die rol zullen plaatsvinden. Het volgende is een voorbeeld van het maken van een rol voor het bewaken van de Mongodb-database:
use admin
db.createRole(
{
role: "RoleMonitoring",
privileges: [
{ resource: { cluster: true }, actions: [ "serverStatus" ] }
],
roles: []
}
)
Vervolgens kunnen we de door de gebruiker gedefinieerde rol toewijzen aan de gebruiker die we zullen maken, kunnen de volgende opdracht gebruiken:
db.createUser( {
user: "monuser",
pwd: "thisIspasswordforMonitoring",
roles: [ { role: "RoleMonitoring", db: "admin" } ]
} );
Ondertussen kunt u de volgende opdracht gebruiken om de rol aan een bestaande gebruiker toe te wijzen:
db.grantRolesToUser(
"existingmonuser",
[
{ role: "RoleMonitoring", db: "admin" }
]
)
Om een bestaande gebruiker van een rol in te trekken, kun je het volgende commando gebruiken:
db.revokeRolesFromUser(
"oldmonguser",
[
{ role: "RoleMonitoring", db: "admin" }
]
)
Door door de gebruiker gedefinieerde rollen te gebruiken, kunnen we rollen maken zoals we willen volgens de acties die we op die rollen zullen ondernemen, zoals rollen om gebruikers te beperken, kunnen alleen rijen op bepaalde databases verwijderen.
Conclusie
Het toepassen van toegangsrechten kan de beveiliging verbeteren. Door rollen en gebruikers in de database toe te wijzen, kunt u eenvoudig de gebruikerstoegang beheren.
Zorg ervoor dat al deze informatie met betrekking tot rollen en rechten correct wordt gedocumenteerd met beperkte toegang tot het document. Dit helpt u de informatie te delen met de andere DBA of ondersteunend personeel en is handig voor audits en probleemoplossing.