時間:2024-02-05 12:47作者:下載吧人氣:26
想要了解內(nèi)建角色,還是少不了下面這張圖,在MongoDB中,用戶的權(quán)限是通過角色綁定的方法來分配的。把某個角色綁定在某個用戶上,那么這個用戶就有這個角色對應(yīng)的權(quán)限了。
MongoDB 4.0中的內(nèi)建角色類型如下:
這里對上面的內(nèi)建角色所擁有的權(quán)限做以說明:
read:用于讀取所有非系統(tǒng)集合,以及下面三個系統(tǒng)集合:
system.indexes、system.js以及system.namesp
readWrite:擁有read角色的所有權(quán)限,并且可以修改所有非系統(tǒng)集合和system.js集合上的數(shù)據(jù)
dbAdmin:提供管理相關(guān)功能,例如查詢統(tǒng)計信息,索引管理等
userAdmin:提供管理數(shù)據(jù)庫角色及用戶的權(quán)限,具有這個角色的用戶可以為當前數(shù)據(jù)庫的任何用戶,包括自己,分配任何角色和權(quán)限
dbOwner:提供數(shù)據(jù)庫所有者的權(quán)限,它可以對數(shù)據(jù)庫進行任何管理操作,這個角色結(jié)合了readWrite、dbAdmin、userAdmin三種角色授予的權(quán)限。
此類角色提供了管理整個MongoDB的權(quán)限,角色只能在admin數(shù)據(jù)庫中進行授權(quán)。
clusterManager:提供對集群進行管理和監(jiān)控的權(quán)限
clusterMonitor:提供對監(jiān)控工具的只讀訪問權(quán)限
hostManager:提供監(jiān)控和管理服務(wù)器的權(quán)限
clusterAdmin:提供最高的集群管理訪問權(quán)限,這個角色擁有clusterManager、clusterMonitor和hostManager角色授予的權(quán)限,除此之外,它還具有dropDatabase()權(quán)限
此類角色只能在admin數(shù)據(jù)庫中備份和恢復。
backup:提供備份數(shù)據(jù)的權(quán)限,使用mongodump備份整個mongod實例
restore:提供還原數(shù)據(jù)庫所需的權(quán)限,使用戶可以通過mongorestore恢復數(shù)據(jù)
全數(shù)據(jù)庫角色用于管理所有自定義數(shù)據(jù)庫,但是不包含local和config數(shù)據(jù)庫,它只能被授予在admin用戶下。
root,這個不需要過多解釋。
用戶只能在admin數(shù)據(jù)庫中配置這個權(quán)限,擁有這個角色的用戶可以對所有數(shù)據(jù)庫進行任何操作。
__system僅僅用于MongoDB內(nèi)部的管理,不建議將這個權(quán)限分配個用戶,防止用戶對內(nèi)部系統(tǒng)進行操作。
上面的內(nèi)容,更多的是講述怎樣使用內(nèi)建角色,這里我們來看創(chuàng)建自定義角色的,
自定義角色有如下三個特點:
1、在一般數(shù)據(jù)庫上創(chuàng)建的角色,只適用于當前數(shù)據(jù)庫
2、在admin數(shù)據(jù)庫上創(chuàng)建的角色,可適用于所有數(shù)據(jù)庫
3、創(chuàng)建角色時,角色名字不能重復,否則報錯alread exist
例如我們想給一個賬號分配insert,update、select、而不給delete權(quán)限。
語法:
db.createRole( { role:"<name>", privileges:[ {resource:{<resource>},actions:["action",...]} ], roles:[ {role:"<role>",db:"<database>"}|"<role>" ], authenticationRestrictions:[ {clientSource:["<IP 地址>"|"<CIDR range>",...], {serverAddress:["<IP 地址>"|"<CIDR range>",...]} ] } )
網(wǎng)友評論