Отключить анонимный доступ к 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

Чтобы полностью отключить анонимную аутентификацию, вам необходимо убедиться, что вы:

1) Добавить административного пользователя в базу данных admin.

Пока не создается первый пользователь 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