mongod 验证配置指南(十二)

一. 前言
最近公司加强安全,http://www.ttlsa.com/mongodb数据要启用验证,顺道总结下了。默认情况下,mongodb不启用验证的。数据库级别的权限,要么可读写要么只读权限。mongod的验证配置比较操蛋。分两种情形:一种是单服务器,只需启动时添加--auth参数即可。 另一种是复制集、分片集群服务器,必须指定keyfile参数,其他节点之间的通讯基于该keyfile。在这种情况下,–auth参数是隐含启用的,所有的mongodb访问都必须验证的。二. 单服务器模式
添加管理员用户,admin库下的用户是全局用户,对所有的数据库可读写。

1
2
3
4

./mongo

use admin
db.addUser(“root”,“www.ttlsa.com”)
db.auth(“root”,“www.ttlsa.com”)

创建普通的用户,是数据库级别的。

1
2
3

use database_name
db.addUser(‘guest’,‘www.ttlsa.com’) 可读写
db.addUser(‘guest’,‘www.ttlsa.com’,true) 只可读

查看用户

1

db.system.users.find()

删除用户

1
2
3

db.removeUser(username)

db.system.users.remove( { user: username } )

配置文件加上下面的参数后重新启动mongod实例

1

auth = ture

三. 复制集与分片集群模式下
3.1 keyfile规则

  1. 集群服务器之间通讯通过keyfile进行身份验证。
  2. 每个实例的keyfile文件内容要一致。
  3. keyfile文件权限仅当前用户可读。
  4. 集群成员都需要指定–keyFile参数。
  5. 每个客户端连接到数据库之前必须验证。
  6. key长度必须在6到1024个字符之间,否则会报错,mongod起不起来。
  7. 任何空格被忽略。
  8. key不能包含非法字符=,否则会报错,mongod起不起来。3.2 创建一个keyfile

1

openssl rand -base64 513 > keyfile

最好是3的倍数,否则会含有非法字符=。3.3 修改keyfile权限

1
2

chown mongod.mongod keyfile

chmod 600 keyfile

3.4 创建一个管理账号
在启用–keyFIle后,连接数据库都必须要验证的。

1
2
3

use admin
db.addUser(“root”,“www.ttlsa.com”)
db.auth(“root”,“www.ttlsa.com”)

3.5 启用–keyFile
修改mongod.conf文件,添加下面这项

1

keyFile = /path/to/keyfile

3.6 重新启动mongod

1

./mongod --config mongod.conf

创建普通用户与单机模式下验证一样的。如需转载请注明出处:http://www.ttlsa.com/html/2707.html