MongDB与Docker身份validation
我已经build立了一个使用MongoDB Image的docker。 默认情况下,它没有设置密码。 我做了一个用户,并分配了angular色,这非常好。 但问题是,连接仍然可能没有身份validation。
-
连接authentication>正确的用户名,正确的密码 – >连接
-
连接身份validation>正确的用户名,错误的密码 – > CONNECTION FAILED
-
没有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启用,那么你将无法连接没有凭据。
-
运行身份validation选项添加授权
docker run --name some-mongo -d mongo --auth
-
你应该创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的
加上使用说明也很容易理解。