1. 背景

业务方的服务器经安全检查,发现以docker容器启动的mongo未增加鉴权的漏洞,随优化之

2. 配置

mongo以docker compose方式启动,镜像的版本号为4.2.6,docker-compose.yml配置文件内容如下:

version: '2'
services:
mongodb:
image: mongo:latest
container_name: test_mongodb
volumes:
- "/data/mongodb/data/configdb/:/data/configdb"
- "/data/mongodb/data/db/:/data/db"
restart: always
ports:
- "27128:27017" 

3. 增加鉴权

3.1 docker-compose.yml文件新增如下红色部分,即默认以鉴权方式启动mongo

version: '2'
services:
mongodb:
image: mongo:latest
container_name: test_mongodb
volumes:
- "/data/mongodb/data/configdb/:/data/configdb"
- "/data/mongodb/data/db/:/data/db"
restart: always
ports:
- "27128:27017"
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=123456 

3.2 以docker compose方式启动mongo容器

$ docker-compose up 

3.3 新建shell窗口,进入容器

# 进入容器
$ docker exec -it mongo_container_id bash
# 进入mongo服务
$ mongo 

3.4 新建mongo用户并分配权限

> use admin
> db.createUser({"user":"mongo_user", "pwd":"123456", roles: [{"role":"root", db:"admin"}]}) 

3.5 增加用户后,即可在命令行或客户端中进行鉴权

# 返回1表示鉴权成功
> db.auth("mongo_user", "123456")

4. 业务异常解决

当基于spring boot服务端的业务启动并连接mongo时,报如下异常

Caused by: com.mongodb.MongoQueryException: Query failed with error 13 and error message 'not authorized on db to execute command {find: "system.indexes" ....}'

该异常表示创建的用户没有系统索引的操作权限,此时更新用户权限即可,具体命令如下:

> use admin
> db.auth("mongo_user", "123456")
> db.grantRolesToUser( "mongo_user", [ { role: "__system", db: "admin"}, {"role": "root", "db":"admin"} ] )
# 再次查看该用户权限信息
> db.system.users.find({"user":"mongo_user"}).pretty() 

5. 参考

1) MONGODB用户、角色和权限管理

2) mongodb之权限管理——用户的增删改查和内置角色说明

针对docker中的mongo容器增加鉴权的更多相关文章

  1. 在Docker中创建Mongo容器的后续设置

    后续设置包括设置数据库管理员账号密码.创建业务数据库以及设置账户密码 需要注意的是,在创建Mongo容器后,需要映射到本机 以管理员身份打开powershell 先切换到mongdo bash # ` ...

  2. docker中,将容器中的文件拷贝到宿主机上

    需求说明: 今天在做docker修改配置文件的问题,一个容器要使用另外容器的一个配置文件,但是在宿主机上没有, 就考虑将容器中的文件拷贝到宿主机上,在此记录下操作过程. 操作过程: 1.通过docke ...

  3. CentOS7下Docker中构建Jenkins容器

    背景 在CentOS搭建Docker完成后,我们需要在Docker中搭建Jenkins用来实现工程自动部署. 安装前提 jdk已安装,安装目录如:usr/java/jdk1.8.0_161 maven ...

  4. 【docker】关于docker 中 镜像、容器的关系理解

    例如,使用docker 拉取下来一个要用的镜像es docker pull elasticsearch:5.6.9 此时es的镜像存在与服务器上 docker images 对于你运行镜像为一个容器的 ...

  5. 开发机直连 Docker 中的 Redis 容器小教程

    在笔者日常开发中,都是把redis装在windows系统中.虽然可以通过RedisDesktopManager等客户端工具连接操作redis,但是还是觉得low了一些.因为作为程序员,我可能更想在Li ...

  6. Docker系列教程02-MongoDB默认开启鉴权

    说明,我这里使用的是compose的版本的1.17.0格式是3,但是这和compose版本无关,你只需要添加MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_P ...

  7. docker中使用nginx容器代理其他容器

    Nginx is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, ...

  8. 关于在docker中配置elasticsearch容器的方法

    一.关于docker的安装,注意几点 1.如果系统是Win10家庭版,是没有Hyper-V的,所以无法安装docker(运行docker安装包会报错),为此docker官网提供的解决方法是安装dock ...

  9. CentOS7下Docker中构建可以自动发布到项目的Tomcat容器

    步骤 下载镜像 搜索相应的镜像文件:docker search 'tomcat' 如下 下载镜像:docker pull tomcat:7,如下图 PS:后面的数字代表tomcat的版本,可以自己选择 ...

  10. 关于docker中容器可以Ping通外网,真机无法Ping通容器的问题

    首先我们要知道整体的框架结构,docker是我们安装在centos7上的,而centos7是安装在vmware上.其中docker中还有若干容器运行. 整体框架图如下: 我们将它分为两部分,一部分是d ...

随机推荐

  1. 从0开始学微信逆向开发(android版)——第一栏

    首先给大家普及一下啥叫微信逆向开发,以及微信逆向开发能做什么: 场景1:小明是做微商的,他每天需要加很多很多的好友.然后他会通过微信的各种渠道去添加好友,比如(附近的人.摇一摇.漂流瓶.手机号搜索等) ...

  2. rust angular 自签名证书 wss

    项目中采用 wss 来建立的前后端连接, 但是并没有用到认证的证书, 所以自己用 openssl 生成了私钥, 自签名证书来使用: 这里就不再赘述 Wss 连接过程, 直接上手操作: 1. 生成私钥, ...

  3. 【开源项目】轻量元数据管理解决方案——Marquez

    大家好,我是独孤风. 又到了本周的开源项目推荐.最近推荐的元数据管理项目很多,但是很多元数据管理平台的功能复杂难用. 那么有没有轻量一点的元数据管理项目呢? 今天为大家推荐的开源项目,就是一个轻量级的 ...

  4. C++篇:第一章_变量和常量_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 注意:C++篇为本人手动将Word文档修改成Markdown格式(因为网上修改的 ...

  5. 记一次kubernetes获取internal Ip错误流程

    本文分享自华为云社区<记一次kubernetes获取internal Ip错误流程>,作者:张俭. 偶尔也回首一下处理的棘手问题吧.问题的现象是,通过kubernetes get node ...

  6. 华为云GaussDB支撑华为MetaERP系统全面替换

    摘要:目前MetaERP已经覆盖了华为公司100%的业务场景和80%的业务量. 本文分享自华为云社区<强渡大渡河!华为云GaussDB支撑华为MetaERP系统全面替换>,作者: 华为云头 ...

  7. Git工作流中常见的三种分支策略:GitFlow、GitHubFlow和GitLabFlow

    摘要:聊一聊Git中的工作流--分支策略. 本文分享自华为云社区<Git工作流中常见的三种分支策略:GitFlow.GitHubFlow以及GitLabFlow>,原文作者:敏捷的小智. ...

  8. 手把手带你做LiteOS的树莓派移植

    摘要:树莓派是英国的慈善组织"Raspberry Pi 基金会"开发的一款基于arm的微型电脑主板.本文介绍基于LiteOS的树莓派移植过程. 本文分享自华为云社区<2021 ...

  9. BitSail“拍了拍”你,并给你一份快速入门指南

    本 Quick Guide 面向 BitSail 新手入门使用人员,从源码编译.产物结构.如何提交作业.实机演示等多方面带领大家迅速入门 BitSail,从 0 到 1 了解并完成 BitSail 基 ...

  10. 火山引擎 DataTester:0 代码也能实施 A/B 测试的实验平台

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 近日,火山引擎 DataTester 对 A/B 实验"可视化编辑器"进行了升级,可视化编辑器功能让用 ...