2017-02-13 39 views
1

我已經設置了一個使用MongoDB Image的docker。默認情況下,它沒有設置密碼。我做了一個用戶並分配了它的角色,這非常好。但問題是,沒有身份驗證,連接仍然是可能的。使用Docker身份驗證的MongDB

  1. 連接與認證>正確的用戶名,正確的密碼 - >連

  2. 連接與認證>正確的用戶名,密碼錯誤 - >連接失敗

  3. 連接不經認證>連

我想讓第三點停止工作。

回答

0

所以最後我來了解一個更易於安全版本的MongoDB形象。

tutumcloud/mongodb

加上使用說明也很容易理解。

+0

你能以此爲接受的回答你的問題的話,或者還沒有完全滿意嗎? – Wrench

2

步驟: -

1)運行碼頭工人,例如無需認證

 

    $ 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 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啓用,那麼你將無法連接沒有憑據。

+0

我已經部署了--auth enabled – AqibBangash

+0

@AqibBangash奇怪它沒有與--auth啓用工作。我已經用詳細的步驟編輯了我的答案。你可以交叉驗證一次,看看你是否錯過了任何事情。 –

1
  1. 與身份驗證選項運行添加授權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啓用加我做了一個管理員用戶。仍然可以不經過認證即可訪問。 – AqibBangash

+0

官方碼頭集裝箱? – Ludovic

相關問題