针对docker中的mongo容器增加鉴权
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")
1
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. 参考
2) mongodb之权限管理——用户的增删改查和内置角色说明
针对docker中的mongo容器增加鉴权的更多相关文章
- 在Docker中创建Mongo容器的后续设置
后续设置包括设置数据库管理员账号密码.创建业务数据库以及设置账户密码 需要注意的是,在创建Mongo容器后,需要映射到本机 以管理员身份打开powershell 先切换到mongdo bash # ` ...
- docker中,将容器中的文件拷贝到宿主机上
需求说明: 今天在做docker修改配置文件的问题,一个容器要使用另外容器的一个配置文件,但是在宿主机上没有, 就考虑将容器中的文件拷贝到宿主机上,在此记录下操作过程. 操作过程: 1.通过docke ...
- CentOS7下Docker中构建Jenkins容器
背景 在CentOS搭建Docker完成后,我们需要在Docker中搭建Jenkins用来实现工程自动部署. 安装前提 jdk已安装,安装目录如:usr/java/jdk1.8.0_161 maven ...
- 【docker】关于docker 中 镜像、容器的关系理解
例如,使用docker 拉取下来一个要用的镜像es docker pull elasticsearch:5.6.9 此时es的镜像存在与服务器上 docker images 对于你运行镜像为一个容器的 ...
- 开发机直连 Docker 中的 Redis 容器小教程
在笔者日常开发中,都是把redis装在windows系统中.虽然可以通过RedisDesktopManager等客户端工具连接操作redis,但是还是觉得low了一些.因为作为程序员,我可能更想在Li ...
- Docker系列教程02-MongoDB默认开启鉴权
说明,我这里使用的是compose的版本的1.17.0格式是3,但是这和compose版本无关,你只需要添加MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_P ...
- docker中使用nginx容器代理其他容器
Nginx is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, ...
- 关于在docker中配置elasticsearch容器的方法
一.关于docker的安装,注意几点 1.如果系统是Win10家庭版,是没有Hyper-V的,所以无法安装docker(运行docker安装包会报错),为此docker官网提供的解决方法是安装dock ...
- CentOS7下Docker中构建可以自动发布到项目的Tomcat容器
步骤 下载镜像 搜索相应的镜像文件:docker search 'tomcat' 如下 下载镜像:docker pull tomcat:7,如下图 PS:后面的数字代表tomcat的版本,可以自己选择 ...
- 关于docker中容器可以Ping通外网,真机无法Ping通容器的问题
首先我们要知道整体的框架结构,docker是我们安装在centos7上的,而centos7是安装在vmware上.其中docker中还有若干容器运行. 整体框架图如下: 我们将它分为两部分,一部分是d ...
随机推荐
- 图扑物联 | WEB组态可视化软件
01什么是组态? 组态的概念来自于20世纪70年代中期出现的第一代集散控制系统(Distributed Control System),可理解为"配置"."设置" ...
- 火山引擎ByteHouse基于云原生架构的实时导入探索与实践
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着企业降本增效.智能化数据决策需求的增强,传统的商业数据库已经难以满足和响应快速增长的业务诉求.在此背景下,云原 ...
- 关于`dial unix /var/run/docker.sock: connect: permission denied`的处理方法笔记
之前遇到的一个问题,使用非root用户时操作docker提示无权限,在查阅了一些文章之后自己又摸索出了一些更方便的方法,顺手记录下来. 一.问题发现 根据报错信息dial unix /var/run/ ...
- 【C#】【IO】【实例】统计多个文件夹下的图片
因工作需要繁琐的进行同一目录多个文件夹下的图片统计,便使用代码来解决. 需求:统计的是多少个文件夹包含了图片,并非是统计有多少张图. 我们先用Python来创建一个现场环境(巩固巩固py知识): 1 ...
- (数据科学学习手札156)地图可视化神器kepler.gl 3.0版本发布
本文已收录至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,地图可视化神器kepler.gl终于带 ...
- libGDX游戏开发之文理打包(八)
libGDX游戏开发之文理打包(八) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网和googl ...
- react 事件函数中 this 绑定问题
在使用类方式创建组件时,类中定义一个函数,并且绑定到元素的点击事件上,此时这个函数中this指向并不是当前这个组件. 组件代码如下: class App extends React.Component ...
- apex的安装过程及问题解决(ModuleNotFoundError:No module named 'packaging')
最近在复现代码时遇到了如下问题,在此记录一下问题的解决过程: 步骤一 git clone https://github.com/NVIDIA/apex.git 步骤二 cd apex 步骤三 pip ...
- GaussDB技术解读系列:高级压缩之OLTP表压缩
本文分享自华为云社区<DTCC 2023专家解读 | GaussDB技术解读系列:高级压缩之OLTP表压缩>,作者:GaussDB 数据库 . 8月16日,第14届中国数据库技术大会(DT ...
- Copy攻城狮辛酸史:含泪“一分钟”跑通MindSpore的LeNet模型
摘要:一个Cope 攻城狮用切身实例告诉你: Cope代码体验一时爽,BUG修改花半天. 前言:此文为r0.7-beta的操作实践,为什么我的眼里常含泪水,因为我对踩坑这件事爱得深沉.谨以此文献给和我 ...