簡介
- 以及公司對(duì)安全重視,增加用戶密碼登錄
- 對(duì)于搭建好的mongodb副本集加分片集群,為了安全,啟動(dòng)安全認(rèn)證,使用賬號(hào)密碼登錄。
- 默認(rèn)的mongodb是不設(shè)置認(rèn)證的。只要ip和端口正確就能連接,這樣是不安全的。
具體操作
第一步關(guān)鍵 創(chuàng)建擁有添加刪除用戶權(quán)限的帳號(hào)
- 創(chuàng)建用戶,需要在分片上和對(duì)應(yīng)mongos還有config的主節(jié)點(diǎn)上面
登錄到mongos切換到admin庫,如果不切換默認(rèn)是在test庫,會(huì)導(dǎo)致程序無法連接到mongodb 切記
db.createUser({
user:"useradmin",
pwd:"test110",
roles: [ { role: "root",db:"admin"}]
})
db.auth("useradmin","test110")//認(rèn)證該用戶
開啟分片集群權(quán)限驗(yàn)證
首先生成一個(gè)添加keyFile文件----->用于認(rèn)證使用
1.在分片集群環(huán)境中,副本集內(nèi)成員之間需要用keyFile認(rèn)證,mongos與配置服務(wù)器,副本集之間也要keyFile認(rèn)證,集群所有mongod和mongos實(shí)例使用內(nèi)容相同的keyFile文件。
2.進(jìn)行初始化,修改副本集時(shí),都從本地例外登錄進(jìn)行操作
3.由于啟用了認(rèn)證,需要建立一個(gè)管理員帳號(hào),才能從遠(yuǎn)程登錄。建立管理員帳戶,利用管理員賬戶從遠(yuǎn)程登錄后,需要建立一個(gè)可以操作某個(gè)數(shù)據(jù)庫的用戶,客戶端就用這個(gè)用戶訪問數(shù)據(jù)庫。
4.分片集群中的管理員帳號(hào)需要具備配置服務(wù)器中admin和config數(shù)據(jù)庫的讀寫權(quán)限,才能進(jìn)行分片相關(guān)操作
5.集群中每個(gè)分片有自己的admin數(shù)據(jù)庫,存儲(chǔ)了集群的各自的證書和訪問權(quán)限。如果需要單獨(dú)遠(yuǎn)程登錄分片,可以按照3.2的辦法建立用戶
操作步驟
openssl rand -base64 test110 > ./keyFile.key
chmod 600 ./keyFile.key #權(quán)限必須是600
scp ./keyFile.key #到對(duì)應(yīng)的在分片和Configserver的config配置文件路徑下
- Shard和Configserver配置文件添加相關(guān)配置信息
#開啟權(quán)限驗(yàn)證
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*
測(cè)試登錄
- 測(cè)試
mongo 192.168.128.10 -u admin -p test110
- 對(duì)應(yīng)的業(yè)務(wù)程序升級(jí)增加配置配置用戶名和密碼,并驗(yàn)證業(yè)務(wù)是否正常。
還原回退操作
- 把如下配置還原
Shard和Configserver配置文件取消添加相關(guān)配置信息
#開啟權(quán)限驗(yàn)證
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服務(wù),驗(yàn)證功能是否正常。