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.
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"}]})
Code Spiegazione:
- Il primo passo รจ specificare il โnome utenteโ e la โpasswordโ da creare.
- 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.
- 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:
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:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Spiegazione:
- Il primo passo รจ specificare il โnome utenteโ e la โpasswordโ da creare.
- 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.
- 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:
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.
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.






