MongDB与Docker身份validation

我已经build立了一个使用MongoDB Image的docker。 默认情况下,它没有设置密码。 我做了一个用户,并分配了angular色,这非常好。 但问题是,连接仍然可能没有身份validation。

  1. 连接authentication>正确的用户名,正确的密码 – >连接

  2. 连接身份validation>正确的用户名,错误的密码 – > CONNECTION FAILED

  3. 没有authentication的连接>连接

我想要第三点停止工作。

脚步:-

1)在没有authentication的情况下运行一个docker实例


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

2)使用pipe理员angular色创build主pipe理员用户


     $ mongo --port 27017
     $使用pipe理员;
     $ db.createUser({user:“adminUserName”,pwd:“adminPassword”,roles:[{role:“userAdminAnyDatabase”,db:“admin”}})

这将在pipe理数据库中创buildangular色为“userAdminAnyDatabase”的用户。 这就像一个超级用户。

3)为特定数据库创build用户


     $使用 
     $ db.createUser({user:“dev-read-username”,pwd:“dev-read-password”,roles:[“read”]})  
     - 具有“读取”angular色的用户

     $ db.createUser({user:“dev-write-username”,pwd:“dev-write-password”,roles:[“readWrite”]}) 
     - 具有“读写”angular色的用户

有关可用angular色列表或如何创build自定义angular色,请查看https://docs.mongodb.com/manual/reference/built-in-roles/

4)卸下docker箱


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

5)启用身份validation运行docker实例


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

我假设你可能没有启动docker容器,启用了–auth。 一旦你启动–auth启用,那么你将无法连接没有凭据。

  1. 运行身份validation选项添加授权docker run --name some-mongo -d mongo --auth

  2. 你应该创build一个pipe理员用户 。 你可以使用db.getSiblingDB('admin').system.users.find()来检查pipe理员用户是否存在,或者创build一个类似于: db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [{ role: "userAdminAnyDatabase", db: "admin" } ] });

来源: https : //hub.docker.com/r/library/mongo/

所以最后我开始了解一个非常容易保护的mongodb镜像版本。

tutumcloud / MongoDB的

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