搭建好Mongodb副本集后(详见:linux下Mongodb副本集搭建),默认是不会开启安全认证。这时任何的都可以操作该副本集,这在实际生产环境中绝对不允许。为保证副本集的数据安全,开启副本集的安全认证必不可少。
Mongodb副本集之间的通信一般可以使用证书和keyFile文件来完成。实际生产环境更我会使用证书,但证书需要申请,这里仅演示如何通过keyFile文件实现副本集的安全。
keyFile文件其实质就是单机的auth认证。也就是提供用户名和密码认证后,方可操作副本集。
- 创建密钥文件
(1)创建安全认证的keyfile文件,本例创建在mongodb/repli/key目录下
mkdir -p /usr/local/mongodb/repli/key
(2)进入到上述目录,并创建文件 keyfile
touch keyfile
(3)使用linux系统提供的密码工具openssl生成符合标准的密钥并写入keyfile文件中
openssl rand -base64 756 -out keyfile
(4)修改keyfile文件权限为600
chmod 600 /usr/local/mongodb/repli/key/keyfile
(5)将keyfile文件同步到集群中的其他结点
(6)创建用户,设定为root权限(实际不会开放root权限),并验证其是否成功
返回为1说明用户创建成功。
- 启动安全认证
(1)停止所有机器的mongod服务,先副本再主结点
(2)修改每台机器的配置文件,在security中添加 keyFile属性
(3)将keyFile同步到集群中的其他机器
(4)重新启动每台机器上的mongod服务程序。
(5) 使用Mongo登录服务器
(6) 查看数据库,发现查询结果为空,切换到admin数据库,用户名和密码认证,返回结果为1
权限认证开启成功
(7) 在副本机中查看数据