MongoDB社区版有三大主要安全措施,分别是安全认证、角色授权和TLS/SSL传输加密。当然除此之外,定期做数据库备份,也是很好的安全防范手段。另外,本文还将对一些提升MongoDB安全性的细节做阐述。其中部分安全措施,暂时不能细化操作步骤,以后实践中再补充。

开发期间做过多的安全配置,会影响开发效率,在必要时按部就班实施各种安全措施即可。

本文不关注分片情况下和MongoDB企业版的安全措施。

一、      安全认证

MongoDB启动时可以附带多种配置,其中-auth就是开启安全认证的参数,开启认证的同时需配置数据库管理员用户名和密码,命令示例:mongod --auth。

如上方式启动数据库后,通过mongo命令进入shell,通过以下步骤配置指定数据库账户:

  1. 分别运行use admin和db.createUser({user: "admin",pwd: "123456",roles: [ { role: " userAdminAnyDatabase", db: "admin" }]})
  2. 分别运行use admin和db.auth(‘admin’,’123456’),返回1,表示认证通过
  3. 分别运行usemydb和db.createUser({user: "qj",pwd: "12345678",roles: [ { role: "readWrite", db: "mydb" }]}),即可为数据库mydb创建账户qj。之后连接该数据库自然要先通过该认证。

二、    角色授权

如上,在创建数据库用户时可以直接指定当前账户的操作权限。这样就可以对每个用户可以执行的操作进行更细粒度的控制。使用基于角色的认证可以限制对数据库的访问,而不是所有的用户都是管理员。

其中几个常用命令简述如下,详情可查MongoDB官方文档:

db.createRole()该命令用于创建角色,并为该角色设定操作权限。MongoDB有默认配置的多种权限供选择,如:read,readWrite等。

db.grantRolesToUser()该命令既是将某角色(权限组)授权给指定用户。

三、      TLS/SSL传输加密

启用TLS/SSL可将应用和数据库之间的传输加密,避免窃听、篡改和“中间人”攻击。具体开启步骤,还需要更多时间调试。

四、      数据库备份

备份可以有效减小数据污染、清空等损失。

这里介绍通过定时执行MongoDB自带的mongodump命令对数据库备份的方法。特别说明一下mongodump得到的备份并非数据库的快照,在备份同时如果数据库在做增删改操作,可能出现数据备份不完整。对于一般应用,把备份生成时间设定在数据库操作较少时即可(比如凌晨3点),暂停应用也是一个办法。

具体操作如下(参考网文http://www.osyunwei.com/archives/8985.html):

1、创建Mongodb数据库备份目录

mkdir -p /home/backup/mongod_bak/mongod_bak_now

mkdir -p /home/backup/mongod_bak/mongod_bak_list

2、新建Mongodb数据库备份脚本

vi /home/crontab/mongod_bak.sh #新建文件,输入以下代码

#!/bin/sh

DUMP=/usr/local/mongodb/bin/mongodump #mongodump备份文件执行路径

OUT_DIR=/home/backup/mongod_bak/mongod_bak_now #临时备份目录

TAR_DIR=/home/backup/mongod_bak/mongod_bak_list #备份存放路径

DATE=`date +%Y_%m_%d` #获取当前系统时间

DB_USER=username #数据库账号

DB_PASS=123456 #数据库密码

DAYS=7 #DAYS=7代表删除7天前的备份,即只保留最近7天的备份

TAR_BAK="mongod_bak_$DATE.tar.gz" #最终保存的数据库备份文件名

cd $OUT_DIR

rm -rf $OUT_DIR/*

mkdir -p $OUT_DIR/$DATE

$DUMP -u $DB_USER -p $DB_PASS -o $OUT_DIR/$DATE #备份全部数据库

tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE #压缩为.tar.gz格式

find $TAR_DIR/ -mtime +$DAYS -delete #删除7天前的备份文件

:wq! #保存退出

系统运维 www.osyunwei.com 温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接

3、修改文件属性,使其可执行

chmod +x /home/crontab/mongod_bak.sh

4、修改/etc/crontab #添加计划任务

vi /etc/crontab #在下面添加

30 1 * * * root /home/crontab/mongod_bak.sh #表示每天凌晨1点30执行备份

5、重新启动crond使设置生效

/etc/rc.d/init.d/crond restart

chkconfig crond on #设为开机启动

service crond start #启动

每天在/home/backup/mongod_bak/mongod_bak_list目录下面可以看到mongod_bak_2015_02_28.tar.gz这样的压缩文件。

五、    限制网络接口

可以通过bind_ip参数,指定允许访问的IP。如:bind_ip=127.0.0.1,192.168.10.188。参数设置可以将允许数据库的地址访问限制为本地和192.168.10.188。

也可通过系统防火墙限制MongoDB的外部访问,使用VPN提供外部访问通道。

六、    禁用HTTP接口

默认情况下Mongodb在端口28017上运行http接口,以提供“主”状态页面。在生产环境下推荐不要使用此接口,最好禁止这个接口。使用"nohttpinterface"配置设置可以禁止这个http接口。(3.2以上版本已经移除HTTPinterface,无需使用该措施)。

nohttpinterface = true

七、    创建专用账户访问MongoDB文件

可以创建一个用户名为mongodb的系统账户,专用于MongoDB文件的访问。这种方式可以强化数据库系统自身安全,防止恶意、强制、以不安全的方式重启MongoDB。

八、    使用MongoDB企业版

使用MongoDB企业版,可以激活更多安全措施。

												

MongoDB安全使用指引的更多相关文章

  1. mongodb 用户指引

    维护人:陈权 一.mongodb install on linuxcurl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6 ...

  2. 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用

    在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各 ...

  3. MongoDB系列一(索引及C#如何操作MongoDB)

    索引总概况 db.test.ensureIndex({"username":1})//创建索引 db.test.ensureIndex({"username": ...

  4. MongoDB(索引及C#如何操作MongoDB)(转载)

    MongoDB(索引及C如何操作MongoDB) 索引总概况 db.test.ensureIndex({"username":1})//创建索引 db.test.ensureInd ...

  5. windows环境下Mongodb分片配置

    使用MongoDB的GridFS来存储文件,以前一直使用单个服务,分布式环境也一直没有配置成功,今天参考了几位大神的文章终于配置成功,再也不用担心文件存储的性能和安全啦.以下是自己部署的过程和示例,记 ...

  6. [转帖]Scanners-Box 指引

    作者:杨文链接:https://zhuanlan.zhihu.com/p/26534414来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 原文地址:We5ter/Sca ...

  7. MongoDB的Spring-data-mongodb集成(Win10 x64) 第一章 - MongoDB安装与简单命令

    这是MongoDB系列的第一章,作者将持续更新. 1.下载 https://www.mongodb.com/download-center#community 2.安装与配置 有关安装的任何困难请点击 ...

  8. windows系统,MongoDB开启用户验证登录的正确姿势

    MongoDB默认安装并没有开启用户名密码登录,这样太不安全了,百度出来的开启验证登录的文章,对初次使用MongoDB的小白太不友好了,总结下经验,自己写一份指引. 1,我的安装路径是C:\Progr ...

  9. Ubuntu下MongoDB的安装和使用

    本博文介绍了MongoDB,并详细指引读者在Ubuntu下MongoDB的安装和使用.本教程在Ubuntu14.04下测试通过.(2017.09.07) 安装MongoDB MongoDB安装很简单, ...

随机推荐

  1. 深入理解JavaScript,这一篇就够了

    前言 JavaScript 是我接触到的第二门编程语言,第一门是 C 语言.然后才是 C++.Java 还有其它一些什么.所以我对 JavaScript 是非常有感情的,毕竟使用它有十多年了.早就想写 ...

  2. Beta冲刺(5/7)

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(5/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 ppt制作中 数据集标注 接下来的计划 制作p ...

  3. Java面试题复习笔记(框架)

    1.什么是框架? 为解决一个开放性问题而设计的具有一定约束性的支撑结构,再次结构上可以根据具体问题扩展,安插更多的组成部分,从而更迅速和方便地构建完整解决问题的方案. 2.MVC模式? 用一种业务逻辑 ...

  4. 用什么方法给PDF添加页眉页脚

    我们所看到的书本中都会设置好有页眉页脚,那么电子书想要添加页眉页脚要怎么操作呢,用什么方法可以在PDF中添加页眉页脚呢,今天就为大家分享一下,如何在电子文件中添加页眉页脚,想知道的小伙伴们就一起来看看 ...

  5. c/c++/java如何访问数据库(优秀博文)

    (下面是c++)  https://www.cnblogs.com/47088845/p/5706496.html  https://www.cnblogs.com/shiyingzhi/p/7896 ...

  6. [DIV+CSS] set the screen capture Part 1 (div截取屏幕)

    使用下面的代码来获取屏幕.用DIV加CSS 来控制. 使用mousemove来获取移动的时候DIV的变化, 效果图如下: 使用5个DIV来组成实现截图目的第一部分,现在只是实现了选择的第一部分. HT ...

  7. Wine中中文显示为错误的解决方案

    First u must download wqy-microhei.ttc font online (https://github.com/anthonyfok/fonts-wqy-microhei ...

  8. Constructing continuous functions

    This post summarises different ways of constructing continuous functions, which are introduced in Se ...

  9. Django----admin模块初识

    步骤1:创建管理员用户:在Terminal输入:pythonmanage.py createsuperuser 如下图所示说明创建成功 步骤二:运行项目文件:python manage.py runs ...

  10. 如何在webpack中成功引用到图片?

    打包图片时,你可曾遇到在产出目录文件夹找不到图片,即便找到了,但是页面说引用不到资源?页面上或者文件中引用的图片地址不对? 一.在webpack中引入图片需要url-loader //webpack配 ...