Hur man skapar användare och lägger till roll i MongoDB

⚡ Smart sammanfattning

Skapa en användare och lägga till en roll i MongoDB förlitar sig på metoden db.createUser() för att definiera autentiseringsuppgifter, tilldela inbyggda roller och räckviddsbehörigheter till specifika databaser, vilket stärker åtkomstkontrollen över administrativa konton och konton för enskilda databaser.

  • 🔑 Kärnmetod: Kommandot db.createUser() etablerar ett konto genom att ange användaren, pwd och en roles-array i en enda sats.
  • 🛡️ Administratörsomfattning: Rollen userAdminAnyDatabase ger hanteringsrättigheter för varje databas, medan userAdmin begränsar kontrollen till en namngiven databas.
  • 🎯 Rolltilldelning: Inbyggda roller som read och readWrite mappar exakt till de åtgärder en användare kan utföra på en samling.
  • 👥 Flera databaser: Ett enda konto kan inneha olika roller i flera databaser inom en rollmatris.
  • Verifiering: Metoden db.getUsers() och den returnerade utdata bekräftar att konton och behörigheter har etablerats korrekt.

Hur man skapar en användare och lägger till en roll MongoDB

Vad är inbyggda roller i MongoDB?

Innan du skapar ett konto är det bra att förstå de inbyggda roller som MongoDB tillhandahåller. En roll är en namngiven samling behörigheter, och varje behörighet kopplar ihop en resurs (en databas eller samling) med de åtgärder som är tillåtna på den. Att tilldela en roll under användarskapandet avgör därför exakt vad det kontot kan göra.

MongoDB grupperar sina inbyggda roller i databasanvändarroller, databasadministrationsroller, klusteradministrationsroller, säkerhetskopierings- och återställningsroller samt superanvändarroller. Tabellen nedan sammanfattar de roller som används oftast vid hantering av användare:

Roll Kategori Beviljade privilegier
läsa Databasanvändare Skrivskyddad åtkomst till alla icke-systemsamlingar i en databas.
läsaSkriva Databasanvändare Läsåtkomst plus infoga, uppdatera och ta bort i samlingar.
dbAdmin Databasadministratör Schema-, indexerings- och statistikhantering för en databas.
användarAdmin Databasadministratör Skapa och ändra användare och roller i en enda databas.
användareAdminValfri databas Superuser Användaradministration över varje databas i instansen.
rot Superuser Full tillgång till alla resurser och operationer.

MongoDB Skapa administratörsanvändare

Skapa en användaradministratör i MongoDB görs genom att använda metoden createUser. Följande exempel visar hur detta kan göras.

db.createUser(
{	user: "Guru99",
	pwd: "password",

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

MongoDB Skapa administratörsanvändare

Code Förklaring:

  1. Det första steget är att ange "användarnamn" och "lösenord" som måste skapas.
  2. Det andra steget är att tilldela en roll för användaren. Eftersom det måste vara en databasadministratör har vi tilldelat rollen "userAdminAnyDatabase". Denna roll tillåter användaren att ha administrativa behörigheter till alla databaser i MongoDB.
  3. Parametern db anger admindatabasen, som är en speciell metadatabas inom MongoDB som innehåller informationen för den här användaren.

Om kommandot utförs framgångsrikt kommer följande utdata att visas:

Produktion:

MongoDB Skapa administratörsanvändare

Utdata visar att en användare kallar "Guru99” skapades och den användaren har behörighet över alla databaser i MongoDB.

MongoDB Skapa användare för enstaka databas

För att skapa en användare som ska hantera en enda databas kan vi använda samma kommando som nämnts ovan, men vi behöver bara använda alternativet "userAdmin".

Följande exempel visar hur detta kan göras:

MongoDB Skapa användare för enstaka databas

db.createUser(
{
	user: "Employeeadmin",

	pwd: "password",

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

Code Förklaring:

  1. Det första steget är att ange "användarnamn" och "lösenord" som måste skapas.
  2. Det andra steget är att tilldela en roll för användaren, som i det här fallet, eftersom det måste vara en databasadministratör, tilldelas rollen "userAdmin". Denna roll tillåter användaren att ha administrativa behörigheter endast till den databas som anges i db-alternativet.
  3. Parametern db anger till vilken databas användaren ska ha administrativa rättigheter.

Om kommandot utförs framgångsrikt kommer följande utdata att visas:

Produktion:

MongoDB Skapa användare för enstaka databas

Utdatat visar att en användare som heter "Employeeadmin" skapades och att användaren endast har privilegier på databasen "Employee".

Hantera användare

Först, förstå de roller som du behöver definiera. Det finns en hel lista med roller tillgängliga i MongoDBTill exempel finns det rollen ”läs”, som endast tillåter skrivskyddad åtkomst till databaser, och sedan finns det rollen ”läs- och skrivåtkomst”, som ger läs- och skrivåtkomst till databasen. Det betyder att användaren kan utfärda kommandona infoga, ta bort och uppdatera på samlingar i den databasen.

Hantera användare

db.createUser(
{
	user: "Mohan",

	pwd: "password",

	roles:[
	{ role: "read" , db:"Marketing" },
	{ role: "readWrite" , db:"Sales" }
	]
})

Kodavsnittet ovan visar att en användare som heter Mohan skapas och att han tilldelas flera roller i flera databaser. I exemplet ovan ges han läsbehörighet till databasen "Marknadsföring" och läs- och skrivbehörighet till databasen "Försäljning".

Så här visar och hanterar du MongoDB användare

Efter att konton finns, MongoDB tillhandahåller en uppsättning kommandon för att inspektera, uppdatera och ta bort dem utan att släppa demping och återskapa varje användare. Dessa kommandon körs mot databasen där användaren skapades, så växla till rätt databas med use-satsen innan du utfärdar dem.

De vanligaste kommandona för användarhantering är:

  • db.getUsers() — listar alla användare som definierats i den aktuella databasen tillsammans med de roller var och en innehar.
  • db.getUser("användarnamn") — returnerar informationen om ett enda konto, vilket är användbart för granskningsbehörigheter.
  • db.grantRolesToUser() — lägger till en eller flera roller till en befintlig användare utan att påverka nuvarande roller.
  • db.revokeRolesFromUser() — tar bort specifika roller och skärper åtkomsten när ansvarsområden ändras.
  • db.changeAnvändarlösenord() — återställer lösenordet för ett konto medan keepping dess roller intakta.
  • db.dropUser() — tar bort en användare permanent från databasen.

Exemplet nedan beviljar en extra roll, återkallar en annan, återställer ett lösenord och tar slutligen bort kontot:

// List all users in the current database
db.getUsers()

// Grant an additional role to an existing user
db.grantRolesToUser("Employeeadmin", [{ role: "readWrite", db: "Employee" }])

// Remove a role from a user
db.revokeRolesFromUser("Employeeadmin", [{ role: "userAdmin", db: "Employee" }])

// Change a user's password
db.changeUserPassword("Employeeadmin", "newPassword")

// Delete a user
db.dropUser("Employeeadmin")

Att köra db.getUsers() igen efter dessa åtgärder bekräftar att ändringarna har tillämpats och att endast de avsedda kontona och rollerna finns kvar.

Bästa metoder för MongoDB Användarhantering

Välplanerade användarkonton håller en MongoDB Säker och enkel att granska driftsättningen. Följande metoder minskar risken för oavsiktlig dataexponering och missbruk av privilegier:

  • Tillämpa lägsta privilegium: Ge endast de roller som ett konto verkligen behöver, och prioritera readWrite på en enda databas framför breda administrativa roller.
  • Undvik rot i produktionen: Reservera rollerna root och userAdminAnyDatabase för installations- och nöduppgifter snarare än daglig drift.
  • Aktivera autentisering: Starta servern med alternativet –auth så att autentiseringsuppgifterna faktiskt tillämpas.
  • Använd starka lösenord: Kombinera längd och komplexitet och rotera lösenord med db.changeUserPassword() enligt ett schema.
  • Revision regelbundet: Review db.getUsers() matar ut regelbundet och tar bort konton som inte längre behövs.

Tillsammans säkerställer dessa vanor att varje konto motsvarar ett verkligt behov och att åtkomst kan tracnärhelst en säkerhetsgranskning äger rum.

Vanliga frågor

Ja. AI-assistenter kan omvandla en vanlig beskrivning till ett giltigt db.createUser()-kommando, tilldela rätt roles-array och omfatta den till en databas. Testa alltid det genererade kommandot på en icke-produktionsdatabas innan du kör det.

Ja. AI-drivna granskningsverktyg kan läsa utdata från db.getUsers(), flagga konton som innehar root- eller userAdminAnyDatabase-kontot och föreslå roller med lägst behörighet. Administratörer bör fortfarande granska varje rekommendation innan de återkallar åtkomst i ett aktivt system.

Rollen userAdmin hanterar användare och roller på en specifik databas, medan userAdminAnyDatabase ger användaradministrationsbehörighet för varje databas i instansen. Använd userAdmin för begränsad kontroll och userAdminAnyDatabase endast för betrodda administratörer.

Växla till databasen där användaren finns med kommandot use och kör sedan db.dropUser("användarnamn"). MongoDB tar bort kontot och dess roller i den databasen. Bekräfta borttagningen genom att köra db.getUsers() efteråt.

Sammanfatta detta inlägg med: