Как защитить MongoDB с помощью имени пользователя и пароля



Я хочу настроить аутентификацию имени пользователя и пароля для моего экземпляра MongoDB, чтобы любой удаленный доступ запрашивал имя пользователя и пароль. Я попробовал учебник с сайта MongoDB и сделал следующее:



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


после этого, я вышел и снова побежал монго. И мне не нужен пароль для доступа к нему. Даже если я подключусь к базе данных удаленно, мне не будет предложено ввести имя пользователя и пароль.





обновление вот решение, которое я закончил с помощью



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


имя пользователя и пароль будут работать аналогично для mongodump и mongoexport.

838   12  

12 ответов:

вы должны начать mongod с --auth опция после настройки пользователя.

С сайта MongoDB:

запустите базу данных (процесс mongod) с помощью включить безопасность. Вы должны либо добавить пользователя в базу данных администратора, прежде чем запуск сервера с помощью --auth, или добавить первого пользователя из списка интерфейс localhost..

Аутентификация MongoDB

во-первых, не комментируйте строку, которая начинается с #auth=true в файле конфигурации mongod (путь по умолчанию /etc/mongo.conf). Это позволит включить аутентификацию для mongodb.

затем перезапустите mongodb:sudo service mongod restart

этот ответ для Монго 3.2.1 ссылка

Терминал 1:

$ mongod --auth

Терминал 2:

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

если вы хотите добавить без ролей (по желанию):

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

чтобы проверить подлинность или нет:

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

он должен дать вам:

1

другое :

Error: Authentication failed.
0

Вау так много сложных/запутанных ответы здесь.

это по состоянию на В3.4.

короткий ответ.

1) Запустите MongoDB без контроля доступа.

mongod --dbpath /data/db

2) Подключение к экземпляру.

mongo

3) Создайте пользователя.

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

4) остановите экземпляр MongoDB и запустите его снова с контролем доступа.

mongod --auth --dbpath /data/db

5) Подключение и аутентификация в качестве пользователь.

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

длинный ответ: прочтите это, если вы хотите правильно понять.

это действительно просто. Я заглушу следующее https://docs.mongodb.com/manual/tutorial/enable-authentication/

если вы хотите узнать больше о том, что на самом деле делают роли, Прочитайте больше здесь:https://docs.mongodb.com/manual/reference/built-in-roles/

1) Запустите MongoDB без контроля доступа.

mongod --dbpath /data/db

2) Подключение к экземпляру.

mongo

3) Создайте администратора пользователя. следующее создает администратора пользователя в admin база данных проверки подлинности. Пользователь-это dbOwner на some_db база данных, а не над admin база данных, это важно помнить.

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

или если вы хотите создать администратора, который является администратором над любой базой данных:

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

4) остановите экземпляр MongoDB и запустите его снова с контролем доступа.

mongod --auth --dbpath /data/db

5) Подключение и аутентификация в качестве администратора пользователя к admin аутентификация базы данных, а не в сторону some_db база данных проверки подлинности. администратор пользователя был создан в admin аутентификация базы данных, пользователь не существует в some_db база данных проверки подлинности.

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

теперь вы аутентифицируетесь как dbOwner на

вот код javascript для добавления пользователей.

  1. Start mongod С --auth = true

  2. доступ к базе данных администратора из оболочки mongo и передать файл javascript.

    mongo admin " имя файла.ОАО"

    " имя файла.ОАО"

    // 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. Теперь добавление пользователя завершено, мы можем проверить доступ к базе данных из Mongo shell

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

редактировать файл настроек mongo;

sudo nano /etc/mongod.conf

добавить строку:

security.authorization : enabled

перезапустить службу

sudo service mongod restart

в отношении

сначала запустите mongoDB на терминале с помощью

mongod

теперь запустите Mongo shell используйте следующие команды

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

повторно запустите экземпляр MongoDB с контролем доступа.

mongod --auth

сейчас, авторизовавшись из командной строки с помощью

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

Я прочитал его от

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

вам нужно будет переключиться на базу данных, в которой вы хотите, чтобы пользователь (а не администратор БД) ...

use mydatabase

см. Этот пост для получения дополнительной помощи ... http://learnmongo.com/posts/quick-tip-mongodb-users/

создание пользователя с паролем для конкретной базы данных для обеспечения доступа к базе данных :

use dbName

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

эти шаги работали на меня:

  1. напишите mongod -- port 27017 на cmd
  2. затем подключитесь к оболочке mongo: mongo -- port 27017
  3. создать пользователя admin : использовать админ децибел.createUser( { пользователь: "myUserAdmin", pwd: "abc123", роли: [ { роль: "userAdminAnyDatabase", db: "admin" } ] } )
  4. отключить монго оболочки
  5. перезапустите mongodb : mongod --auth --port 27017
  6. запустить монго оболочки : монго-порт 27017 -у "myUserAdmin" - p "abc123" --authenticationDatabase "admin"
  7. для проверки подлинности при подключении, подключите монго оболочки в команду mongod: монго-порт 27017
  8. переключиться на базу данных аутентификации : использовать админ децибел.auth ("myUserAdmin"," abc123"

после создания нового пользователя, пожалуйста, не забудьте grantread/write/root разрешения для пользователя. вы можете попробовать

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

лучшая практика для подключения к mongoDB следующим образом:

  1. после начальной установки,

    use admin

  2. затем запустите следующий скрипт для создания admin user

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

следующий скрипт создаст пользователя admin для БД.

  1. войти в БД.admin с помощью

    mongo -u YourUserName -p YourPassword admin

  2. после входа в систему, вы можно создать N номер базы данных с одинаковыми учетными данными администратора или другой, повторяя от 1 до 3.

Это позволяет вам создать другого пользователя и пароль для другой коллекции, которую вы создаете в MongoDB

Comments

    Ничего не найдено.