sql >> Database teknologi >  >> NoSQL >> MongoDB

En oversigt over MongoDB User Management

Databasebrugerstyring er en særlig vigtig del af datasikkerheden, da vi skal forstå, hvem der har adgang til databasen og indstille adgangsrettighederne for hver bruger. Hvis en database ikke har en ordentlig brugeradministration, bliver brugeradgang meget rodet og svær at vedligeholde, som tiden går.

MongoDB er en NoSQL-database og dokumentlager. Anvendelse af RBAC-konceptet (Role Based-Access Control) er nøglen til at implementere korrekt brugeradministration til at administrere brugerlegitimationsoplysninger.

Hvad er rollebaseret adgangskontrol (RBAC)?

RBAC er en tilgang, der kun begrænser systemet til autoriserede brugere. I en organisation oprettes roller til forskellige jobfunktioner, i databasen opretter vi så adgangsrettighederne til at udføre nogle operationer tildelt en bestemt rolle.

Medarbejdere (eller andre systembrugere) tildeles bestemte roller og tildeles gennem dem tilladelser til at udføre computersystemfunktioner. Brugere får ikke direkte tilladelser, men får dem kun gennem deres rolle (eller roller). Håndtering af individuelle brugerrettigheder bliver et spørgsmål om blot at placere den relevante rolle på brugerens konto; dette forenkler generelle operationer (såsom tilføjelse af brugere eller ændring af brugerafdeling).

Tre hovedregler er fastsat for RBAC er:

  • Rolletildeling :Et emne kan kun udføre tilladelser, hvis emnet er blevet valgt eller er blevet tildelt en rolle.
  • Autorisationens rolle :et emnes aktive rolle skal være autoriseret til emnet. Med regel 1 ovenfor sikrer denne regel, at brugere kun kan tage roller for dem, der er autoriseret.
  • Godkendelse af tilladelse :Et subjekt kan kun udføre tilladelser, hvis der er autoriseret tilladelse til subjektets aktive rolle. Med regel 1 og 2 sikrer denne regel, at brugere kun kan udøve tilladelse for dem, der er autoriseret.

Denne blog vil kort gennemgå rollebaseret adgangskontrol i MongoDB-databasen.

MongoDB-brugerroller

MongoDB har flere typer roller i databasen, det er...

Indbyggede roller

Giver adgang til data og handlinger til MongoDB gennem rollebaseret godkendelse og har indbyggede roller, der giver flere adgangsniveauer i databasen.

Rolle giver flere privilegier til at gøre noget på den ressource, der er blevet oprettet. MongoDB indbyggede roller har flere kategorier:

  • Brugerdatabase :Roller Databasebrugere har en rolle i at manipulere data i ikke-systemindsamling. Eksempler på brugerdatabaseroller er:læs, læs og skriv.
  • Databaseadministration :Rolle Database Administration beskæftiger sig med administrativ administration af databaser såsom brugeradministration, skema og objekter i det.
  • Eksempler på databaseadministrationsroller er:dbAdmin, userAdmin, dbOwner.
  • Klyngeadministration :Klyngeadministrationens rolle er at administrere hele MongoDB-systemet, inklusive dets replikasæt og shards. Eksempler på klyngeadministrationsroller er:clusterAdmin, clusterManager.
  • Sikkerhedskopiering og gendannelse :Denne roller er specifik for funktioner relateret til database backup i MongoDB. Eksempler på roller er:backup, gendannelse.
  • Alle databaseroller :Roller er i databaseadmin og har adgang til alle databaser undtagen lokal og config. Eksempler er:readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase.
  • Superbruger :Roller har mulighed for at give adgang til alle brugere, til alle privilegier, i alle databaser. Eksempel på denne rolle:root

Brugerdefinerede roller

Ud over de indbyggede roller kan vi skabe vores egne roller efter vores behov, hvilke privilegier vi vil give til disse roller. For at oprette roller kan du bruge funktionskommandoen db.createRole (). Udover at kunne oprette roller, er der flere andre funktioner til at administrere eksisterende roller såsom:db.dropRole () som er nyttig til at slette eksisterende roller i databasen, db.getRole () funktioner til at hente al information fra specifikke roller.

Privilegehandlinger i MongoDB

Privilegiehandlinger i MongoDB er handlinger, der kan udføres af en bruger på en ressource. MongoDB har flere handlingskategorier, nemlig:

  • Databasestyringshandlinger, handlinger relateret til kommandoer relateret til databaseadministration såsom changePassword, createCollection, createIndex-handlinger.
  • Forespørgsels- og skrivehandlinger, handlinger relateret til at udføre datamanipulation i en samling. For eksempel i indsæt-handlingen er kommandoen, der kan udføres i den pågældende handling, kommandoen indsæt, som kan indsætte i dokumenter.
  • Deployment Management Actions, handlinger relateret til ændringer i databasekonfigurationen. Nogle handlinger, der falder ind under kategorien Deployment Management, er cpuProfiler, storageDetails, killOp.
  • replikeringshandlinger, handlinger relateret til udførelse af databasereplikeringsressourcer såsom replSetConfigure, replSetHeartbeat.
  • Serveradministrationshandlinger, handlinger relateret til kommandoer fra serveradministrationsressourcer på mongoDB, såsom logrotationshandlinger, der bruges til at rotere logdatabaser på operativsystemniveau.
  • Sharding-handlinger, handlinger relateret til kommandoer fra database-sharding-databaser, såsom addShard for at tilføje nye shard-noder.
  • Sessionshandlinger, handlinger relateret til ressourcesessioner i en database såsom listSessions, killAnySession.
  • Diagnostiske handlinger, handlinger relateret til diagnosticering af ressourcer såsom dbStats for at finde ud af de seneste forhold i databasen.
  • Gratis overvågningshandlinger, handlinger relateret til overvågning i databasen.

Administration af MongoDB-bruger og -roller

Du kan oprette en bruger og derefter tildele brugeren til indbyggede roller, for eksempel som følger:

db.createUser( {

user: "admin",

pwd: "thisIspasswordforAdmin",

roles: [ { role: "root", db: "admin" } ]

} );

I scriptet ovenfor betyder det, at admin-brugeren vil blive lavet med en adgangskode, der er blevet defineret med indbyggede rodroller, hvor rollen er inkluderet i kategorien Superbruger.

Udover det kan du tildele mere end én roller til en bruger, her er et eksempel:

db.createUser(

{user:'businessintelligence', 

pwd:'BIpassw0rd', 

roles:[{'role':'read', 'db':'oltp'}, { 'role':'readWrite', 'db':'olapdb'}]

});

Business intelligence-brugere har 2 roller, først læserollerne i oltp-databasen og readWrite-rollerne i olapdb-databasen.

Oprettelse af brugerdefinerede roller kan bruge kommandoen db.createRole (). Du skal bestemme formålet med at oprette rollen, så du kan bestemme, hvilke handlinger der vil være i den rolle. Følgende er et eksempel på at lave en rolle til overvågning af Mongodb-databasen :

use admin

db.createRole(

   {

     role: "RoleMonitoring",

     privileges: [

       { resource: { cluster: true }, actions: [ "serverStatus" ] }

     ],

     roles: []

   }

)

Så kan vi tildele den brugerdefinerede rolle til den bruger, som vi vil oprette, ved at bruge følgende kommando:

db.createUser( {

user: "monuser",

pwd: "thisIspasswordforMonitoring",

roles: [ { role: "RoleMonitoring", db: "admin" } ]

} );

I mellemtiden, for at tildele rollen til en eksisterende bruger, kan du bruge følgende kommando:

db.grantRolesToUser(

    "existingmonuser",

    [

      { role: "RoleMonitoring", db: "admin" }

    ]

)

For at tilbagekalde en eksisterende bruger af en rolle, kan du bruge følgende kommando:

db.revokeRolesFromUser(

    "oldmonguser",

    [

      { role: "RoleMonitoring", db: "admin" }

    ]

)

Ved at bruge brugerdefinerede roller kan vi oprette roller som vi ønsker i henhold til de handlinger vi vil tage på disse roller, såsom roller for at begrænse brugere kan kun slette rækker på visse databaser.

Konklusion

Anvendelse af adgangsrettigheder kan forbedre sikkerheden. Kortlægning af roller og brugere i databasen gør det nemt for dig at administrere brugeradgang.

Sørg for, at alle disse oplysninger vedrørende roller og rettigheder er dokumenteret korrekt med begrænset adgang til dokumentet. Dette hjælper dig med at dele oplysningerne til den anden DBA eller supportpersonale og er praktisk til revision og fejlfinding.


  1. Node js mongoose befolkningsgrænse

  2. Bestemmelse af den bedste arkitektur for en MongoDB-klyngeimplementering

  3. Indekspræfikskomprimering i MongoDB 3.0 WiredTiger

  4. Redis scan-kommando match-indstilling virker ikke i Python