sql >> Database >  >> NoSQL >> MongoDB

Hoe een gebruiker te maken en een rol toe te voegen in MongoDB

MongoDB is een platformonafhankelijke documentgeoriënteerde database die het opslaan en ophalen van gegevens snel en eenvoudig maakt. De database gebruikt een JSON-achtige structuur voor de documenten, die vooral bekend is bij moderne applicaties.

MongoDB maakt gebruik van collecties en manuscripten waarbij documenten bestaan ​​uit sleutel-waardeparen, de basiseenheid van gegevens in MongoDB. Collecties daarentegen bevatten functies en documenten die gelijkwaardig zijn aan relationele databasetabellen.

Maak een nieuwe gebruiker in MongoDB

Om nieuwe gebruikers aan het systeem toe te voegen, biedt MongoDB een interne techniek die bekend staat als db.createUser(). In tegenstelling tot traditionele databasesystemen zijn MongoDB-gebruikers gebonden aan een lokale database die een authenticatiedatabase wordt genoemd. Ze zijn dus niet wereldwijd gebonden, zoals conventionele SQL-databases.

Bovendien dienen de authenticatiedatabase en de gebruikersnaam als unieke identificatie. Als er dus twee gebruikers in verschillende databases worden gemaakt maar dezelfde namen delen, worden ze geïdentificeerd als twee afzonderlijke gebruikers. Daarom, als men een enkele gebruiker met permissies voor meerdere databases wil maken, moet men een enkele gebruiker rechten/rollen geven voor de toepasselijke database in plaats van de Gebruiker meerdere keren in verschillende databases te bouwen.

Voorbeeld:

db.createUser(

{       user: "Foss",

        pwd: "password",

         roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})

Opdrachten voor gebruikersbeheer

Naam(en) Beschrijving
createUser Deze methode maakt een nieuwe gebruiker aan.
dropAllUsersFromDatabase Verwijdert alle gebruikers uit een database.
dropUser Verleent een taak en de bijbehorende rechten aan een gebruiker.
grantRolesToUser Een rol en de bijbehorende rechten worden toegewezen aan een gebruiker.
revokeRolesFromUser Verwijdert de rol van een gebruiker.
updateUser Deze methode wordt gebruikt om de gegevens van een gebruiker bij te werken.
usersInfo Deze methode retourneert informatie over de opgegeven gebruikers.

Een gebruiker toevoegen

Gebruik de methode "db.createUser()" wanneer u de gebruiker aan een opgegeven DB toevoegt. Het is belangrijk op te merken dat het toevoegen van gebruikers met opties veel eenvoudiger is dan het invoegen van een gebruikersdocument in een niet-relationele database.

Voorbeeld:

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

    ]

  }

)

Nadat u de MongoDB-instantie in het bovenstaande voorbeeld hebt aangesloten, kunt u deze koppelen aan de foss DB om de opdracht db.createUser() uit te voeren. De gebruikte database zal fungeren als de authenticatiedatabase van de gebruiker.

Het wachtwoord en de gebruikersnaam worden geleverd in het document dat onze methodeaanroep bevat als sleutel-waardeparen. Het gebruik van rollen regelt de toegang tot databases. Een gebruiker moet een rol hebben om toegang te krijgen tot een database, zelfs zijn eigen verificatiedatabase. Ook krijgt een gebruiker door middel van rollen toegang tot andere databases in het systeem. De privileges van een gebruiker zijn dus niet beperkt tot hun authenticatiedatabase. Hierdoor kunnen gebruikers naar behoefte verschillende privileges hebben voor de vele databases. Het principe van de minste bevoegdheden stelt gebruikers in staat om de toegang tot de database zo klein mogelijk te houden.‍

Een beheerdersgebruiker maken in MongoDB

Het maken van een admin-gebruiker in MongoDB gebeurt met behulp van de db.createUser()-methode, waarmee u een gebruiker kunt maken. Nadat u een gebruiker hebt gemaakt, moet u echter beheerdersrollen toewijzen. Deze rollen geven de gebruiker beheerdersrechten.

Maak een gebruiker aan voor een enkele database in MongoDB

Als we een gebruiker willen maken die slechts met één database kan werken, kunnen we een soortgelijke opdracht gebruiken als hierboven, maar we moeten de optie "userAdmin" slechts één keer gebruiken.

Voorbeeld:

db.createUser(

{        user: "Fosslinux",

         pwd: "password",

         roles:[{role: "userAdmin" , db:"Foss"}]})

Code-uitsplitsing:

  1. Eerst en vooral moet men de te creëren "gebruikersnaam" en "wachtwoord" specificeren.
  2. Wijs de rol toe aan die Gebruiker, namelijk de databasebeheerder; dit is toegewezen aan de rol "gebruikersbeheerder", aangezien de rol de gebruiker alleen beheerdersrechten geeft voor de database die is opgegeven in de database
  3. Ten slotte stelt de DB-parameter de database in waarop de gebruiker beheerdersrechten moet hebben.

Gebruikers beheren

Om gebruikers te beheren, moet men de rollen begrijpen die moeten worden gedefinieerd, aangezien MongoDB een hele lijst met functies heeft, zoals de lees-rol en de lees-schrijfrol. De opdracht "lees rol" geeft alleen alleen-lezen toegang tot de databases. De "lees-schrijfrol" biedt lees- en schrijftoegang tot de database; dit betekent dat de gebruiker de update-, invoeg- en verwijderopdrachten voor de collecties in die database kan geven.

Voorbeeld:

db.createUser(
{
            user: "Foss",

            pwd: "password",

            roles:[

            {
                        role: "read" , db:"Tutorials"},

    {
                        role: "readWrite" , db:"Guides"}

            }
                          ]
})

Het bovenstaande voorbeeld laat zien dat een gebruiker die bekend staat als Foss, is gemaakt en verschillende rollen heeft toegewezen in meerdere DB's. In hetzelfde model krijgt Foss alleen-lezen-rechten voor de database "Tutorials" en lees- en schrijfrechten voor de database "Guides".

Rollen toevoegen aan de MongoDB

Rollen verlenen gebruikers toegang tot MongoDB-bronnen. Bovendien biedt MongoDB verschillende ingebouwde rollen waarmee beheerders de toegang tot een MongoDB-systeem kunnen beheren. Wanneer deze rollen echter niet de gewenste set privileges kunnen beschrijven, kan men nieuwe rollen aanmaken in een bepaalde database. Met uitzondering van functies die zijn gemaakt in de beheerdersdatabase, kan een rol alleen rechten bevatten die van toepassing zijn op de database en de rechten die zijn overgenomen van andere rollen.

Een rol die in de beheerdersdatabase is gedefinieerd, kan rechten bevatten die van toepassing zijn op de beheerdersdatabase, andere databases of de clusterbron, en kan rollen overnemen van andere databases. Gebruik "db.createRole()" om een ​​nieuwe rol in te stellen en specificeer de array met rechten en de array met overgenomen rollen.

MongoDB definieert rollen op unieke wijze door de databasenaam te combineren met de rolnaam. Elke rol heeft betrekking op de database die u maakt, maar MongoDB slaat alle rolinformatie op in de adminSystemRoles-verzameling in de beheerdersdatabase. De acties voor creatieve rollen en het verlenen van rollen op de databasebron moeten er bijvoorbeeld voor zorgen dat rollen worden gemaakt en toegekend in de database. De grantRole specificeert de bevoegdheden voor de nieuwe rollen en de over te nemen rollen. De User AdminAnyDatabase en de ingebouwde rollen gebruikersbeheerder bieden de CreateRole en verlenen rollenacties op hun respectieve bronnen.

Om een ​​rol aan te maken met de opgegeven authenticatiebeperkingen, moet men de actie AuthenticationRetrictions instellen op de databasebron, waarna de functie wordt gemaakt.

De methode db.grantRole to User () heeft de volgende argumenten;

Parameter Type Beschrijving
Gebruiker String Bevat de naam van de Gebruiker aan wie de rollen moeten worden toegekend.
Rollen Array Bevat een reeks extra rollen die aan de Gebruiker moeten worden toegekend.
Bezorgdheid schrijven Document Het is optioneel en gericht op wijziging van het commando. Het vereist ook dezelfde velden met het commando 'laatste fout' krijgen.

De parameter rollen kan zowel de door de gebruiker gedefinieerde als ingebouwde functies specificeren, wat kan worden bereikt door de rol met zijn naam te selecteren. Dit wordt bereikt door verbinding te maken met de mongod (een primair daemonproces voor het MongoDB-systeem dat gegevensverzoeken afhandelt, achtergrondbeheerbewerkingen uitvoert en gegevenstoegang beheert). Als alternatief de mongo's (die verantwoordelijk is voor het tot stand brengen van een verbinding tussen de client-apps en het shard-cluster), met de rechten die worden gegeven in de sectie vereisten. Mijn gebruikersbeheerder die is gemaakt in een toegangsbeheer inschakelen, kan bijvoorbeeld rollen maken in de beheerder en andere databases.

Opdrachten voor rolbeheer

Naam\s Beschrijving
createRole Maakt een rol aan en zegt wat deze kan doen.
dropRole Verwijdert de rol die door de gebruiker is ingesteld.
dropAllRolesFromDatabase Verwijdert alle rollen die gebruikers uit een database hebben ingesteld.
grantPrivilegesToRole wijst privileges toe aan een rol die de gebruiker kiest.
grantRolesToRole vertelt van welke rollen een door de gebruiker gedefinieerde rol privileges kan erven.
invalidateUserCache Als je invalidateUserCache gebruikt, wordt de in-memory cache van gebruikersinformatie, zoals inloggegevens en rollen, leeggemaakt.
RevokePrivilegesFromRole verwijdert de privileges van een door de gebruiker gedefinieerde rol die ze heeft.
revokeRolesFromRole verwijdert de overgenomen rollen van een door de gebruiker gedefinieerde rol die u niet wilt.
rolesInfo geeft informatie terug over de rol of rollen die je wilt.
updateRole Updatet een rol die door de gebruiker is ingesteld.

Conclusie

Met de MongoDB-database, die het opslaan en ophalen van gegevens gemakkelijk en snel mogelijk maakt, kan men een gebruiker maken met behulp van de opdracht "db.createUser()". Aan de andere kant biedt de opdracht "AdminAnyDatabase" gebruikers alle rechten om toegang te krijgen tot de DB onder de beheerdersrol. Dit artikel is een stap verder gegaan en illustreerde hoe u rollen en rechten kunt verlenen. We hopen dat je het nuttig vindt. Zo ja, vergeet dan niet een opmerking achter te laten in de opmerkingen hieronder.


  1. MongoDb c#-stuurprogramma zoek item in array op veldwaarde

  2. MongoDB-query om alleen ingesloten document te retourneren

  3. Hoe dubbele vermeldingen uit een array te verwijderen?

  4. Mongoose voegt meerdere objecten toe aan array indien niet gebaseerd op bestaan