简介
- 以及公司对安全重视,增加用户密码登录
- 对于搭建好的mongodb副本集加分片集群,为了安全,启动安全认证,使用账号密码登录。
- 默认的mongodb是不设置认证的。只要ip和端口正确就能连接,这样是不安全的。
具体操作
第一步关键 创建拥有添加删除用户权限的帐号
- 创建用户,需要在分片上和对应mongos还有config的主节点上面
登录到mongos切换到admin库,如果不切换默认是在test库,会导致程序无法连接到mongodb 切记
db.createUser({
user:"useradmin",
pwd:"test110",
roles: [ { role: "root",db:"admin"}]
})
db.auth("useradmin","test110")//认证该用户
开启分片集群权限验证
首先生成一个添加keyFile文件----->用于认证使用
1.在分片集群环境中,副本集内成员之间需要用keyFile认证,mongos与配置服务器,副本集之间也要keyFile认证,集群所有mongod和mongos实例使用内容相同的keyFile文件。
2.进行初始化,修改副本集时,都从本地例外登录进行操作
3.由于启用了认证,需要建立一个管理员帐号,才能从远程登录。建立管理员帐户,利用管理员账户从远程登录后,需要建立一个可以操作某个数据库的用户,客户端就用这个用户访问数据库。
4.分片集群中的管理员帐号需要具备配置服务器中admin和config数据库的读写权限,才能进行分片相关操作
5.集群中每个分片有自己的admin数据库,存储了集群的各自的证书和访问权限。如果需要单独远程登录分片,可以按照3.2的办法建立用户
操作步骤
openssl rand -base64 test110 > ./keyFile.key
chmod 600 ./keyFile.key #权限必须是600
scp ./keyFile.key #到对应的在分片和Configserver的config配置文件路径下
- Shard和Configserver配置文件添加相关配置信息
#开启权限验证
auth=true
keyFile=/home/mongodb/config/keyFile.key
- mongos配置文件中添加如下配置
#指向keyFile
keyFile=/usr/local/mongodb/key/keyFile.key
- 快速添加
echo "keyFile=/home/mongodb/config/keyFile.key" >> config*
echo "keyFile=/home/mongodb/config/keyFile.key" >> mongos*
echo "keyFile=/home/mongodb/config/keyFile.key" >> shard1*
echo "keyFile=/home/mongodb/config/keyFile.key" >> shard2*
echo "keyFile=/home/mongodb/config/keyFile.key" >> shard3*
echo "auth=true" >> config*
echo "auth=true" >> shard1*
echo "auth=true" >> shard2*
echo "auth=true" >> shard3*
测试登录
- 测试
mongo 192.168.128.10 -u admin -p test110
- 对应的业务程序升级增加配置配置用户名和密码,并验证业务是否正常。
还原回退操作
- 把如下配置还原
Shard和Configserver配置文件取消添加相关配置信息
#开启权限验证
auth=true
keyFile=/home/mongodb/config/keyFile.key
mongos配置文件中添加取消如下配置
#指向keyFile
keyFile=/usr/local/mongodb/key/keyFile.key
- 快速回退
sed -i '/keyFile/d' config*
sed -i '/keyFile/d' mongos*
sed -i '/keyFile/d' shard1*
sed -i '/keyFile/d' shard2*
sed -i '/keyFile/d' shard3*
sed -i '/auth=true/d' config*
sed -i '/auth=true/d' mongos*
sed -i '/auth=true/d' shard1*
sed -i '/auth=true/d' shard2*
sed -i '/auth=true/d' shard3*
- 重启mongodb服务,验证功能是否正常。