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

17voto

alicanozkara Points 1908

https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization

Editez le fichier de configuration de mongo ;

sudo nano /etc/mongod.conf

Ajoutez la ligne :

security.authorization : enabled

Redémarrer le service

sudo service mongod restart

Salutations

6 votes

Je ne comprends pas pourquoi tout le monde ne le mentionne pas. C'est tellement important

0 votes

Probablement la réponse la plus importante. Notre serveur a été piraté parce que les autres réponses ne le mentionnaient pas.

12voto

PRAVESH kumar Points 111

Exécutez d'abord mongoDB sur le terminal en utilisant

mongod

Exécutez maintenant le shell mongo en utilisant les commandes suivantes

    use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

Redémarrez l'instance MongoDB avec le contrôle d'accès.

mongod --auth

Maintenant, authentifiez-vous à partir de la ligne de commande en utilisant

mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

Je l'ai lu dans

https://docs.mongodb.com/manual/tutorial/enable-authentication/

1 votes

Je définis un utilisateur, avec Root, puis j'en ajoute de plus en plus jusqu'à ce que je vous trouve, MongoDB Enterprise > db.system.users.find() { "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SC RAM-SHA-1" : { "iterationCount" : 10000, "salt" : "k96PCEflidMY5seVju+gAw==", "s toredKey" : "CabQTnJtny7cv0wT5X8oX9QOn3A=", "serverKey" : "RJyCdnlIhyIfj2+d44L61 bYK+MU=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" }, { "role" : "dbAdmin", "db" : "admin" }, { "role" : "userAdmin", "db" : "admin" }, { "role" : "root", "db" : "admin" } ] } l'authentification échoue toujours

0 votes

J'ai même utilisé db.changeUserPassword(), ou n'importe quoi d'autre, mais même après cela, lorsque j'appelle db.auth('admin', 'my pass') ou de la façon dont vous l'avez fait, il est dit que l'authentification a échoué pour l'utilisateur admin.

0 votes

Utilisez root rôle qui donne accès aux opérations et à toutes les ressources des rôles suivants combinés... rôle Racine

11voto

Prashant Sharma Points 46

Vous pourriez changer /etc/mongod.conf .

Avant

#security:

Après

security:
    authorization: "enabled"

Entonces sudo service mongod restart

10voto

Jinmin Points 75

C'est ce que j'ai fait sur Ubuntu 18.04 :

$ sudo apt install mongodb
$ mongo
> show dbs
> use admin
> db.createUser({  user: "root",  pwd: "rootpw",  roles: [ "root" ]  })  // root user can do anything
> use lefa
> db.lefa.save( {name:"test"} )
> db.lefa.find()
> show dbs
> db.createUser({  user: "lefa",  pwd: "lefapw",  roles: [ { role: "dbOwner", db: "lefa" } ]  }) // admin of a db
> exit
$ sudo vim /etc/mongodb.conf
auth = true
$ sudo systemctl restart mongodb
$ mongo -u "root" -p "rootpw" --authenticationDatabase  "admin"
> use admin
> exit
$ mongo -u "lefa" -p "lefapw" --authenticationDatabase  "lefa"
> use lefa
> exit

5voto

rahil471 Points 114

Suivez les étapes suivantes dans l'ordre

  • Créer un utilisateur à l'aide du CLI

    use admin db.createUser( { user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ] } )

  • Activez l'authentification, la manière de le faire diffère en fonction de votre système d'exploitation, si vous utilisez Windows, vous pouvez simplement mongod --auth Dans le cas de linux, vous pouvez modifier le fichier /etc/mongod.conf pour ajouter security.authorization : enabled et ensuite redémarrer le service mongd

  • Pour se connecter via cli mongo -u "admin" -p "admin123" --authenticationDatabase "admin" . C'est tout

Vous pouvez consulter ce poste pour obtenir plus de détails et apprendre à s'y connecter en utilisant mongoose.

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