MongoDB使用者,角色管理 --- MongoDB基礎用法(三)
阿新 • • 發佈:2020-10-29
使用者管理
使用者建立
MongoDB採用基於角色的訪問控制(RBAC)來確定使用者的訪問。 授予使用者一個或多個角色,確定使用者對MongoDB資源的訪問許可權和使用者可以執行哪些操作。 使用者應該只有最小許可權集才能確保最小許可權的系統。
MongoDB系統的每個應用程式和使用者都應該對映到不同的使用者。 這種訪問隔離便於訪問撤銷和持續的使用者維護。
建立管理員使用者
要在MongoDB部署中建立使用者,請連線到部署,然後使用db.createUser()方法或createUser命令新增使用者。
> use admin > db.createUser( { user:"root", pwd:"123456", roles:[{role:"root",db:"admin"}] } )
修改密碼
db.changeUserPassword("username","newpassword")
使用者刪除
db.dropUser("root")
使用者認證
db.auth('user','pwd')
使用者查詢
db.system.users.find()
刪除使用者角色
db.revokeRolesFromUser(
"usename",
[
{ role: "readWrite", db: "accounts" }
]
)
新增使用者角色
db.grantRolesToUser( "reportsUser", [ { role: "read", db: "accounts" } ] )
角色管理
自定義角色儲存在admin資料庫system.roles集合中
新增角色
db.createRole( { role: "<name>", privileges: [ { resource: { db: "myApp", collection: "" }, actions: [ "insert", "dbStats", "collStats", "compact" ] } ... ], roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ], authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...], serverAddress: ["<IP>" | "<CIDR range>", ...] }, ... ] } )
檢視角色
db.getRole("rolename",{showPrivileges:true})
刪除角色
db.dropRole("rolename")
角色許可權
角色 | 許可權 |
---|---|
read | 允許使用者讀取指定資料庫 |
readWrite | 允許使用者讀寫指定資料庫 |
dbAdmin | 允許使用者在指定資料庫中執行管理函式,如索引建立、刪除,檢視統計或訪問system.profile |
dbOwner | 允許在當前DB中執行任意操作 |
useradmin | 允許使用者向system.users集合寫入,可以找指定資料庫裡建立、刪除和管理使用者 |
readAnyDatabase | 賦予使用者所有資料庫的讀許可權,只在admin資料庫中可用 |
readWriteAnyDatabase | 賦予使用者所有資料庫的讀寫許可權,只在admin資料庫中可用 |
userAdminAnyDatabase | 賦予使用者所有資料庫管理User的許可權,只在admin資料庫中可用 |
dbAdminAnyDatabase | 賦予管理所有資料庫的許可權,只在admin資料庫中可用 |
root | 超級賬號,超級許可權,只在admin資料庫中可用。 |
clusterAdmin | 賦予管理叢集的最高許可權,只在admin資料庫中可用 |
clusterManager | 賦予管理和監控叢集的許可權 |
clusterMonitor | 賦予監控叢集的許可權,對監控工具具有readonly的許可權 |
hostManager | 賦予管理Server |
更多:https://docs.mongodb.com/manual/core/security-user-defined-roles/