1. 程式人生 > 實用技巧 >MongoDB使用者,角色管理 --- MongoDB基礎用法(三)

MongoDB使用者,角色管理 --- MongoDB基礎用法(三)

使用者管理

使用者建立

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/