创建
创建自定义角色需要使用 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")
需要留意的是,删除自定义角色将导致该角色与所有用户的关联关系被删除。如果要删除自定义角色之前,请确保已经撤销了与该角色相关的所有用户的角色分配,并且已经备份了数据库。