MongoDB er en dokumentorienteret database på tværs af platforme, der gør datalagring og -hentning hurtig og nem. Databasen bruger en JSON-lignende struktur til dokumenterne, primært kendt for moderne applikationer.
MongoDB bruger samlinger og manuskripter, hvor dokumenter består af nøgleværdi-par, den grundlæggende enhed af data i MongoDB. I modsætning hertil indeholder samlinger funktioner og dokumenter svarende til relationelle databasetabeller.
Opret en ny bruger i MongoDB
For at tilføje nye brugere til systemet, leverer MongoDB en intern teknik kendt som db.createUser(). I modsætning til traditionelle databasesystemer er MongoDB-brugere bundet til en lokal database kaldet en Authentication Database. De er således ikke globalt bundet, som konventionelle SQL-databaser.
Desuden fungerer autentificeringsdatabasen og brugerens navn som en unik identifikator. Derfor, hvis to brugere er oprettet i forskellige databaser, men deler de samme navne, identificeres de som to separate brugere. Derfor, hvis man ønsker at oprette en enkelt bruger med tilladelser på flere databaser, bør man tillade en enkelt bruger at have rettigheder/roller til den relevante database i stedet for at bygge brugeren adskillige gange i forskellige databaser.
Eksempel:
db.createUser( { user: "Foss", pwd: "password", roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Brugerstyringskommandoer
Navn/navne | Beskrivelse |
---|---|
createUser | Denne metode opretter en ny bruger. |
dropAllUsersFromDatabase | Sletter alle brugere fra en database. |
dropUser | Giver en opgave og dens rettigheder til en bruger. |
grantRolesToUser | En rolle og dens tilknyttede rettigheder er tildelt en bruger. |
revokeRolesFromUser | Fjerner en brugers rolle. |
updateUser | Denne metode bruges til at opdatere en brugers data. |
brugeroplysninger | Denne metode returnerer oplysninger om de leverede brugere. |
Tilføjelse af en bruger
Når du tilføjer brugeren til en specificeret DB, skal du bruge metoden "db.createUser()". Det er vigtigt at bemærke, at det er meget nemmere at tilføje brugere med muligheder end at indsætte et brugerdokument i en ikke-relationel database.
Eksempel:
use foss // specify the DB db.createUser( { user: "fosslinux", pwd: passwordPrompt(), // or cleartext password if you wish roles: [ { role: "read", db: "foss" }, { role: "read", db: "articles" }, { role: "read", db: "tutorials" }, { role: "readWrite", db: "tutorialguides" } ] } )
Når du har tilsluttet MongoDB-instansen i ovenstående eksempel, kan du vedhæfte den til foss DB'en for at udføre kommandoen db.createUser(). Den anvendte database vil fungere som brugerens godkendelsesdatabase.
Adgangskoden og brugernavnet er angivet i dokumentet, der indeholder vores metodekald som nøgleværdi-par. Brugen af roller styrer adgangen til databaser. En bruger skal have en rolle for at få adgang til enhver database, selv sin egen godkendelsesdatabase. Desuden får en bruger adgang til andre databaser i systemet ved hjælp af roller. En brugers privilegier er således ikke begrænset til deres autentificeringsdatabase. Derfor gør dette brugere i stand til at have forskellige privilegier på tværs af de mange databaser efter behov. Princippet om mindst privilegium giver brugerne mulighed for at holde databasens adgangsomfang så lille som muligt.
Sådan opretter du en administratorbruger i MongoDB
Oprettelse af en admin-bruger i MongoDB sker ved hjælp af metoden db.createUser(), som giver dig mulighed for at oprette en bruger. Men efter at have oprettet en bruger, skal du tildele administratorroller. Disse roller giver brugeren administratorrettigheder.
Opret en bruger til en enkelt database i MongoDB
Hvis vi ønsker at oprette en bruger, der kun kan arbejde med én database, kan vi bruge en lignende kommando som ovenfor, men vi skal bruge "userAdmin" muligheden kun én gang.
Eksempel:
db.createUser( { user: "Fosslinux", pwd: "password", roles:[{role: "userAdmin" , db:"Foss"}]})
Kodeopdeling:
- Først og fremmest bør man angive "brugernavnet" og "adgangskoden", der skal oprettes.
- Tildel rollen til den bruger, som er databaseadministratoren; dette er tildelt "brugeradmin"-rollen, da rollen tillader brugeren kun at have administrative rettigheder til databasen specificeret i DB
- Til sidst sætter DB-parameteren den database, som brugeren skal have administrative rettigheder til.
Administration af brugere
For at administrere brugere skal man forstå de roller, der skal defineres, da MongoDB har en hel liste af funktioner som læse-rolle og læse-skrive-rolle. Kommandoen "read role" tillader kun skrivebeskyttet adgang til databaserne. "Læse-skrive-rollen" giver læse- og skriveadgang til databasen; det betyder, at brugeren kan udstede opdateringen, indsætte og slette kommandoer på samlingerne i den pågældende database.
Eksempel:
db.createUser( { user: "Foss", pwd: "password", roles:[ { role: "read" , db:"Tutorials"}, { role: "readWrite" , db:"Guides"} } ] })
Ovenstående eksempel viser, at en bruger kendt som Foss er oprettet og tildelt flere roller i flere DB'er. I samme model får Foss skrivebeskyttet tilladelse på "Tutorials"-databasen og læse-skrive-tilladelser på "Guides"-databasen.
Tilføjelse af roller til MongoDB
Roller giver brugere adgang til MongoDB-ressourcer. Desuden giver MongoDB flere indbyggede roller, der gør det muligt for administratorerne at kontrollere adgangen til et MongoDB-system. Men når disse roller ikke kan beskrive det ønskede sæt af privilegier, kan man oprette nye roller i en bestemt database. Bortset fra funktioner, der er oprettet i administratordatabasen, kan en rolle kun indeholde rettigheder, der gælder for dens database og dem, der er nedarvet fra andre roller.
En rolle, der er defineret i administratordatabasen, kan indeholde rettigheder gældende for administratordatabasen, andre databaser eller klyngressourcen og kan arve roller fra andre databaser. For at etablere en ny rolle skal du bruge "db.createRole()" og specificere rettighedsmatrixen og den nedarvede rollematrix.
MongoDB definerer roller unikt ved at kombinere databasenavnet med rollenavnet. Hver rolle er scoped til den database, du opretter, men MongoDB gemmer alle rolleoplysninger i adminSystemRoles-samlingen i admin-databasen. For eksempel skal handlingerne for den kreative rolle og tildelingsroller på databaseressourcen sikre, at roller oprettes og tildeles i databasen. GrantRole specificerer privilegierne for de nye roller og de roller, der skal arves. User AdminAnyDatabase og den indbyggede roller brugeradmin leverer CreateRole og giver roller handlinger på deres respektive ressourcer.
For at oprette en rolle med de angivne godkendelsesbegrænsninger skal man indstille AuthenticationRetrictions-handlingen på databaseressourcen, hvorefter funktionen oprettes.
Metoden db.grantRole to User () tager følgende argumenter;
Parameter | Typ | Beskrivelse |
---|---|---|
Bruger | Streng | Indeholder navnet på den bruger, som rollerne skal tildeles. |
Roller | Array | Indebærer en række yderligere roller, der skal tildeles brugeren. |
Skriv bekymring | Dokument | Det er valgfrit og har til formål at ændre kommandoen. Det tager også de samme felter med kommandoen get last error. |
Rolleparameteren kan specificere både de brugerdefinerede og indbyggede funktioner, hvilket kan opnås ved at vælge rollen med dens navn. Dette opnås ved at oprette forbindelse til mongod (en primær dæmonproces for MongoDB-systemet, der håndterer dataanmodninger, udfører baggrundsstyringsoperationer og administrerer dataadgang). Alternativt mongoerne (som er ansvarlige for at etablere en forbindelse mellem klientapps og sharded cluster ), med de rettigheder, der er angivet i kravafsnittet. For eksempel kan min brugeradministrator oprettet i en aktiveringsadgangskontrol oprette roller i administratoren og andre databaser.
Rollestyringskommandoer
Navn\s | Beskrivelse |
---|---|
createRole | Opretter en rolle og siger, hvad den kan. |
dropRole | Fjerner den rolle, der blev indstillet af brugeren. |
dropAllRolesFromDatabase | Fjerner alle roller, som brugere har konfigureret fra en database. |
grantPrivilegesToRole | tildeler privilegier til en rolle, som brugeren vælger. |
grantRolesToRole | fortæller hvilke roller en brugerdefineret rolle kan arve privilegier fra. |
invalidateUserCache | Når du bruger invalidateUserCache, tømmes cachen i hukommelsen af brugeroplysninger, såsom legitimationsoplysninger og roller. |
revokePrivilegesFromRole | fjerner privilegierne fra en brugerdefineret rolle, der har dem. |
revokeRolesFromRole | fjerner de nedarvede roller fra en brugerdefineret rolle, som du ikke ønsker. |
rolleInfo | returnerer oplysninger om den eller de roller, du ønsker. |
updateRole | Opdaterer en rolle, som er konfigureret af brugeren. |
Konklusion
MongoDB-databasen, som gør det nemt og hurtigt at lagre og hente data, kan give en mulighed for at oprette en bruger ved hjælp af kommandoen "db.createUser()". På den anden side giver kommandoen "AdminAnyDatabase" brugere alle privilegier til at få adgang til DB'en under admin-rollen. Denne artikel er gået den ekstra mil og illustreret, hvordan man tildeler roller og rettigheder. Vi håber du finder det nyttigt. Hvis ja, så glem ikke at efterlade en bemærkning i kommentarfeltet nedenfor.