Come creare un utente e aggiungere un ruolo MongoDB

โšก Riepilogo intelligente

Creazione di un utente e aggiunta di un ruolo in MongoDB Si basa sul metodo db.createUser() per definire le credenziali, assegnare ruoli predefiniti e limitare i privilegi a database specifici, rafforzando il controllo degli accessi tra account amministrativi e account a database singolo.

  • ๐Ÿ”‘ Metodo principale: Il comando db.createUser() crea un account specificando l'utente, la password e un array di ruoli in un'unica istruzione.
  • ๐Ÿ›ก๏ธ Ambito di competenza dell'amministratore: Il ruolo userAdminAnyDatabase concede i diritti di gestione su tutti i database, mentre userAdmin limita il controllo a un singolo database specificato.
  • ๐ŸŽฏ Assegnazione del ruolo: I ruoli predefiniti, come lettura e lettura/scrittura, corrispondono esattamente alle azioni che un utente puรฒ eseguire su una raccolta.
  • ๐Ÿ‘ฅ Database multipli: Un singolo account puรฒ detenere ruoli diversi in piรน database all'interno di un unico array di ruoli.
  • โœ… Verifica: Il metodo db.getUsers() e l'output restituito confermano che gli account e i privilegi sono stati configurati correttamente.

Come creare un utente e aggiungere un ruolo in MongoDB

Quali sono i ruoli predefiniti in MongoDB?

Prima di creare un account, รจ utile comprendere i ruoli predefiniti che MongoDB Un ruolo รจ una raccolta denominata di privilegi, e ogni privilegio associa una risorsa (un database o una raccolta) alle azioni consentite su di essa. Assegnare un ruolo durante la creazione dell'utente determina quindi esattamente cosa quell'account puรฒ fare.

MongoDB Il sistema raggruppa i ruoli predefiniti in ruoli utente del database, ruoli di amministrazione del database, ruoli di amministrazione del cluster, ruoli di backup e ripristino e ruoli di superutente. La tabella seguente riassume i ruoli piรน utilizzati nella gestione degli utenti:

Ruolo Categoria Privilegi concessi
read Utente del database Accesso in sola lettura a tutte le raccolte non di sistema in un database.
leggereScrivere Utente del database Accesso in lettura, oltre a inserimento, aggiornamento ed eliminazione sulle raccolte.
dbAdmin Amministratore del database Gestione dello schema, dell'indicizzazione e delle statistiche per un database.
Amministratore utente Amministratore del database Creazione e modifica di utenti e ruoli su un unico database.
userAdminAnyDatabase superuser Gestione degli utenti su tutti i database dell'istanza.
radice superuser Accesso completo a tutte le risorse e operazioni.

MongoDB Crea utente amministratore

Creazione di un amministratore utente in MongoDB viene fatto usando il metodo createUser. Il seguente esempio mostra come questo puรฒ essere fatto.

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

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

MongoDB Crea utente amministratore

Code Spiegazione:

  1. Il primo passo รจ specificare il โ€œnome utenteโ€ e la โ€œpasswordโ€ da creare.
  2. Il secondo passaggio consiste nell'assegnare un ruolo all'utente. Poichรฉ deve essere un amministratore di database, in tal caso abbiamo assegnato il ruolo "userAdminAnyDatabase". Questo ruolo consente all'utente di avere privilegi amministrativi su tutti i database in MongoDB.
  3. Il parametro db specifica il database admin, che รจ uno speciale database Meta all'interno MongoDB che contiene le informazioni relative a questo utente.

Se il comando viene eseguito correttamente, verrร  visualizzato il seguente output:

Produzione:

MongoDB Crea utente amministratore

L'output mostra che un utente chiamato "Guru99โ€ รจ stato creato e quellโ€™utente ha privilegi su tutti i database in MongoDB.

MongoDB Crea utente per database singolo

Per creare un utente che gestisca un singolo database, possiamo utilizzare lo stesso comando menzionato in precedenza, ma dobbiamo usare solo l'opzione "userAdmin".

L'esempio seguente mostra come si puรฒ fare:

MongoDB Crea utente per database singolo

db.createUser(
{
	user: "Employeeadmin",

	pwd: "password",

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

Code Spiegazione:

  1. Il primo passo รจ specificare il โ€œnome utenteโ€ e la โ€œpasswordโ€ da creare.
  2. Il secondo passaggio consiste nell'assegnare un ruolo all'utente, che in questo caso, poichรฉ deve essere un amministratore di database, viene assegnato al ruolo "userAdmin". Questo ruolo consente all'utente di avere privilegi amministrativi solo sul database specificato nell'opzione db.
  3. Il parametro db specifica il database su cui l'utente deve avere privilegi amministrativi.

Se il comando viene eseguito correttamente, verrร  visualizzato il seguente output:

Produzione:

MongoDB Crea utente per database singolo

L'output mostra che รจ stato creato un utente chiamato "Employeeadmin" e tale utente ha privilegi solo sul database "Employee".

Gestione degli utenti

Innanzitutto, comprendi i ruoli che devi definire. C'รจ un elenco completo di ruoli disponibili in MongoDBAd esempio, esiste il ruolo "lettura", che consente solo l'accesso in sola lettura ai database, e poi c'รจ il ruolo "lettura/scrittura", che fornisce accesso in lettura e scrittura al database. Ciรฒ significa che l'utente puรฒ eseguire comandi di inserimento, eliminazione e aggiornamento sulle collezioni in quel database.

Gestione degli utenti

db.createUser(
{
	user: "Mohan",

	pwd: "password",

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

Il frammento di codice sopra riportato mostra la creazione di un utente chiamato Mohan, al quale vengono assegnati piรน ruoli in diversi database. Nell'esempio, gli viene concessa l'autorizzazione di sola lettura al database "Marketing" e l'autorizzazione di lettura/scrittura al database "Sales".

Come visualizzare e gestire MongoDB Utenti

Dopo che gli account esistono, MongoDB fornisce una serie di comandi per ispezionarli, aggiornarli e rimuoverli senza perditaping e ricreando ciascun utente. Questi comandi vengono eseguiti sul database in cui รจ stato creato l'utente, quindi รจ necessario passare al database corretto con l'istruzione `use` prima di eseguirli.

I comandi di gestione utenti piรน comuni sono:

  • db.getUsers() โ€” Elenca tutti gli utenti definiti nel database corrente, insieme ai ruoli che ciascuno di essi detiene.
  • db.getUser("username") โ€” restituisce i dettagli di un singolo account, il che รจ utile per verificare i privilegi.
  • db.grantRolesToUser() โ€” aggiunge uno o piรน ruoli a un utente esistente senza influire sui ruoli attuali.
  • db.revokeRolesFromUser() โ€” elimina ruoli specifici, limitando l'accesso quando cambiano le responsabilitร .
  • db.changeUserPassword() โ€” reimposta la password per un account mentre mantieniping i suoi ruoli intatti.
  • db.dropUser() โ€” elimina definitivamente un utente dal database.

L'esempio seguente assegna un ruolo aggiuntivo, ne revoca un altro, reimposta una password e infine elimina l'account:

// 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")

Eseguendo nuovamente db.getUsers() dopo queste operazioni, si conferma che le modifiche sono state applicate e che sono rimasti solo gli account e i ruoli desiderati.

migliori pratiche per MongoDB Gestione utenti

Gli account utente ben pianificati mantengono un MongoDB L'implementazione รจ sicura e facilmente verificabile. Le seguenti pratiche riducono il rischio di esposizione accidentale dei dati e di uso improprio dei privilegi:

  • Applica il privilegio minimo: Assegna solo i ruoli di cui un account ha effettivamente bisogno, privilegiando i permessi di lettura e scrittura su un singolo database rispetto a ruoli amministrativi generici.
  • Evitare di mettere radici in produzione: Riservate i ruoli root e userAdminAnyDatabase alle attivitร  di configurazione e di emergenza, piuttosto che alle operazioni quotidiane.
  • Abilita l'autenticazione: Avvia il server con l'opzione โ€“auth in modo che le credenziali vengano effettivamente applicate.
  • Usa password complesse: Combina lunghezza e complessitร  e ruota le password a intervalli regolari con db.changeUserPassword().
  • Controllare regolarmente: RevEsamina periodicamente l'output di db.getUsers() e rimuovi gli account che non sono piรน necessari.

Insieme, queste abitudini assicurano che ogni account corrisponda a un bisogno reale e che l'accesso possa essere traced ogni qualvolta viene effettuata una revisione della sicurezza.

DOMANDE FREQUENTI

Sรฌ. Gli assistenti IA possono trasformare una semplice descrizione in un comando db.createUser() valido, assegnare l'array di ruoli corretto e applicarlo a un database. Testa sempre il comando generato su un database non di produzione prima di eseguirlo.

Sรฌ. Gli strumenti di audit basati sull'intelligenza artificiale possono leggere l'output di db.getUsers(), segnalare gli account che detengono i privilegi di root o userAdminAnyDatabase e suggerire ruoli con privilegi minimi. Gli amministratori dovrebbero comunque esaminare attentamente ogni suggerimento prima di revocare l'accesso in un sistema in produzione.

Il ruolo userAdmin gestisce utenti e ruoli su un database specifico, mentre userAdminAnyDatabase concede privilegi di amministrazione degli utenti su tutti i database dell'istanza. Utilizzare userAdmin per un controllo limitato e userAdminAnyDatabase solo per gli amministratori attendibili.

Passa al database in cui esiste l'utente utilizzando il comando use, quindi esegui db.dropUser("username"). MongoDB Rimuove l'account e i relativi ruoli da quel database. Conferma la rimozione eseguendo successivamente db.getUsers().

Riassumi questo post con: