MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come creare un utente e aggiungere un ruolo in MongoDB

MongoDB è un database multipiattaforma orientato ai documenti che rende l'archiviazione e il recupero dei dati semplice e veloce. Il database utilizza una struttura simile a JSON per i documenti, familiare principalmente alle applicazioni moderne.

MongoDB utilizza raccolte e manoscritti in base ai quali i documenti sono costituiti da coppie chiave-valore, l'unità di base dei dati in MongoDB. Al contrario, le raccolte contengono funzioni e documenti equivalenti alle tabelle di database relazionali.

Crea un nuovo utente in MongoDB

Per aggiungere nuovi utenti al sistema, MongoDB fornisce una tecnica interna nota come db.createUser(). A differenza dei tradizionali sistemi di database, gli utenti MongoDB sono vincolati a un database locale chiamato database di autenticazione. Pertanto, non sono collegati a livello globale, come i database SQL convenzionali.

Inoltre, il database di autenticazione e il nome dell'utente fungono da identificatore univoco. Pertanto, se due utenti vengono creati in database diversi ma condividono gli stessi nomi, vengono identificati come due utenti separati. Pertanto, se si desidera creare un singolo utente con autorizzazioni su più database, è necessario consentire a un singolo utente di avere diritti/ruoli sul database applicabile invece di creare l'utente numerose volte in database diversi.

Esempio:

db.createUser(

{       user: "Foss",

        pwd: "password",

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

Comandi di gestione utenti

Nome/i Descrizione
createUser Questo metodo crea un nuovo utente.
dropAllUsersFromDatabase Elimina tutti gli utenti da un database.
dropUser Concede un'attività ei suoi privilegi a un utente.
grantRolesToUser Un ruolo e i relativi privilegi vengono assegnati a un utente.
revokeRolesFromUser Rimuove il ruolo di un utente.
updateUser Questo metodo viene utilizzato per aggiornare i dati di un utente.
usersInfo Questo metodo restituisce informazioni sugli utenti forniti.

Aggiunta di un utente

Quando si aggiunge l'utente a un DB specificato, utilizzare il metodo "db.createUser()". È importante notare che aggiungere utenti con opzioni è molto più semplice che inserire un documento utente in un database non relazionale.

Esempio:

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

    ]

  }

)

Dopo aver connesso l'istanza MongoDB nell'esempio sopra, puoi collegarla al foss DB per eseguire il comando db.createUser(). Il database utilizzato fungerà da database di autenticazione dell'utente.

La password e il nome utente sono forniti nel documento che contiene la nostra chiamata al metodo come coppie chiave-valore. L'uso dei ruoli controlla l'accesso ai database. Un utente deve avere un ruolo per accedere a qualsiasi database, anche al proprio database di autenticazione. Inoltre, a un utente viene concesso l'accesso ad altri database nel sistema utilizzando i ruoli. Pertanto, i privilegi di un utente non sono limitati al proprio database di autenticazione. Pertanto, ciò consente agli utenti di disporre di vari privilegi sui numerosi database secondo necessità. Il principio del privilegio minimo consente agli utenti di mantenere l'ambito di accesso al database il più piccolo possibile.‍

Come creare un utente amministratore in MongoDB

La creazione di un utente amministratore in MongoDB viene eseguita utilizzando il metodo db.createUser(), che consente di creare un utente. Tuttavia, dopo aver creato un utente, è necessario assegnare ruoli di amministratore. Questi ruoli conferiscono all'utente i privilegi di amministratore.

Crea un utente per un singolo database in MongoDB

Se vogliamo creare un utente che può lavorare solo con un database, possiamo usare un comando simile come sopra, ma dobbiamo usare l'opzione "userAdmin" solo una volta.

Esempio:

db.createUser(

{        user: "Fosslinux",

         pwd: "password",

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

Scomposizione del codice:

  1. In primo luogo, è necessario specificare il "nome utente" e la "password" da creare.
  2. Assegna il ruolo a quell'Utente, che è l'amministratore del database; questo è assegnato al ruolo “user admin” poiché il ruolo consente all'utente di avere privilegi di amministratore solo sul database specificato nel DB
  3. Infine, il parametro DB imposta il database su cui l'Utente dovrebbe avere i diritti di amministratore.

Gestione utenti

Per gestire gli utenti, è necessario comprendere i ruoli che devono essere definiti poiché MongoDB ha un intero elenco di funzioni come il ruolo di lettura e il ruolo di lettura-scrittura. Il comando "leggi ruolo" consente solo l'accesso in sola lettura ai database. Il “ruolo di lettura-scrittura” fornisce l'accesso in lettura e scrittura al database; ciò significa che l'utente può emettere i comandi di aggiornamento, inserimento e cancellazione sulle raccolte in quel database.

Esempio:

db.createUser(
{
            user: "Foss",

            pwd: "password",

            roles:[

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

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

            }
                          ]
})

L'esempio precedente mostra che un utente noto come Foss viene creato e gli vengono assegnati diversi ruoli in più DB. Nello stesso modello, a Foss viene concessa l'autorizzazione di sola lettura sul database "Tutorial" e le autorizzazioni di lettura-scrittura sul database "Guide".

Aggiunta di ruoli a MongoDB

I ruoli concedono agli utenti l'accesso alle risorse MongoDB. Inoltre, MongoDB fornisce diversi ruoli integrati che consentono agli amministratori di controllare l'accesso a un sistema MongoDB. Tuttavia, quando questi ruoli non possono descrivere l'insieme di privilegi desiderato, è possibile creare nuovi ruoli in un determinato database. Fatta eccezione per le funzioni create nel database di amministrazione, un ruolo può includere solo i diritti che si applicano al suo database e quelli ereditati da altri ruoli.

Un ruolo definito nel database di amministrazione può contenere diritti applicabili al database di amministrazione, ad altri database o alla risorsa cluster e può ereditare ruoli da altri database. Per stabilire un nuovo ruolo, usa "db.createRole()" e specifica l'array dei diritti e l'array dei ruoli ereditati.

MongoDB definisce i ruoli in modo univoco combinando il nome del database con il nome del ruolo. Ogni ruolo ha come ambito il database creato, ma MongoDB archivia tutte le informazioni sul ruolo nella raccolta adminSystemRoles nel database admin. Ad esempio, le azioni Ruolo creativo e Concessione ruoli sulla risorsa database devono garantire che i ruoli vengano creati e concessi nel database. GrantRole specifica i privilegi per i nuovi ruoli e i ruoli da ereditare. User AdminAnyDatabase e Built-in functions user admin forniscono le azioni CreateRole e concedono ruoli sulle rispettive risorse.

Per creare un ruolo con le restrizioni di autenticazione specificate, è necessario impostare l'azione AuthenticationRetrictions sulla risorsa del database, su cui viene poi creata la funzione.

Il metodo db.grantRole to User() accetta i seguenti argomenti;

Parametro Digita Descrizione
Utente Stringa Comporta il nome dell'Utente a cui assegnare i ruoli.
Ruoli Matrice Comporta una serie di ruoli aggiuntivi da concedere all'Utente.
Scrivi preoccupazione Documento È facoltativo e finalizzato alla modifica del comando. Occupa anche gli stessi campi con il comando get last error.

Il parametro ruoli può specificare sia le funzioni definite dall'utente che quelle integrate, che possono essere ottenute selezionando il ruolo con il relativo nome. Ciò si ottiene connettendosi a mongod (un processo daemon primario per il sistema MongoDB che gestisce le richieste di dati, esegue operazioni di gestione in background e gestisce l'accesso ai dati). In alternativa, il mongos (che è responsabile di stabilire una connessione tra le app client e il cluster frammentato), con i diritti indicati nella sezione dei requisiti. Ad esempio, l'amministratore utente creato in un controllo di accesso abilitato può creare ruoli nell'amministratore e in altri database.

Comandi di gestione dei ruoli

Nomi Descrizione
createRole Crea un ruolo e dice cosa può fare.
dropRole Rimuove il ruolo impostato dall'utente.
dropAllRolesFromDatabase Rimuove tutti i ruoli impostati dagli utenti da un database.
grantPrivilegesToRole assegna i privilegi a un ruolo scelto dall'utente.
grantRolesToRole indica da quali ruoli un ruolo definito dall'utente può ereditare i privilegi.
invalidateUserCache Quando utilizzi invalidateUserCache, la cache in memoria delle informazioni utente, come credenziali e ruoli, viene svuotata.
revokePrivilegesFromRole rimuove i privilegi da un ruolo definito dall'utente che li ha.
revokeRolesFromRole rimuove i ruoli ereditati da un ruolo definito dall'utente che non si desidera.
rolesInfo restituisce informazioni sul ruolo o sui ruoli desiderati.
updateRole Aggiorna un ruolo che è stato impostato dall'utente.

Conclusione

Il database MongoDB, che consente l'archiviazione e il recupero dei dati in modo facile e veloce, può consentire di creare un utente utilizzando il comando "db.createUser()". D'altra parte, il comando "AdminAnyDatabase" fornisce agli utenti tutti i privilegi per accedere al DB con il ruolo di amministratore. Questo articolo ha fatto il possibile e ha illustrato come concedere ruoli e diritti. Ci auguriamo che lo trovi utile. Se sì, non dimenticare di lasciare un commento nella sezione commenti qui sotto.