具有Docker身份验证的MongDB

时间:2017-02-13 09:59:24

标签: mongodb authentication docker

我已经使用MongoDB Image设置了一个docker。默认情况下,它没有设置密码。我创建了一个用户并为其分配了角色,这非常有效。但问题是,无需身份验证即可实现连接。

  1. 使用身份验证连接>正确的用户名,正确的密码 - > CONNECTED

  2. 使用身份验证连接>正确的用户名,错误的密码 - >连接失败

  3. 无身份验证的连接> CONNECTED

  4. 我希望第3点停止工作。

3 个答案:

答案 0 :(得分:4)

步骤: -

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" }})

这将在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实例


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

我假设你可能没有启用--auth启动docker容器。一旦开始启用--auth,那么没有凭据就无法连接。

答案 1 :(得分: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" } ] });

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

答案 2 :(得分:0)

所以最后我开始了解一个非常容易安全的mongodb图像版本。

tutumcloud/mongodb

此外,使用说明也很容易理解。