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. Android WebView 缓存处理

    加载html时,会在data/应用下生成database和cache两个文件夹:请求的url存在webviewcache.db下面,url的内容保存在webviewCache下面, Webview的两 ...

  2. ASR项目实战-数据

    使用机器学习方法来训练模型,使用训练得到的模型来预测语音数据,进而得到识别的结果文本,这是实现语音识别产品的一般思路. 本文着重介绍通用语音识别产品对于数据的诉求. 对数据的要求 训练集 相关要求,如 ...

  3. 火爆全网的Log4j 漏洞复现GetShell

    目录: 一.搭建环境 1. 首先拉一个docker镜像 2. 然后启动环境 二.获取shell 首先,试验一下DNSLog 1. 准备JNDI注入工具 下载 进入目录打包成jar包 2. 利用 生成p ...

  4. linux文件和文件夹的筛选、查找及用户和组管理命令

    1.列出当前系统上所有已经登陆的用户的用户名, 注意:同一个用户登录多次,则只显示一次即可. 查看系统用户的命令为: (1)getent passwd 查看系统上的所有用户信息 (2)w 查看登录用户 ...

  5. 《语义增强可编程知识图谱SPG》白皮书

    语义増强可编程图谱框架:新一代知识图谱语义框架/引擎.SPG+LLM双驱架构及应用相关进展和应用.<语义增强可编程知识图谱SPG>白皮书 v1.0.pdf: https://url39.c ...

  6. 共筑数字化未来,金山办公携手华为云完成文档中心和GaussDB适配

    摘要:金山办公携手华为云完成金山办公自主研发的"WPS文档中心系统"与华为云GaussDB相互兼容性测试认证,并获得华为云授予的<技术认证书>. 本文分享自华为云社区& ...

  7. 云图说|将源端MongoDB业务搬迁至华为云DDS的几种方式

    摘要:华为云文档数据库服务DDS能帮您在业务需要时,快速便捷的搬迁源端MongoDB业务上云. 如果您因业务调整或需要使用华为云文档数据库DDS特性功能时,可以通过数据迁移功能将原有MongoDB数据 ...

  8. 实践GoF的设计模式:访问者模式

    摘要:访问者模式的目的是,解耦数据结构和算法,使得系统能够在不改变现有代码结构的基础上,为对象新增一种新的操作. 本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:访问者模式> ...

  9. ModelArts的雪中送炭,让我拿下CCF BDCI华为Severless工作负载预测亚军

    摘要: 中国计算机学会大数据与计算智能大赛(CCF BDCI)华为Severless工作负载预测亚军方案和ModelArts使用体验分享 本文分享自华为云社区<免费薅ModelArts算力资源- ...

  10. 用IoT放羊养牛,不出门也能知道它们的动向

    摘要:羊圈里几只小羊羔有点无精打采,"叮",牧民拉索划开手机,第一时间得知了这个情况.草场上有只牛一直到天黑都没回来,拉索再次通过手机软件,很快定位到那只独自流落在外的牛儿-- 本 ...