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

je veux configurer l'authentification nom d'utilisateur et mot de passe pour mon instance MongoDB, de sorte que tout accès à distance demandera le nom d'utilisateur et mot de passe. J'ai essayé le tutoriel sur le site de MongoDB et j'ai fait:

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

après ça, je suis ressorti et j'ai repris 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, Je ne suis pas invité pour le nom d'utilisateur et le mot de passe.


mise à JOUR 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 façon pour mongodump et mongoexport .

328
demandé sur Prashant Pokhriyal 2011-02-03 02:35:52

12 réponses

vous devez démarrer mongod avec l'option --auth après avoir configuré l'utilisateur.

du Site de MongoDB:

exécutez la base de données (processus mongod) avec l'option --auth pour activer sécurité. Vous devez avoir ajouté un utilisateur à la base de données admin avant démarrer le serveur avec --auth , ou ajouter le premier utilisateur à partir de la interface localhost.

MongoDB Authentification

98
répondu Alexandru Petrescu 2017-02-10 18:57:07

tout d'abord, désactivez la ligne qui commence par #auth=true dans votre fichier de configuration mongod (chemin par défaut /etc/mongo.conf ). Ceci activera l'authentification pour mongodb.

puis, redémarrez mongodb: sudo service mongod restart

53
répondu Shnkc 2017-09-26 10:35:57

cette réponse est pour Mongo 3.2.1 référence

Terminal 1:

$ mongod --auth

Terminal 2:

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

si vous voulez ajouter sans rôles (facultatif):

db.createUser({user:"admin_name", pwd:"1234", roles:[]})

pour vérifier s'il est authentifié ou non:

db.auth("admin_name", "1234")

il devrait vous donner:

1

else:

Error: Authentication failed.
0
41
répondu Sdembla 2017-02-10 01:14:38

Wow, donc beaucoup de compliqué/confus réponses ici.

c'est à partir de v3.4 .

courte réponse.

1) Démarrer MongoDB sans contrôle d'accès.

mongod --dbpath /data/db

2) Connectez-vous à l'instance.

mongo

3) Créer l'utilisateur.

use some_db
db.createUser(
  {
    user: "myNormalUser",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "some_db" },
             { role: "read", db: "some_other_db" } ]
  }
)

4) arrêter L'instance MongoDB et commencer à nouveau avec le contrôle d'accès.

mongod --auth --dbpath /data/db

5) Se connecter et s'authentifier en tant qu'utilisateur.

use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})

longue réponse: lisez ceci si vous voulez bien comprendre.

c'est très simple. Je vais débiter le suivant https://docs.mongodb.com/manual/tutorial/enable-authentication/

si vous voulez en savoir plus sur ce que les rôles font réellement lire la suite: https://docs.mongodb.com/manual/reference/built-in-roles/

1) Démarrer MongoDB sans contrôle d'accès.

mongod --dbpath /data/db

2) Connectez-vous à l'instance.

mongo

3) Créer l'administrateur utilisateur. ce qui suit crée un administrateur d'utilisateur dans la base de données d'authentification admin . L'utilisateur est un dbOwner sur le some_db il est important de se souvenir de cette information, et non de la base de données admin .

use admin
db.createUser(
  {
    user: "myDbOwner",
    pwd: "abc123",
    roles: [ { role: "dbOwner", db: "some_db" } ]
  }
)

ou si vous voulez créer un administrateur qui est administrateur sur n'importe quelle base de données:

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

4) Arrêtez L'instance MongoDB et redémarrez avec le contrôle d'accès.

mongod --auth --dbpath /data/db

5) Se connecter et s'authentifier en tant qu'administrateur utilisateur vers la base de données d'authentification admin , et non vers le some_db base de données d'authentification. l'Administrateur Utilisateur a été créé dans la base de données d'authentification admin , l'utilisateur n'existe pas dans la base de données d'authentification some_db .

use admin
db.auth("myDbOwner", "abc123")

vous êtes maintenant authentifié comme un dbOwner sur la base de données some_db . Donc maintenant, si vous souhaitez lire/écrire/faire des choses directement vers la base de données some_db , vous pouvez le modifier.

use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.

pour en savoir plus sur les rôles: https://docs.mongodb.com/manual/reference/built-in-roles/

si vous souhaitez faire des utilisateurs supplémentaires qui ne sont pas des administrateurs d'utilisateurs et qui sont juste des utilisateurs normaux continuer la lecture ci-dessous.

6) Créer un utilisateur normal. cet utilisateur sera créé dans la base de données d'authentification some_db ci-dessous.

use some_db
db.createUser(
  {
    user: "myNormalUser",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "some_db" },
             { role: "read", db: "some_other_db" } ]
  }
)

7) quitter le shell mongo, se reconnecter, authentifier en tant qu'utilisateur.

use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
41
répondu Karl Morrison 2017-08-31 09:33:02

Voici un code javascript pour ajouter des utilisateurs.

  1. Démarrer mongod avec --auth = true

  2. accédez à la base de données admin de Mongo shell et passez le fichier javascript.

    mongo admin" Nom du fichier.js"

    " nom du fichier.js"

    // Adding admin user
    db.addUser("admin_username", " admin_password");
    // Authenticate admin user
    db.auth("admin_username ", " admin_password ");
    // use  database code from java script
    db = db.getSiblingDB("newDatabase");
    // Adding newDatabase database user  
    db.addUser("database_username ", " database_ password ");
    
  3. maintenant que l'ajout d'utilisateur est terminé, nous pouvons vérifier l'accès à la base de données de Mongo shell

26
répondu Bharadvaj 2014-08-23 00:10:01

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

modifier le fichier Mongo settings;

sudo nano /etc/mongod.conf

ajouter la ligne:

security.authorization : enabled

redémarrer le service

sudo service mongod restart

concerne

10
répondu alicanozkara 2016-10-23 11:33:26

de la Première exécution de mongoDB sur la borne à l'aide de

mongod

utilisez maintenant les commandes suivantes ""

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

redémarre L'instance MongoDB avec contrôle d'accès.

mongod --auth

authentifiez-vous maintenant depuis la ligne de commande en utilisant

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

Je l'ai lu de

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

5
répondu PRAVESH kumar 2017-01-11 19:19:35

vous aurez besoin de passer à la base de données que vous voulez que l'utilisateur sur (pas l'administrateur db) ...

use mydatabase

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

3
répondu Justin Jenkins 2012-12-04 21:29:38

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

use dbName

db.createUser(
   {
     user: "dbUser",
     pwd: "dbPassword",
     roles: [ "readWrite", "dbAdmin" ]
   }
)
3
répondu Hasib Kamal 2018-09-13 11:55:04

ces étapes ont fonctionné sur moi:

  1. écrire mongod --port 27017 sur cmd
  2. puis connecter à Mongo shell: mongo --port 27017
  3. créer l'administrateur utilisateur : utilisez admin DB.createUser( { utilisateur: "myUserAdmin", pwd: "abc123", rôles: [{ rôle: "userAdminAnyDatabase", db: "admin" } ] } )
  4. déconnecter Mongo shell
  5. restart the mongodb: mongod --auth --port 27017
  6. démarrer le shell mongo : mongo --port 27017-u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
  7. pour authentifier après la connexion, Connecter le shell mongo au mongod: mongo -- port 27017
  8. passer à la base de données d'authentification : utilisez admin DB.auth ("myUserAdmin"," abc123 "
2
répondu Kevin Niasta 2018-01-18 08:58:03

après que vous créez un nouvel utilisateur, s'il vous plaît ne pas oublier de grant read/write/root permission à l'utilisateur. vous pouvez essayer le

cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])

0
répondu Haisheng Yu 2017-06-08 09:05:23

La meilleure pratique pour se connecter à mongoDB comme suit:

  1. après l'installation initiale,

    use admin

  2. ensuite, exécutez le script suivant pour créer administrateur utilisateur

    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 créera l'utilisateur administrateur de la base de données.

  1. se connecter à la db.admin utilisant

    mongo -u YourUserName -p YourPassword admin

  2. après la connexion, vous pouvez créer N numéro de la base de données avec le même identifiant d'administrateur ou différent en répétant le 1 à 3.

cela vous permet de créer un utilisateur et un mot de passe différents pour la collection différente que vous créez dans le MongoDB

0
répondu Balaji.J.B 2018-07-22 08:29:58