`

【转】MongoDB-安全与认证

 
阅读更多

Mongodb的安全模式默认是关闭,此时它需要在一个可信任的运行环境中。

在可信任的环境中使用默认的关闭安全模式最简单,但是需要确保可信任的设备访问数据库的TCP端口,

这通常需要隔离数据库所在设备,使其完全无法访问外部网络。

确保网络安全

防火墙策略

以下是数据库必须的默认端口:(sina博客的编辑器很操蛋,表格搞不过来)

参见: http://www.mongodb.org/display/DOCS/Security+and+Authentication#SecurityandAuthentication-RunninginaTrustedEnvironment(without\auth) 

1, 在分片式环境中

    a,集群中的所有的mongodb进程(mongos, mongod, mongod--configsvr)应该是能相互连接的。

    b,客户端必须能够连接到mongos进程,但是,它们可以从mongod被阻塞。

2,在非分片式副本环境中

    a,所有客户端必须能连接所有非隐藏的副本集成员。

    b,副本集的所有成员(mongod进程)需要能够相互通信。

IP 地址绑定

默认情况下,mongod服务器将监听设备上所有可用的IP地址。可以在mongod的"bind_ip"配置项中限制监听的IP地址。

TCP端口号

mongodb默认监听下列端口号:

独立mongod服务:27017

mongos服务: 27017

分片服务(mongod --shardsvr): 27018

配置服务(mongod --configsvr):27019

mongod的网站统计页面端口:通常是28017,即独立mongod服务端口号加1000, 可以用 --nohttpinterface 命令行参数禁止统计页面。

以上端口可以更改但不推荐。

在安全模式下运行(使用 --auth 或者 --keyFile)

mongodb支持身份验证和简单的粗粒度访问控制的"安全模式". 可以通过 --anth和--keyFile命令行参数启用。

一个通过用户名密码认证的特定数据库,一旦通过认证,普通用户能够完全读写数据库。还可以创建只读用户,使其只有读取权限。

admin数据库是一个特殊的库。一些管理命名只能在admin数据库运行(所以只能由admin运行)。

当然,用户能访问admin数据库也能读写在服务或集群中的其他数据库。

注意:即使使用安全模式,也应该设置合理的防火墙策略。

admin身份登录

虽然通常admin账号能访问服务器上的任何数据库,但是必须先使用admin账号登录admin数据库,再use其他数据库,下面的登陆将会成功:

> use admin
> db.auth("someAdminUser", password)
> // and then if desired switch databases:
> use test

下面这个登陆将会失败:

> use test
> db.auth("someAdminUser", password)
 
启用安全模式
要启用安全模式必须要1,在使用 --auth启动服务前为admin db添加了一个用户。
或2,从本地连接(localhost connection)添加第一个用户(如果不能添加用户,那应该是非本地连接)。

配置
首先要为数据库进程创建一个管理员账户,此用户保存在特殊的admin数据库中。

如果没有admin账户,可以从本地连接访问数据库而不需要验证。因此可以在数据库所在主机运行数据库shell和配置数据库:
$ mongo localhost/admin
> // we are using database admin
> db.addUser("theadmin", "anadminpassword")
 
现在创建了一个管理员账户。现在必须要经过验证才能使用:
假如用户已经存在,在shell中执行addUser命令能够更新密码。
一些mongodb驱动也提供了类似shell中addUser的方法。
 
删除账户
shell中执行
> db.auth("theadmin", "anadminpassword")
 
现在我们可以为其他数据库配置非管理员账户:
> // give joe read/write access to the projectx database
> use projectx
> db.addUser("joe", "passwordForJoe")
 
添加只读账户(1.4+):
 
修改密码
> use projectx
> db.addUser("guest", "passwordForGuest", true)
 
查看用户列表:
用户信息存储在每个数据库的system.users集合。例如数据库projectX中的用户存储在projectX.system.users集合。
> db.system.users.find()
> db.removeUser( username )
> // or
> db.system.users.remove( { user: username } )
> // check it worked:
> db.system.users.find()
> // check we are on the db we intended:
> db
 
分片式集群和副本集的安全模式
注意:在集群及副本集环境中必须使用keyFile参数,只使用--auth参数将无法工作。

     2.2以下的版本不支持集群环境下的只读用户。

客户端在集群中进行认证与在单服务器环境中的认证是一样的,唯一的区别是集群中服务器使用密钥文件进行内部沟通。

密钥文件基本上是一个明文的文件,hash计算后被当做集群的内部密码。


设置副本集 and/or 分片的验证:

a,创建key文件并复制到集合的每个服务器中。密钥文件是字符的base64集,加上空格与换行符。

b,修改密钥文件权限为只能被当前用户读取。

c,启动集群中的服务器时使用命令行参数 --keyFile /path/to/file

d,客户端都必须验证和才能使用

启动时可以不使用 --auth参数,因为使用了 --keyFile就必须验证,也就是隐含了 --auth。但是--auth并不隐含 --keyFile。
 
密码文件
密钥文件必须至少包含6个base64字符并且不大于1K(B包括空格)。

空格字符将被去除,所以对数据库来说,下面的密钥文件是一样的:
$ echo -e "my secret key" > key1
$ echo -e "my secret key\n" > key2
$ echo -e "my    secret    key" > key3
$ echo -e "my\r\nsecret\r\nkey\r\n" > key4
 
转自 http://blog.sina.com.cn/s/blog_48c49d5d010174v8.html
分享到:
评论
1 楼 di1984HIT 2015-09-27  
学习了,很好~

相关推荐

    MongoDB安全认证_windows教程

    windows平台上详细介绍MongoDB安全认证的过程,适用于新手

    真实可用的mongodb下周地址.txt

    视频目录: 01-mongodb文档型数据库特点介绍 01-NoSQL简介 02-mongodb安装过程 02-mongodb操作1 ...09-安全和认证 10-replication复制集 10-主从复制 11-shard分片 11-分片 12-使用java操作mongodb

    MongoDB数据库安全配置规范

    MongoDB安全配置事项 1、开启授权认证 在配置文件mongod.conf 中加入 auth = true 如果你开启了--rest参数,甚至可以直接通过web界面查询数据,执行mongod命令。 2、关闭网页管理 在配置文件mongod.conf 中加入...

    mongodb-java:模仿monogdb写一个数据库

    用户管理,安全认证 主从复制 副本集(复制) 分片 学习MongoDB 练习环境 MongoDB v3.6.2 简介: MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 ...

    mongodb副本集加分片集群安全认证使用账号密码登录

    mongodb副本集加分片集群安全认证使用账号密码登录

    MongoDB安全认证.pdf

    MongoDB安全认证.pdf 学习资料 复习资料 教学资源

    MongoDB安全及身份认证(实例讲解)

    本文将详细介绍MongoDB安全相关的内容 概述 MongoDB安全主要包括以下4个方面 1、物理隔离 系统不论设计的多么完善,在实施过程中,总会存在一些漏洞。如果能够把不安全的使用方与MongoDB数据库做物理上的隔离,即...

    centos7下mongodb4.0.6分片集群搭建(psa)-用户认证关键问题汇总

    公司单节点升级到分片下,搜索了一圈大多数MongoDB集群的部署方案都是分片+副本集,没有讲述如何从单节点升级到分片+复制集的方法,亲自试验后记录整个过程以及中间的参考内容和疑难解决,以备后查。内容包含复制集+...

    mongodb-university:Mongod DB大学课程

    数据整理认证准备数据库管理员安全验证 LDAP 的Kerberos 授权和加密内置角色用户定义的角色静态加密 审计与最佳实践稽核减少日志安全检查表 诊断和调试服务器日志服务器状态工具服务器诊断工具探查器指数统计响应...

    MongoDB集群部署&开启身份认证部署包

    简单打包分布式部署MongoDB集群,开启身份认证发布工具包示例。 使用参考博客地址 https://blog.csdn.net/csdn710924032/article/details/80713877 内附度盘

    Centos7安装mongodb

    下载 mkdir /software cd /software wget ...ln -s mongodb-linux-x86_64-4.0.13/ mongodb 配置 vim /usr/local/mongodb/bin/mongodb.conf dbpath = /usr/local/mongodb/data/db

    MongoDB基础入门到高级进阶

    MongoDB的安全认证 4、主讲内容 基础入门部分 章节一:MongoDB相关概念 章节二:单机部署 章节三:基本常用命令 章节四:SpringDataMongoDB操作 高级进阶部分 章节一:索引 章节二:特殊集合 章节三:副本集 章节四...

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    《深入云计算(MongoDB管理与开发实战详解)》系统全面的介绍了MongoDB开发、管理、维护和性能优化等方方面面。详细而深入,对MongoDB的开发和管理方法进行了详细的讲解,也对MongoDB的工作机制进行了深入的探讨。注重...

    《10天掌握MongoDB》2012完整版.pdf[带书签]

    安全与认证 备份与恢复 备份与恢复-冷备份 备份与恢复-热备份 备份与恢复-主从复制备份 备份与恢复-修复 第八天:MONGODB复制 主从复制 主从复制-选项 副本集 副本集-特点 副本集-活跃节点选举 读写分离 工作原理-...

    mongodb资料大全

    安全与认证: use test2 //选择数据库 db.addUser("username","password") //普通权限,可读写 db.addUser("username","password",true) //可读、不可写 db.system.users.remove({user:"username"}) //删除用户 ...

    mongodb数据库的6个安全设置命令

    1、以安全认证模式启动 代码如下:bin/mongod?–auth?-dbpath /Users/mc2/mongo/db -logpath /Users/mc2/mongo/log.log & 使用–auth选项启动mongod进程即可启用认证模式。 或者,也可以修改/etc/mongodb.conf,设置...

    记录MongoDB管理操作

    将房产系统在一年多来使用的mongodb管理方面上做了一些基本管理操作的记录,包括了安装启动,还有对mongodb进行监控,备份和修复,安全认证等等,当然了,还没有涉及到分片

    springMongodb参考文档中文版

    类型安全的查询方法 11.3.6。全文搜索查询 11.3.7。预测 11.4。杂 11.4.1。CDI集成 12.反应性MongoDB存储库 12.1。介绍 12.2。活性成分库 12.3。用法 12.4。特征 12.4.1。地理空间资源库查询 12.5。无限流与Tailable...

    MongoDB权威指南(中文版)高清

    1098.1.3 停止MongoDB 1108.2 监控 1108.2.1 使用管理接口 1108.2.2 serverStatus 1128.2.3 mongostat 1138.2.4 第三方插件 1138.3 安全和认证 1148.3.1 认证的基础知识 1148.3.2 认证的工作原理 ...

    mongodb学习手册

    MongoDB学习手册 说明 一、 Mongodb简介 ...1) 开启安全认证 2) 添加用户 3) 认证 3 4) 查看用户 5) 添加普通用户 6) 添加只读用户 7) 修改密码 8) 删除用户 十四、 常用DBA操作 十五、 图形化管理工具

Global site tag (gtag.js) - Google Analytics