2017-02-13 5 views
1

Я установил докер с изображением MongoDB. По умолчанию он не настроен для пароля. Я сделал пользователя и назначил ему роли, которые отлично работают. Но проблема в том, что соединение по-прежнему возможно без аутентификации.MongDB с аутентификацией докеров

  1. Connect с Authentication> Right Псевдоним, Right Password -> CONNECTED

  2. Connect с аутентификацией> Right Имя пользователя, Неправильный пароль -> CONNECTION FAILED

  3. Подключение без проверки подлинности> Подключенные

Я хочу, чтобы 3-я точка перестала работать.

ответ

0

И в конце концов я пришел знать о гораздо простой в безопасной версии MongoDB изображения.

tutumcloud/mongodb

Plus описание использования также очень легко понять.

+0

Можете ли вы сделать это как принятый ответ на свой вопрос, или еще не полностью удовлетворены? – Wrench

2

шаги: -

1) Запуск экземпляра Docker без аутентификации

 

    $ docker run --name container-name -d -p 27017:27017 -v ~/mongodb:/data/db mongo 

2) Создайте главного пользователя администратора с ролями администратора

 

    $ mongo --port 27017 
    $ use admin; 
    $ db.createUser({user: "adminUserName",pwd: "adminPassword",roles: [{ role: "userAdminAnyDatabase", db: "admin" }}) 

Это создаст пользователя в базе данных администратора с ролями «userAdminAnyDatabase». Это похоже на суперпользователя.

3) Создать пользователя для конкретной базы данных

 

    $ use 
    $ db.createUser({user: "dev-read-username",pwd: "dev-read-password",roles:["read"]}) 
    -- User with "read" role 

    $ db.createUser({user: "dev-write-username",pwd: "dev-write-password",roles:["readWrite"]}) 
    -- User with "readWrite" role 

Для списка ролей, доступных или как создать пользовательские роли, пожалуйста, проверьте https://docs.mongodb.com/manual/reference/built-in-roles/

4) Снимите контейнер Docker

 

    $ docker ps -a 
    $ docker stop container_id 
    $ docker rm container_id 

5) Запустите экземпляр докера с проверкой подлинности

 

    $ docker run --name container-name -d -p 27017:27017 -v ~/mongodb:/data/db mongo --auth 

Предполагаете, что вы, возможно, не запустили контейнер докера, с включенным параметром --auth. Когда вы начнете с --auth enabled, то вы не сможете подключиться без учетных данных.

+0

У меня было развернуто с --auth enabled – AqibBangash

+0

@AqibBangash Странно, что он не работал с --auth включен. Я отредактировал свой ответ с подробными инструкциями. Можете ли вы перекрестно проверить один раз и посмотреть, не пропустили ли вы что-нибудь, только что разоблачили. –

1
  1. Run с опцией Идента добавить авторизации docker run --name some-mongo -d mongo --auth

  2. Вы должны создать пользователь с правами администратора. Вы можете проверить, если пользователь с правами администратора существует с помощью db.getSiblingDB('admin').system.users.find() или создать как: db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [{ role: "userAdminAnyDatabase", db: "admin" } ] });

Источник: https://hub.docker.com/r/library/mongo/

+0

@AkshayMehta был быстрее меня :) – Ludovic

+0

Я использовал его с помощью --auth enabled plus, я сделал пользователя admin. Тем не менее он был доступен без авторизации. – AqibBangash

+0

Официальный докер-контейнер? – Ludovic