在 Dockerized MongoDB 上进行身份验证

在 Dockerized MongoDB 上进行身份验证

我正在使用官方的 mongodb:2.6 docker 镜像。我正在尝试弄清楚如何使用user:password模式启用直接身份验证。

如何指定 mongo 必须在身份验证下运行?

我该如何创建每一个user:password

答案1

MongoDB 手册包含以下教程启用身份验证将用户添加到数据库

假设您正在运行一个名为的独立图像,您可以通过使用类似下面的命令mongo行启动图像来传递参数以启用身份验证:docker

 docker run --name mongod -d mongo --auth

启用和配置访问控制的其余步骤并不特定于 Docker。mongod使用--auth参数启动后,您需要创建一个管理员用户,然后创建所需的任何其他用户。

MongoDB 也值得一看安全检查表出于其他安全考虑。

注意:MongoDB 2.6 已达到生命尽头2016 年 10 月。我强烈建议升级到受支持的版本(例如最新的 3.2.x 或 3.4.x)以获得继续支持。

答案2

  1. 在你的服务器上运行 mongo docker 实例

    docker run -d -p 27017:27017 -v ~/dataMongo:/data/db mongo
    
  2. 在正在运行的 docker 实例上打开 bash。

    docker ps
    

    容器 IDIMAGE 命令创建状态端口名称

    b07599e429fb mongo “docker-entrypoint...” 35 分钟前 启动 35 分钟 0.0.0.0:27017->27017/tcp musing_stallman

    docker exec -it b07599e429fb bash
    root@b07599e429fb:/#
    
  3. 通过输入 mongo 进入 mongo shell。

    root@b07599e429fb:/# mongo
    
  4. 在这个例子中,我将设置一个名为 ian 的用户,并授予该用户对 cool_db 数据库的读写访问权限。

    > use cool_db
    
    > db.createUser({
        user: 'ian',
        pwd: 'secretPassword',
        roles: [{ role: 'readWrite', db:'cool_db'}]
    })
    
  5. 退出 mongod shell 和 bash。

  6. 现在运行启用了 auth 的 mongo docker。

    docker run -d -p 27017:27017 -v ~/dataMongo:/data/db mongo mongod --auth
    
  7. 我能够使用以下命令从本地 Windows 笔记本电脑连接到在 Google Cloud 服务器上运行的实例。

    mongo <ip>:27017/cool_db -u ian -p secretPassword
    
  8. 您可以提交容器实例的映像。这将存储对其文件系统(包括 /data/db 目录)所做的所有更改。您可以在 docker-engine 运行的任何地方运行此映像。

    docker commit mongodb mongodb-backup
    

    参考:https://blog.madisonhub.org/setting-up-a-mongodb-server-with-auth-on-docker/

该答案基于我在 stackoverflow 上的回答:https://stackoverflow.com/a/46645243/3877642

相关内容