管理角色
更新時間 2023-08-29 15:14:31
最近更新時間: 2023-08-29 15:14:31
分享文章
本頁介紹了文檔數據庫服務管理角色相關操作。
創建
創建自定義角色需要使用 createRole 命令或 db.createRole() 方法,并指定角色的名稱、權限和其他屬性。下面是創建角色的模板: db.createRole(role, writeConcern)。
參數role為必選參數,類型為文檔;參數writeConcern :用來指定命令的write concern的等級 。
db.createRole(
? {
? ? ?role: "<name>",
? ? ?privileges: [
? ? ? ? { resource: { <resource> }, actions: [ "<action>", ... ] },
? ? ? ? ...
? ? ],
? ? ?roles: [
? ? ? ? { role: "<role>", db: "<database>" } | "<role>",
? ? ? ? ?...
? ? ],
? ? ?authenticationRestrictions: [
? ? ? {
? ? ? ? ?clientSource: ["<IP>" | "<CIDR range>", ...],
? ? ? ? ?serverAddress: ["<IP>" | "<CIDR range>", ...]
? ? ? },
? ? ? ?...
? ? ]
? }
)
參數說明:
| 字段 | 類型 | 說明 |
|---|---|---|
| role | string | 角色名稱。 |
| privileges | 數組 | 必選參數,數組元素表示角色所具備的權限。如果該參數設置為空集合,表示該角色沒有任何權限。 |
| resource | 文檔 | 該參數用于指定數據庫名稱或集合名稱。 |
| actions | 數組 | 該參數對應的是資源可用的操作列表,其中常見的操作包括find、count、getMore、listDatabases、listCollections、listIndexes、insert、update、remove等。 |
| roles | 數組 | 必選參數,數組元素用于指定角色繼承的角色名。這可以是系統預設的角色,例如read或readWrite,也可以是用戶自定義的角色。 |
| authenticationRestrictions | 數組 | 該參數用于指定角色可以接受的IP地址或IP地址范圍。 |
更新
在文檔數據庫服務中,可以使用 updateRole 命令或 db.updateRole() 方法來更新自定義角色的內容。更新自定義角色通常包括以下兩個步驟:
- 獲取要更新的自定義角色的當前配置信息。
可以使用 db.getRole() 命令或 db.runCommand({ getRole: "", rolesInfo: 1 }) 方法來獲取要更新的自定義角色的當前配置信息。例如,下面的命令獲取名為 myrole 的自定義角色的當前配置信息:
db.runCommand({ getRole: "myrole", rolesInfo: 1 })
- 更新自定義角色的配置信息。
可以使用 updateRole 命令或 db.updateRole() 方法來更新自定義角色的配置信息。例如,下面的命令將名為 myrole 的自定義角色的權限更新為 read 權限:
db.updateRole("myrole", { privileges: [{ actions: ["read"], resource: { db: "", collection: "" } }] })
需要留意的是,更新自定義角色的配置信息需要謹慎操作,因為錯誤的操作可能會導致數據庫的安全性問題。因此,在更新自定義角色之前,建議先備份數據庫,并在測試環境中測試更新操作的效果。
刪除
確認要刪除自定義角色后,可以使用 dropRole 命令或 db.dropRole() 方法來刪除自定義角色。例如,下面的命令刪除名為 myrole 的自定義角色:
db.dropRole("myrole")
需要留意的是,刪除自定義角色將導致該角色與所有用戶的關聯關系被刪除。如果要刪除自定義角色之前,請確保已經撤銷了與該角色相關的所有用戶的角色分配,并且已經備份了數據庫。