sql >> Database teknologi >  >> RDS >> Access

MongoDB Basics:Konfiguration af rollebaseret adgangskontrol (RBAC)

MongoDB Basics:Konfiguration af rollebaseret adgangskontrol (RBAC)

MongoDB, en open source-dokumentbutik og den mest populære NoSQL-database på markedet i dag, tilbyder en række avancerede funktioner til at administrere sikkerheden over dine MongoDB-implementeringer. I dette vejledningsindlæg skal vi vise dig, hvordan du opsætter rollebaseret adgangskontrol (RBAC) til at administrere brugeradgang på tværs af dine MongoDB-systemer til reIndex, mongodump og mongorestore.

Hvis du er administrator af dine MongoDB-databaser, har du sandsynligvis modtaget anmodninger om at give en individuel bruger mulighed for at udføre en bestemt handling(er). MongoDBs sikkerhedsfunktioner er ret modne nu og giver dig mulighed for at oprette og tildele meget detaljeret rollebaseret adgangskontrol.

Vi skal gennemgå et eksempel på at give en bruger det specifikke privilegium at udføre reIndex handlingen i en trin-for-trin tilgang gennem løsningen. Før vi demonstrerer, hvordan man udfører denne almindelige sikkerhedshandling, lad os gennemgå en oversigt over MongoDBs rollebaserede handlingskontrol.

Sådan fungerer MongoDB RBAC

MongoDB giver dig mulighed for at bruge en RBAC-mekanisme til at begrænse adgangen til brugere gennem tildelte ‘roller’. RBAC-adgangskontrol er ikke aktiveret som standard og skal konfigureres af en administrator på dit team. Ved at give en bruger adgang til en specifik ressource autoriserer du den pågældende rolle eller bruger til at udføre handlinger på den ressource.

  • Ressourcer

    En database, samling, sæt af samlinger eller klyngen.

  • Handlinger

    Specifikke handlinger, som en bruger kan udføre på en ressource (normalt en database).

MongoDB understøtter foruddefinerede roller kaldet indbyggede roller med handlinger samlet i logiske grupper såsom read(-Only), readWrite, backup osv. MongoDB understøtter også oprettelsen af brugerdefinerede roller.

Godkendelse af MongoDB reIndex RBAC-privilegier

Nu hvor du har en kontekst, lad os springe ind i trinnene med at godkende en bruger privilegiet til at udføre genindekseringshandlingen.

Sådan opretter du reIndex-privilegier gennem MongoDB rollebaseret adgangskontrol #RBACCklik for at tweete
  1. Bestem privilegiehandlingerne

    Handlinger i MongoDB-konteksten er kendt som Privilege Actions, og du kan finde en udtømmende liste over disse handlinger i MongoDBs dokumentation. Den handling, vi er interesseret i, er reIndex eller det privilegium, der giver en bruger mulighed for at udføre reIndex-kommandoen på en given database eller samling. Da reIndex-kommandoen kan være dyr for samlinger med store mængder data eller et stort antal indekser, er den som standard en del af administrative roller.

  2. Giv privilegier til en rolle

    Når vi har fastslået, hvilke privilegier vi har brug for, går vi videre til at give disse privilegier til en rolle. Du kan også simpelthen vælge en indbygget rolle, der allerede har privilegiet, men vi anbefaler at oprette din egen brugerdefinerede rolle frem for at ændre indbyggede roller, da de er gode standarder at vende tilbage til.

    1. Opret en ny brugerdefineret rolle

      Her er, hvad vi skal bruge til at skabe vores nye brugerdefinerede rolle:

      > 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"
      		}
      	]
      }
    2. Giv privilegier til den nye rolle

      Nu vil vi tildele vores ønskede privilegier til vores nyoprettede brugerdefinerede rolle.

      > 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" : [
      ....
      	]
      }
      
      
  3. Giv rollen til en bruger

    Det sidste trin er blot at tildele brugeren denne nye rolle:

    > 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"
    		}
    	]
    }
    

    Husk at udføre disse trin på en dummy-bruger, så du kan teste og bekræfte, at de nye rettigheder fungerer, før du giver og underretter den relevante bruger om deres autorisation.

Yderligere privilegier:mongodump og mongorestore

Vi demonstrerede reIndex-eksemplet først for at illustrere både tildeling af privilegier til roller og tildeling af roller til brugere.

Et mere almindeligt tilfælde er at give autorisation til at udføre sikkerhedskopierings- og gendannelseshandlinger ved hjælp af mongodump og mongorestore . Dette kan gøres i et enkelt trin gennem MongoDBs indbyggede roller, og både backup- og gendannelsesprivilegier kan tildeles for at gøre det muligt for brugere at køre mongodump og mongorestore hhv.

Sådan opsætter du MongoDB-sikkerhedskopi og gendan #RBAC-privilegier med mongodump og mongorestoreKlik for at tweete

For eksempel, her er, hvordan vi ville give en bruger tilladelse til at sikkerhedskopiere og gendanne enhver database. Bemærk, at disse roller kun er tilgængelige for brugere i administratordatabasen.

> 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"
		}
	]
}

At tilføje tilladelser til sikkerhedskopiering og gendannelse på en enkelt database eller samling kræver mere arbejde. Til mongodump , du skal desuden give et find-privilegium på den givne database, dog mongorestore har mere komplicerede privilegiekrav.

Er du interesseret i MongoDB-sikkerhed? Her er de bedste indlæg om MongoDB sikkerhedsemner:

  • De tre A'er for MongoDB-sikkerhed – Autentificering, autorisation og revision
  • Tre enkle trin til at forbedre sikkerheden for din MongoDB-installation
  • Konfiguration af MongoDB-CR-godkendelse som standard på MongoDB 3.x
  • MongoDB SSL med selvsignerede certifikater i Node.js
  • 10 tips til at forbedre din MongoDB-sikkerhed


  1. Postgres er den fedeste database – Årsag #1:Udviklere elsker det!

  2. Sådan opgraderes MySQL 5.5 til 5.6 på Ubuntu 14.04

  3. SQL DROP DATABASE Syntaks – Listet efter DBMS

  4. Indsæt data via en funktion med tabelværdi i SQL Server