Как защитить 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
.
12 ответов
вам нужно, чтобы начать mongod
с --auth
опция после настройки пользователя.
С сайта MongoDB:
запустите базу данных (процесс mongod) с помощью включить безопасность. Вы должны либо добавить пользователя в БД администратора, прежде чем запуск сервера с помощью
--auth
, или добавьте первого пользователя из интерфейс localhost..
во-первых, не комментировать строку, которая начинается с #auth=true
в файле конфигурации mongod (путь по умолчанию /etc/mongo.conf
). Это позволит аутентификацию для mongodb.
затем перезапустите mongodb:sudo service mongod restart
этот ответ для Mongo 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 и запустите его снова с помощью access control.
mongod --auth --dbpath /data/db
5) Подключение и аутентификация в качестве администратора пользователя к admin
база данных аутентификации, а не к some_db
база данных проверки подлинности. администратор пользователя был создан в admin
база данных аутентификации, пользователь не существует в some_db
база данных проверки подлинности.
use admin
db.auth("myDbOwner", "abc123")
теперь вы аутентифицированы как dbOwner
на
вот код javascript для добавления пользователей.
старт
mongod
С--auth = true
-
доступ к базе данных администратора из оболочки mongo и передать файл javascript.
Mongo admin "имя файла.js"
" имя файла.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 ");
Теперь добавление пользователя завершено, мы можем проверить доступ к базе данных из 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" ]
}
)
эти шаги сработали на мне:
- напишите mongod --port 27017 на cmd
- затем подключиться к Mongo shell: mongo -- порт 27017
- создать пользователя admin : использовать админ децибел.createUser( { пользователь: "myUserAdmin", фрд: "абв123", роли: [ { роль: "userAdminAnyDatabase", db: "admin" } ] } )
- отсоединить оболочку mongo
- перезапустите mongodb: mongod --auth --port 27017
- запустить оболочку mongo : монго-порт 27017 -у "myUserAdmin" - p "abc123" --authenticationDatabase"admin"
- для аутентификации после подключения подключите оболочку mongo к mongod: монго-порт 27017
- переключиться на базу данных аутентификации : использовать админ децибел.auth ("myUserAdmin"," abc123"
после создания нового пользователя, пожалуйста, не забудьте grant
read/write/root
разрешение пользователю. вы можете попробовать
cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])
лучшая практика для подключения к mongoDB следующим образом:
-
после начальной установки,
use admin
-
затем запустите следующий скрипт для создания 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 для БД.
-
войти в БД.admin с помощью
mongo -u YourUserName -p YourPassword admin
после входа в систему, вы можно создать N номеров базы данных с одинаковыми или разными учетными данными администратора, повторяя от 1 до 3.
Это позволяет создать другой пользователь и пароль для другой коллекции, которую вы создаете в MongoDB