416 votes

Comment sécuriser MongoDB avec un nom d'utilisateur et un mot de passe ?

Je souhaite mettre en place une authentification par nom d'utilisateur et mot de passe pour mon instance MongoDB, afin que tout accès à distance demande le nom d'utilisateur et le mot de passe. J'ai essayé le tutoriel du site MongoDB et j'ai fait ce qui suit :

use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');

Après cela, je suis sorti et j'ai relancé mongo. Et je n'ai pas besoin de mot de passe pour y accéder. Même si je me connecte à la base de données à distance, aucun nom d'utilisateur ni mot de passe ne m'est demandé.


UPDATE Voici la solution que j'ai fini par utiliser

1) At the mongo command line, set the administrator:

    use admin;
    db.addUser('admin','123456');

2) Shutdown the server and exit

    db.shutdownServer();
    exit

3) Restart mongod with --auth

  $ sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/

4) Run mongo again in 2 ways:

   i) run mongo first then login:

        $ ./mongodb/bin/mongo localhost:27017
        use admin
        db.auth('admin','123456');

  ii) run & login to mongo in command line.

        $ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456

Le nom d'utilisateur et le mot de passe fonctionneront de la même manière pour les services suivants mongodump y mongoexport .

4 votes

Ceci pour MongDB version 2.2.x

29 votes

Dans Mongo 3.0.4, la commande pour créer un utilisateur est la suivante db.createUser() .

4 votes

Veuillez suivre cette procédure pour créer un utilisateur administrateur sur Mongodb 3.0. docs.mongodb.org/v3.0/tutorial/add-user-administrator

4voto

Justin Jenkins Points 10501

Vous devez passer à la base de données sur laquelle vous voulez l'utilisateur (pas la base de données d'administration) ...

use mydatabase

Voir ce post pour plus d'aide ... https://web.archive.org/web/20140316031938/http://learnmongo.com/posts/quick-tip-mongodb-users/

0 votes

N'ont pas besoin car le paramètre db = db.getSiblingDB("newDatabase") ;

4voto

Hasib Kamal Points 742

Création d'un utilisateur avec mot de passe pour une base de données spécifique afin de sécuriser l'accès à la base de données :

use dbName

db.createUser(
   {
     user: "dbUser",
     pwd: "dbPassword",
     roles: [ "readWrite", "dbAdmin" ]
   }
)

4voto

Binita Bharati Points 393

Certaines des réponses envoient des signaux contradictoires entre l'utilisation --auth en ligne de commande ou en définissant les propriétés du fichier de configuration.

security:
  authorization: enabled

Je voudrais clarifier cet aspect. Tout d'abord, les informations d'authentification (c'est-à-dire l'utilisateur et le mot de passe) doivent être créées dans les deux cas en exécutant la commande suivante db.createUser sur la requête par défaut admin base de données. Une fois les informations d'identification obtenues, il existe deux façons d'activer l'authentification :

  1. Sans fichier de configuration personnalisé : C'est lorsque l'ancien auth est applicable. Démarrer mongod comme : usr/bin/mongod --auth
  2. Avec un fichier de configuration personnalisé : Dans ce cas, la dernière configuration doit être présente dans le fichier de configuration personnalisé. mongod comme : usr/bin/mongod --config <config file path>

Pour se connecter au shell mongo avec une authentification : mongo -u <user> -p <password> --authenticationDatabase admin

--authenticationDatabase ici est le nom de la base de données où l'utilisateur a été créé. Toutes les autres commandes mongo comme mongorestore , mongodump accepter les options supplémentaires ie -u <user> -p <password> --authenticationDatabase admin

Consulte https://docs.mongodb.com/manual/tutorial/enable-authentication/ pour les détails.

3voto

Kevin Niasta Points 81

Ces étapes ont fonctionné pour moi :

  1. écrire mongod --port 27017 sur cmd
  2. puis connectez-vous au shell mongo : mongo --port 27017
  3. créer l'utilisateur admin : use admin db.createUser( { utilisateur : "monUserAdmin", pwd : "abc123", roles : [ { { rôle : "userAdminAnyDatabase", db : "admin" } } ] } )
  4. déconnecter le shell mongo
  5. redémarrer le mongodb : mongod --auth --port 27017
  6. démarrer le shell mongo : mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
  7. Pour s'authentifier après la connexion, connectez le shell mongo au mongod : mongo --port 27017
  8. passer à la base de données d'authentification : utiliser admin db.auth("monUserAdmin", "abc123"

3voto

Balaji.J.B Points 156

La meilleure pratique pour se connecter à MongoDB est la suivante :

  1. Après l'installation initiale,

    use admin

  2. Ensuite, exécutez le script suivant pour créer l'utilisateur admin.

    db.createUser(
     {
         user: "YourUserName",
         pwd: "YourPassword",
         roles: [
                   { role: "userAdminAnyDatabase", db: "admin" },
                   { role: "readWriteAnyDatabase", db: "admin" },
                   { role: "dbAdminAnyDatabase", db: "admin" },
                   { role: "clusterAdmin", db: "admin" }
                ]
     })

le script suivant va créer l'utilisateur admin pour la BD.

  1. se connecter à la db.admin en utilisant

    mongo -u YourUserName -p YourPassword admin

  2. Après la connexion, vous pouvez créer un nombre N de bases de données avec le même identifiant d'administrateur ou différent en répétant les étapes 1 à 3.

Cela vous permet de créer un utilisateur et un mot de passe différents pour les différentes collections que vous créez dans la base de données MongoDB.

0 votes

Après cela, allez dans sudo nano /etc/mongod.conf et mettez cette ligne security.authorization : enabled, vous pouvez voir le lien de référence ici : stackoverflow.com/a/57384027/3904109

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X