Come proteggere MongoDB con nome utente e password

Voglio impostare l’autenticazione del nome utente e della password per l’istanza di MongoDB, in modo che qualsiasi accesso remoto richieda il nome utente e la password. Ho provato il tutorial dal sito MongoDB e ho seguito:

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

Dopo di ciò, sono uscito e ho rincontrato di nuovo il mongo. E non ho bisogno di password per accedervi. Anche se mi collego al database da remoto, non mi viene richiesto il nome utente e la password.


AGGIORNAMENTO Ecco la soluzione che ho finito per usare

 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 

Il nome utente e la password funzioneranno allo stesso modo per mongodump e mongodump .

È necessario avviare mongod con l’opzione --auth dopo aver configurato l’utente.

Dal sito MongoDB:

Esegui il database (processo mongod) con l’opzione --auth per abilitare la sicurezza. È necessario aver aggiunto un utente al file admin db prima di avviare il server con --auth oppure aggiungere il primo utente dall’interfaccia localhost.

Autenticazione MongoDB

Innanzitutto, non commentare la riga che inizia con #auth=true nel file di configurazione di mongod (percorso predefinito /etc/mongo.conf ). Ciò abiliterà l’autenticazione per mongodb.

Quindi, riavviare mongodb: sudo service mongod restart

Questa risposta è per il riferimento di Mongo 3.2.1

Terminale 1:

 $ mongod --auth 

Terminale 2:

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

se si desidera aggiungere senza ruoli (facoltativo):

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

per verificare se autenticato o no:

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

dovrebbe darti:

 1 

altro :

 Error: Authentication failed. 0 

Wow tante risposte complicate / confuse qui.

Questo è a partire dalla v3.4 .

Risposta breve.

1) Avvia MongoDB senza controllo accessi.

 mongod --dbpath /data/db 

2) Connetti all’istanza.

 mongo 

3) Crea l’utente.

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

4) Interrompere l’istanza di MongoDB e riavviarla con il controllo di accesso.

 mongod --auth --dbpath /data/db 

5) Connetti e autenticati come utente.

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

Risposta lunga: leggi questo se vuoi capire bene.

È davvero semplice Metterò a tacere quanto segue su https://docs.mongodb.com/manual/tutorial/enable-authentication/

Se vuoi saperne di più su cosa effettivamente i ruoli leggono di più qui: https://docs.mongodb.com/manual/reference/built-in-roles/

1) Avvia MongoDB senza controllo accessi.

 mongod --dbpath /data/db 

2) Connetti all’istanza.

 mongo 

3) Creare l’amministratore dell’utente. Quanto segue crea un amministratore utente nel database di autenticazione dell’amministratore. L’utente è un dbOwner sul database some_db e NON sul database di admin , questo è importante da ricordare.

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

O se vuoi creare un amministratore che è admin su qualsiasi database:

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

4) Interrompere l’istanza di MongoDB e riavviarla con il controllo di accesso.

 mongod --auth --dbpath /data/db 

5) Connettersi e autenticarsi come amministratore dell’utente verso il database di autenticazione dell’amministratore, NON verso il database di autenticazione some_db . L’amministratore utente è stato creato nel database di autenticazione dell’amministratore, l’utente non esiste nel database di autenticazione some_db .

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

Ora sei autenticato come dbOwner sul database some_db . Quindi ora se vuoi leggere / scrivere / fare cose direttamente verso il database some_db puoi 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. 

Ulteriori informazioni sui ruoli: https://docs.mongodb.com/manual/reference/built-in-roles/

Se desideri rendere utenti aggiuntivi che non sono amministratori degli utenti e che sono solo utenti normali continua a leggere qui sotto.

6) Creare un utente normale. Questo utente verrà creato nel database di autenticazione some_db in basso.

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

7) Uscire dalla shell mongo, riconnettersi, autenticarsi come utente.

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

Ecco un codice javascript per aggiungere utenti.

  1. Inizia mongod con --auth = true

  2. Accedi al database di amministrazione dalla shell di mongo e passa il file javascript.

    mongo admin “Filename.js”

    “Filename.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. Ora l’aggiunta dell’utente è completa, possiamo verificare l’accesso al database dalla shell mongo

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

Modifica il file delle impostazioni di mongo;

 sudo nano /etc/mongod.conf 

Aggiungi la linea:

 security.authorization : enabled 

Riavvia il servizio

 sudo service mongod restart 

Saluti

Per prima cosa esegui mongoDB sul terminale usando

 mongod 

ora esegui mongo shell usa i seguenti comandi

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

Riavvia l’istanza MongoDB con il controllo degli accessi.

 mongod --auth 

Ora autenticati dalla riga di comando usando

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

L’ho letto da

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

Dovrai passare al database su cui vuoi che sia l’utente (non l’amministratore db) …

use mydatabase

Vedi questo post per ulteriore aiuto … http://learnmongo.com/posts/quick-tip-mongodb-users/

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

Questi passaggi hanno funzionato su di me:

  1. scrivi mongod –port 27017 su cmd
  2. quindi connettiti alla shell mongo: mongo –port 27017
  3. creare l’amministratore utente: utilizzare admin db.createUser ({utente: “myUserAdmin”, pwd: “abc123”, ruoli: [{ruolo: “userAdminAnyDatabase”, db: “admin”}]})
  4. scolbind la shell mongo
  5. riavviare il mongodb: mongod –auth –port 27017
  6. avviare la shell mongo: mongo –port 27017 -u “myUserAdmin” -p “abc123” –authenticationDatabase “admin”
  7. Per autenticare dopo aver effettuato la connessione, collega la shell mongo al mongod: mongo –port 27017
  8. passare al database di autenticazione: utilizzare admin db.auth (“myUserAdmin”, “abc123”

dopo aver creato un nuovo utente, si prega di non dimenticare di grant authorization di read/write/root all’utente. puoi provare il

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

La migliore pratica per connettersi a mongoDB come segue:

  1. Dopo l’installazione iniziale,

    use admin

  2. Quindi esegui il seguente script per creare un utente amministratore

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

il seguente script creerà l’utente amministratore per il DB.

  1. accedere a db.admin utilizzando

    mongo -u YourUserName -p YourPassword admin

  2. Dopo l’accesso, è ansible creare il numero N del database con le stesse credenziali di amministratore o diverse ripetendo l’1 a 3.

Questo ti permette di creare diversi utenti e password per la diversa collezione che hai creato in MongoDB