`

【转】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-async-driver-2.0.1 jar包

    5. **认证和安全性**:支持MongoDB的各种安全特性,包括SSL/TLS加密连接、身份验证(如SCRAM-SHA-1或MONGODB-CR)、角色权限管理和访问控制。 6. **CRUD操作**:提供对MongoDB基本的Create(创建)、Read(读取)、...

    mongodb-linux-x86_64-rhel70-4.2.5.tgz

    在安全方面,4.2.5版本引入了更多安全特性,包括TLS/SSL支持、认证和授权机制。你应该为MongoDB配置认证,限制只允许特定的用户和IP地址连接,避免未授权访问。此外,定期更新到最新版本以获取安全补丁和性能改进也...

    mongodb-linux-x86_64-4.0.8.tgz

    本文将详细解析"mongodb-linux-x86_64-4.0.8.tgz"这个压缩包文件及其核心内容,帮助读者深入了解MongoDB在Linux平台上的安装与使用。 首先,"mongodb-linux-x86_64-4.0.8.tgz"是一个专为Linux 64位系统设计的...

    mongodb-linux-x86_64-ubuntu1404-3.6.4

    5. **安全性增强**:包括TLS/SSL协议的默认启用,增强了审计日志功能,以及对X.509认证的改进,提供了更强大的安全防护。 6. **性能提升**:在读写性能上进行了优化,尤其是对于读操作,如范围查询和索引扫描,性能...

    mongodb-linux-x86_64-3.4.10.tgz

    创建一个密钥文件并配置安全认证。 七、备份与恢复 MongoDB提供了`mongodump`和`mongorestore`工具进行数据备份和恢复。了解如何正确使用这些工具对确保数据安全至关重要。 总结,MongoDB在Linux,特别是CentOS...

    mongodb-linux-x86_64-ubuntu1604-3.4.0.tgz

    5. **安全增强**:包括TLS/SSL加密连接的默认启用,以及加强的认证和授权机制。 安装MongoDB 3.4.0在Ubuntu 16.04上的步骤通常包括: 1. 添加MongoDB官方的APT源。 2. 更新系统包列表。 3. 安装MongoDB服务器和...

    mongodb-compass-1.27.1-win32-x64.zip

    - **v8_context_snapshot.bin、snapshot_blob.bin、natives_blob.bin**:这些都是与V8 JavaScript引擎相关的二进制文件,用于提供MongoDB Compass的JavaScript执行环境。 - **icudtl.dat**:这是一个国际化数据文件...

    mongodb-linux-x86_64-2.2.6.tgz

    5. 安全性增强:提供更强大的认证机制,如SCRAM-SHA-1。 三、MongoDB在Linux上的安装 1. 解压下载的文件:使用tar命令解压tgz文件,例如`tar -zxvf mongodb-linux-x86_64-2.2.6.tgz`。 2. 创建数据目录:为MongoDB...

    mongodb-linux-x86_64-rhel62-4.4.1.tgz

    5. **安全增强**:MongoDB的安全性在4.4.1版本中得到了加强,包括认证、授权、加密等方面。用户可以使用X.509证书进行认证,增强网络传输的SSL/TLS支持,并利用新的审计日志功能来跟踪数据库活动。 6. **云集成**:...

    mongodb-linux-x86_64-rhel70-4.4.4.zip

    6. **安全增强**:MongoDB 4.4加强了安全性,包括TLS/SSL加密通信、认证、访问控制和审计日志。在RHEL 7.0上部署时,应配置好防火墙规则并启用认证机制。 7. **自动化运维工具**:MongoDB提供了MMS(MongoDB ...

    mongodb-linux-x86_64-3.0.6.tgz

    4. **安全增强**:此版本包含了更多的安全特性,如支持SCRAM-SHA-1认证协议,增强了服务器与客户端之间的通信安全性。 5. **新查询优化器**:MongoDB 3.0引入了新的查询优化器,能更好地分析查询计划,提高查询效率...

    mongodb-linux-x86_64-rhel70-4.2.1.tgz

    4. **安全增强**:增强了身份验证和访问控制,包括支持TLS/SSL连接和X509认证,以及更严格的默认安全设置。 5. **交易支持**:MongoDB 4.2引入了多文档ACID事务,这使得它更适合处理复杂的业务逻辑,尤其是在需要跨...

    mongodb-win32-x86_64-2008plus-ssl-4.0.3

    8. **安全性和权限**:MongoDB提供用户认证和角色管理,确保只有授权用户才能访问数据库。在4.0.3版本中,安全性得到了增强,建议启用认证并设置合适的权限。 9. **备份与恢复**:MongoDB支持多种备份和恢复策略,...

    mongodb-linux-x86_64-rhel62-4.2.5.tgz

    在这个版本中,MongoDB引入了一系列的功能更新、性能优化和安全改进。 首先,让我们关注MongoDB的分片特性。在4.2.5版本中,MongoDB支持水平扩展,允许数据分布到多个分片上,以处理大量数据并提供高可用性。这使得...

    mongodb-win32-x86-64-2012plus-4.2.0.zip

    5. **安全增强**:加强了认证和授权机制,支持TLS/SSL加密连接,提供了审计日志功能,增强了系统的安全性。 6. **分析工具集成**:MongoDB Compass,一个图形化管理工具,更新以支持4.2的新特性,使得数据库的管理...

    mongodb-linux-x86_64-rhel70-4.4.13安装包和conf配置文件

    5. **权限与安全**:为了保护数据库,你可以启用身份验证(`auth`),并配置`security.keyFile`来实现基于密钥的认证。 示例配置文件内容可能如下: ``` systemLog: destination: file path: /var/log/mongodb/...

    mongodb-linux-s390x-rhel72-4.2.0.tgz

    - 数据库的安全管理包括用户认证、角色权限控制和网络访问限制,确保数据安全。 - 为了生产环境的最佳实践,建议开启认证,设置防火墙规则,并定期备份数据。 6. 性能调优和监控: - MongoDB有许多性能监控工具...

    mongodb-linux-x86_64-rhel62-3.6.2.tgz

    在安全性方面,MongoDB 3.6加强了身份验证和访问控制,支持SCRAM-SHA-256认证协议,提高了密码的安全性。此外,它还包括改进的审计日志功能,有助于监控和检测潜在的数据库活动异常。 在高可用性方面,MongoDB 3.6...

    mongodb-linux-x86_64-3.4.0.tgz

    4. **安全增强**:3.4版本提升了安全特性,包括支持X.509认证,使得用户可以通过SSL/TLS证书进行身份验证,提高了数据库的安全级别。 5. **新的查询语言元素**:MongoDB 3.4引入了`$expr`操作符,允许在`$match`...

Global site tag (gtag.js) - Google Analytics