MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Premiers pas avec la gestion des utilisateurs de MongoDB

L'une des premières tâches après la mise en service de votre serveur de base de données MongoDB consiste à configurer vos utilisateurs et vos bases de données. Dans cet article, nous passerons en revue certains des scénarios courants de création et de configuration d'utilisateurs dans MongoDB. La gestion des utilisateurs de MongoDB s'est considérablement améliorée par rapport aux deux versions précédentes et constitue désormais un modèle de gestion des utilisateurs capable et fonctionnel. Les utilisateurs peuvent se voir attribuer divers rôles et les rôles peuvent être configurés avec les privilèges souhaités. Il existe plusieurs rôles d'utilisateur intégrés à utiliser, ou vous pouvez créer vos propres rôles personnalisés.

Les exemples de cet article utilisent un client 2.6.4 et un serveur 2.6.4. Des changements considérables ont été apportés au modèle de gestion des utilisateurs de 2.4 à 2.6. Donc, si vous utilisez un client 2.4, de nombreux exemples de cet article ne fonctionneront pas pour vous. Vous pouvez vérifier la version du client yoMongoDBodb en utilisant la syntaxe suivante :

mongo --version

Ajouter un utilisateur à une base de données

La première étape après la création de votre utilisateur consiste à créer votre base de données d'application :

utiliser applicationdb ;

Après avoir créé cette base de données, nous souhaitons créer l'utilisateur qui sera utilisé par l'application pour écrire dans cette base de données. Nous voulons que cet utilisateur ait des privilèges de lecture et d'écriture sur la base de données :

db.createUser({'user':'appuser', 'pwd':'', roles:['readWrite']});

Parfois, nous voulons également ajouter des utilisateurs qui ont un accès en lecture seule à la base de données. Par exemple, nous pourrions souhaiter ajouter un utilisateur d'analyse qui n'a qu'un accès en lecture seule à la base de données :

db.createUser({'user':'analyticsuser', 'pwd':'', roles:['read']});

Maintenant que les utilisateurs sont créés, essayons de nous connecter en tant qu'utilisateur depuis la console MongoDB :

mongo -u 'appuser' -p /applicationdbVersion du shell MongoDB :2.6.4connexion à :/applicationdb>

Vous devriez avoir réussi à vous connecter ! Notez que "/applicationdb" à la fin de la syntaxe indique à MongoDB d'authentifier le "appuser" sur la base de données "applicationdb".

Ajouter un utilisateur à plusieurs bases de données

Dans de nombreux scénarios, nous devons créer plusieurs bases de données sur le serveur. Par exemple, dans ce scénario, nous pourrions avoir besoin de créer une autre base de données "analyticsdb" pour stocker les résultats de l'analyse. Le « analyticsuser » a maintenant besoin d'un accès en « lecture seule » sur les autorisations « applicationdb » et « readWrite » sur le « analyticsdb ».

Alors, comment y parvenir ? Devrions-nous ajouter le « analyticsuser » à chaque base de données ? Cela crée un cauchemar de gestion à long terme car de nombreux utilisateurs et bases de données sont ajoutés. Heureusement, il existe une solution simple. Nous pouvons centraliser les attributions de rôles pour un utilisateur et les stocker dans une seule base de données. Dans ce scénario, je préfère stocker ces affectations dans la base de données "admin" car c'est la plaque tournante de l'administration centrale du serveur, mais vous pouvez également les stocker dans une base de données distincte :

use admindb.createUser({user:'analyticsuser', pwd:'', roles:[{'role':'read', 'db':'applicationdb'}, { 'role':' readWrite', 'db':'analyticsdb'}]});

Une fois ajouté, vous pouvez utiliser "Afficher les utilisateurs" pour afficher les détails de vos utilisateurs. Voici à quoi ressemble ma base de données d'administration :

use admin> afficher les utilisateurs{"_id" :"admin.admin","user" :"admin","db" :"admin","roles" :[{ "role" :"root"," db" :"admin"},{"role" :"restore","db" :"admin"}]}{"_id" :"admin.analyticsuser","user" :"analyticsuser","db" :"admin","roles" :[{"role" :"read","db" :"applicationdb"},{"role" :"readWrite","db" :'analyticsdb"}]}>

Maintenant que notre utilisateur est ajouté, essayons de nous connecter depuis la console pour vérifier l'authentification en utilisant la syntaxe que nous avons utilisée ci-dessus :

mongo -u 'analyticsuser' -p  /applicationdb

Cependant, l'authentification échoue :

2014-10-06T23:11:42.616+0000 Erreur :18 { ok :0.0, errmsg :"auth failed", code :18 } at src/mongo/shell/db.js:1210exception :login failed 

La raison en est que « analyticsuser » est défini sur la base de données « admin » et non sur « applicationdb ». La façon de le spécifier est d'utiliser le paramètre '–authenticationDatabase'.

mongo -u 'analyticsuser' -p  /applicationdb --authenticationDatabase 'admin'

Cette fois, la connexion réussit :

Version du shell MongoDB : 2.6.4 connexion à :/applicationdb

Pour mieux comprendre les différents autres rôles intégrés disponibles dans MongoDB, vous pouvez vous référer à la documentation MongoDB sur les rôles intégrés. Comme toujours, si vous avez d'autres questions, vous pouvez nous contacter à [email protected].