MongoDb分片集群认证
本文主要基于已經(jīng)搭建好的未認證集群,結(jié)合上篇Mongodb副本集分片集群模式環(huán)境部署(https://www.cnblogs.com/woxingwoxue/p/9875878.html), MongoDb分片集群認證幾個主要流程
1.在分片集群環(huán)境中,副本集內(nèi)成員之間需要用keyFile認證,mongos與配置服務(wù)器,副本集之間也要keyFile認證,集群所有mongod和mongos實例使用內(nèi)容相同的keyFile文件
(1)在其中一臺機器上生成keyfile
(2)將keyfile放置在<path-to-keyfilie>路徑
2.建立管理員賬號,賦所有權(quán)限(admin和config數(shù)據(jù)庫)
3.關(guān)閉所有mongod、mongos、configsvr,編輯配置文件,重新啟動每臺服務(wù)器每個實例
為每一個mongod、mongos、配置服務(wù)器的實例其中的配置文件添加認證屬性或者在啟動實例時添加--authorization、--keyFile選項
其他實例如下
[mongo@mongo3 ~]$ vi services/shard1/mongod.conf#mongod.conf 添加以下配置 security:authorization: enabled #若啟動實例報錯,可刪除該行keyFile: /home/mongo/services/keyfile[mongo@mongo3 ~]$ ./mongod -f services/shard1/mongod.conf[mongo@mongo1 ~]$ vi services/shard2/mongod.conf#mongod.conf 添加以下配置 security:authorization: enabled #若啟動實例報錯,可刪除該行keyFile: /home/mongo/services/keyfile[mongo@mongo1 ~]$ ./mongod -f services/shard2/mongod.conf[mongo@mongo1 ~]$ vi services/shard3/mongod.conf#mongod.conf 添加以下配置 security:authorization: enabled #若啟動實例報錯,可刪除該行keyFile: /home/mongo/services/keyfile[mongo@mongo1 ~]$ ./mongod -f services/shard3/mongod.conf[mongo@mongo2 ~]$ vi services/mongos/mongos.conf#mongod.conf 添加以下配置 security:authorization: enabled #若啟動實例報錯,可刪除該行keyFile: /home/mongo/services/keyfile[mongo@mongo2 ~]$ ./mongos -f services/mongos/mongos.conf4.admin連接mongo集群
[mongo@mongo3 ~]$ ./mongo 172.16.0.192:27017/admin -u admin -p 1234565.為指定數(shù)據(jù)庫添加訪問用戶,本文為testShard數(shù)據(jù)庫
use testShard db.createUser({user:"test",pwd:"test",roles:[{role:"readWrite", db:"testShard"} #讀寫權(quán)限]} ) db.auth("test","test")6.test訪問mongo集群,只有testShard的數(shù)據(jù)讀寫權(quán)限
[mongo@mongo3 ~]$ ./mongo 172.16.0.192:27017/testShard -u test -p test MongoDB shell version v4.0.3 connecting to: mongodb://172.16.0.192:27017/testShard Implicit session: session { "id" : UUID("e0f8bf3f-83d7-432c-ba4c-c063d865380e") } MongoDB server version: 4.0.3?
用戶和角色方法
詳細參見官方文檔:
https://docs.mongodb.com/manual/reference/method/#role-management
查看角色信息
use admin
db.getRole("rolename",{showPrivileges:true})
刪除角色
use admin
db.dropRole("rolename")
系統(tǒng)內(nèi)置用戶角色
大部分內(nèi)置的角色對所有數(shù)據(jù)庫共用,少部分僅對admin生效
數(shù)據(jù)庫用戶類
read
非系統(tǒng)集合有查詢權(quán)限
readWrite
非系統(tǒng)集合有查詢和修改權(quán)限
數(shù)據(jù)庫管理類
dbAdmin
數(shù)據(jù)庫管理相關(guān),比如索引管理,schema管理,統(tǒng)計收集等,不包括用戶和角色管理
dbOwner
提供數(shù)據(jù)庫管理,讀寫權(quán)限,用戶和角色管理相關(guān)功能
userAdmin
提供數(shù)據(jù)庫用戶和角色管理相關(guān)功能
集群管理類
clusterAdmin
提供最大集群管理權(quán)限
clusterManager
提供集群管理和監(jiān)控權(quán)限
clusterMonitor
提供對監(jiān)控工具只讀權(quán)限
hostManager
提供監(jiān)控和管理severs權(quán)限
備份和恢復(fù)類
backup
提供數(shù)據(jù)庫備份權(quán)限
restore
提供數(shù)據(jù)恢復(fù)權(quán)限
All-Database類
readAnyDatabase
提供讀取所有數(shù)據(jù)庫的權(quán)限除了local和config數(shù)據(jù)庫之外
readWriteAnyDatabase
和readAnyDatabase一樣,除了增加了寫權(quán)限
userAdminAnyDatabase
管理用戶所有數(shù)據(jù)庫權(quán)限,單個數(shù)據(jù)庫權(quán)限和userAdmin角色一樣
dbAdminAnyDatabase
提供所有用戶管理權(quán)限,除了local,config
超級用戶類
root
數(shù)據(jù)庫所有權(quán)限
內(nèi)部角色
__system
提供數(shù)據(jù)庫所有對象任何操作的權(quán)限,不能分配給用戶,非常危險
轉(zhuǎn)載于:https://www.cnblogs.com/woxingwoxue/p/9888897.html
總結(jié)
以上是生活随笔為你收集整理的MongoDb分片集群认证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 增删改查sql语法
- 下一篇: 学习程序开发的方法,仅供参考吧