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