Отключить анонимный доступ к MongoDB
Я установил MongoDB на Windows 2012 Server и запустил его на службе Windows.
Чтобы защитить его от анонимных входных данных, я выполнил следующие шаги, чтобы включить аутентификацию и отключить анонимный доступ.
Создайте учетные данные администратора, а затем Включите проверку подлинности
- Запустите экземпляр
mongod
или mongos
без параметров auth
или keyFile
.
- Создайте пользователя-администратора, как описано в
Create a User Administrator
.
- Запустите экземпляр
mongod
или mongos
с настройками auth
или keyFile
.
Согласно документации, запустив эту команду оболочки
db.auth(<username>,<password>)
он должен включить авторизацию и перезапустить экземпляр, чтобы отключить анонимный доступ.
Я не уверен, что такое третий шаг, я остановил службу MongoDB и перезапустил его.
Но я все равно могу сделать анонимный вход в систему удаленного MongoDB
Как отключить анонимный доступ к MongoDB?
Обновление
Выполнение db.serverCmdLineOpts()
/* 0 */
{
"argv" : [
"c:\\Program Files\\mongodb\\bin\\mongod.exe",
"--directoryperdb",
"--dbpath",
"c:\\mongodb\\data",
"--logpath",
"c:\\mongodb\\log\\mongodb_master.log",
"--logappend",
"--rest",
"--service"
],
"parsed" : {
"dbpath" : "c:\\mongodb\\data",
"directoryperdb" : true,
"logappend" : true,
"logpath" : "c:\\mongodb\\log\\mongodb_master.log",
"rest" : true,
"service" : true
},
"ok" : 1
}
Это означает, что у меня нет ключа auth. Как я могу установить там ключ авторизации?
Ответы
Ответ 1
Чтобы полностью отключить анонимную аутентификацию, вам необходимо убедиться, что вы:
Пока не создается первый пользователь admin, по умолчанию есть localhost bypass
, который позволяет вам анонимно регистрироваться и настраивать этого первого пользователя.
Чтобы проверить, что у вас есть хотя бы один пользователь в вашей базе данных администратора, запустите:
db.getSiblingDB('admin').system.users.find()
2) Запустите сервер MongoDB с включенным auth
(автономным сервером) или keyFile
(набор реплик).
Параметр keyFile
подразумевает auth
и используется для внутренней проверки подлинности между узлами набора реплик.
Чтобы проверить настройки конфигурации для работающего экземпляра MongoDB, вы можете ссылаться на вывод db.serverCmdLineOpts()
в оболочке mongo
.
Если параметры были изменены с по умолчанию, они должны отображаться в разделе parsed
вывода. То есть, один из них должен возвращать true:
db.serverCmdLineOpts().parsed.auth
db.serverCmdLineOpts().parsed.keyFile
Ответ 2
Включение авторизации в версии 2.6+ - в формате yml:
security:
authorization: enabled
Ответ 3
Я не уверен, что означает третий шаг
Следуя документации на Установить MongoDB в Windows...
При запуске MongoDB в качестве Windows вы должны указать два параметра Сервис: путь для выхода журнала (т.е. Путь к журналу) и конфигурация файл.
Это означает, что ваша команда mongod
(как определено в вашей службе Windows) должна выглядеть примерно так:
c:\mongodb\bin\mongod.exe --config c:\mongodb\mongod.cfg
В вашем файле конфигурации (независимо от того, что он вызывается, mongod.cfg в моем примере выше) вам понадобится следующая строка:
auth = true
Попробуйте это и посмотрите, работает ли он. Если ваше определение услуги не содержит параметр "--config", переустановите свою службу (следуя документу, на который я ссылался), чтобы добавить его.
Ответ 4
Вам нужно перезапустить экземпляр mongod с параметром командной строки --auth (запустите его в оболочке):
mongod --auth --port 27017 --dbpath /var/lib/mongodb
Имейте в виду, что путь к mongodb может быть другим, поэтому вы можете проверить значение dbPath
в файле конфигурации mongodb:
sudo vi /etc/mongod.conf