Cómo proteger MongoDB con nombre de usuario y contraseña

Deseo configurar la autenticación de nombre de usuario y contraseña para mi instancia de MongoDB, de modo que cualquier acceso remoto solicite el nombre de usuario y la contraseña. Probé el tutorial desde el sitio de MongoDB e hice lo siguiente:

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

Después de eso, salí y corrí mongo nuevamente. Y no necesito contraseña para acceder a ella. Incluso si me conecto a la base de datos de forma remota, no se me solicita el nombre de usuario y la contraseña.


ACTUALIZAR Aquí está la solución que terminé usando

 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 

El nombre de usuario y la contraseña funcionarán de la misma manera para mongodump y mongoexport .

mongod iniciar mongod con la opción --auth después de configurar el usuario.

Desde el sitio de MongoDB:

Ejecute la base de datos (proceso mongod) con la opción --auth para habilitar la seguridad. Debe haber agregado un usuario al db del administrador antes de iniciar el servidor con --auth , o agregar el primer usuario desde la interfaz del --auth local.

Autenticación MongoDB

Primero, desactive la línea que comienza con #auth=true en su archivo de configuración de mongod (ruta predeterminada /etc/mongo.conf ). Esto habilitará la autenticación para mongodb.

Luego, reinicie mongodb: sudo service mongod restart

Esta respuesta es para Mongo 3.2.1 Referencia

Terminal 1:

 $ mongod --auth 

Terminal 2:

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

si quieres agregar sin roles (opcional):

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

para verificar si está autenticado o no:

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

debería darle:

 1 

else:

 Error: Authentication failed. 0 

Wow tantas respuestas complicadas / confusas aquí.

Esto es a partir de v3.4 .

Respuesta corta.

1) Inicie MongoDB sin control de acceso.

 mongod --dbpath /data/db 

2) Conéctese a la instancia.

 mongo 

3) Crea el usuario.

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

4) Detenga la instancia de MongoDB y vuelva a iniciarla con control de acceso.

 mongod --auth --dbpath /data/db 

5) Conéctese y autentíquese como el usuario.

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

Respuesta larga: léelo si quieres entenderlo correctamente.

Es realmente simple. Voy a tontear lo siguiente https://docs.mongodb.com/manual/tutorial/enable-authentication/

Si desea obtener más información acerca de lo que hacen los roles, lea más aquí: https://docs.mongodb.com/manual/reference/built-in-roles/

1) Inicie MongoDB sin control de acceso.

 mongod --dbpath /data/db 

2) Conéctese a la instancia.

 mongo 

3) Crea el administrador del usuario. A continuación, se crea un administrador de usuario en la base de datos de autenticación de admin . El usuario es un dbOwner sobre la some_db datos some_db y NO sobre la base de datos de admin , esto es importante recordarlo.

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

O si desea crear un administrador que sea administrador sobre cualquier base de datos:

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

4) Detenga la instancia de MongoDB y vuelva a iniciarla con control de acceso.

 mongod --auth --dbpath /data/db 

5) Conéctese y autentíquese como el administrador del usuario hacia la base de datos de autenticación de admin , NO hacia la base de datos de autenticación some_db . El administrador del usuario se creó en la base de datos de autenticación de admin , el usuario no existe en la base de datos de autenticación some_db .

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

Ahora está autenticado como dbOwner en la base de datos some_db . Entonces, si deseas leer / escribir / hacer cosas directamente hacia la some_db datos some_db puedes cambiarlo.

 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. 

Más sobre roles: https://docs.mongodb.com/manual/reference/built-in-roles/

Si desea hacer usuarios adicionales que no sean administradores de usuarios y que solo sean usuarios normales, continúe leyendo a continuación.

6) Crea un usuario normal. Este usuario se creará en la base de datos de autenticación some_db a continuación.

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

7) Salga del shell mongo, reconéctese, autentíquese como el usuario.

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

Aquí hay un código de JavaScript para agregar usuarios.

  1. Comience mongod con --auth = true

  2. Acceda a la base de datos de admin desde mongo shell y pase el archivo javascript.

    mongo admin “Filename.js”

    “Nombre de archivo.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. Ahora que la adición del usuario está completa, podemos verificar el acceso a la base de datos desde el shell mongo

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

Edite el archivo de configuración de mongo;

 sudo nano /etc/mongod.conf 

Agrega la línea:

 security.authorization : enabled 

Reiniciar el servicio

 sudo service mongod restart 

Saludos

Primero ejecute mongoDB en la terminal usando

 mongod 

Ahora ejecuta el uso de mongo shell siguiendo los comandos

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

Reinicie la instancia de MongoDB con control de acceso.

 mongod --auth 

Ahora autentícate desde la línea de comando usando

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

Lo leí de

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

Deberá cambiar a la base de datos en la que desea que esté el usuario (no al administrador db) …

use mydatabase

Consulte esta publicación para obtener más ayuda … http://learnmongo.com/posts/quick-tip-mongodb-users/

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

Estos pasos me funcionaron:

  1. escribe mongod –port 27017 en cmd
  2. luego conéctese a mongo shell: mongo –port 27017
  3. crear el administrador del usuario: use admin db.createUser ({user: “myUserAdmin”, pwd: “abc123”, roles: [{role: “userAdminAnyDatabase”, db: “admin”}]})
  4. desconectar mongo shell
  5. reinicie el mongodb: mongod –auth –port 27017
  6. start mongo shell: mongo –port 27017 -u “myUserAdmin” -p “abc123” –authenticationDatabase “admin”
  7. Para autenticarte después de conectarte, conecta el shell mongo al mongod: mongo –port 27017
  8. cambiar a la base de datos de autenticación: use admin db.auth (“myUserAdmin”, “abc123”

después de crear un nuevo usuario, no olvide grant permiso de read/write/root al usuario. puedes probar el

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

La mejor práctica para conectarse a mongoDB de la siguiente manera:

  1. Después de la instalación inicial,

    use admin

  2. A continuación, ejecute la siguiente secuencia de comandos para crear un usuario administrador

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

la siguiente secuencia de comandos creará el usuario administrador para la base de datos.

  1. inicie sesión en db.admin usando

    mongo -u YourUserName -p YourPassword admin

  2. Después de iniciar sesión, puede crear N número de la base de datos con la misma credencial de administrador o diferente repitiendo el 1 al 3.

Esto le permite crear diferentes usuarios y contraseñas para la diferente colección que está creando en MongoDB