更新时间:2023-05-25 GMT+08:00

创建并管理角色

创建角色

db.createRole(role, writeConcern)

  • 参数role为必选参数,类型为文档,详情如下:
    {
      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

    数组

    对应资源可用的操作列表, 常用action如下:

    • find
    • count
    • getMore
    • listDatabases
    • listCollections
    • listIndexes
    • insert
    • update
    • remove

    更多actions请参见官方文档

    roles

    数组

    必选参数,数组元素为角色继承的角色名。

    可以是系统预置的角色read或者readWrite,也可以是用户自定义的角色。

    authenticationRestrictions

    数组

    可选。用于指定该角色可接入的IP地址或者IP地址段。

  • writeConcern可选参数用来指定命令的write concern的等级。

更新角色

db.grantPrivilegesToRole(rolename,privileges,writeConcern)

db.revokePrivilegesFromRole(rolename,privileges,writeConcern)

上述命令用户给角色获取或者回收指定的权限。

  • 参数rolename为必选参数,用于指定待更新的角色名称。
  • 参数privileges为角色待调整的权限。
    db.grantPrivilegesToRole(
        "< rolename >",
        [
            { resource: { <resource> }, actions: [ "<action>", ... ] },
            ...
        ],
        { < writeConcern > }
    )
    表1 privileges各字段含义

    字段

    类型

    说明

    resource

    文档

    用于指定库名或者集合名

    actions

    数组

    参考createRole章节的说明。

除了上述命令,还支持updateRole对角色信息整体更新。

db.updateRole(role, update, writeConcern)

表2 参数说明

字段

类型

说明

role

string

角色名称

update

数组

必选参数,与创建角色命令的privileges参与含义一致。用于整体替换对应角色的全部权限信息。

writeConcern

文档

可选参数用来指定命令的write concern 的等级

删除角色

db.dropRole(rolename, writeConcern)

  • 参数rolename为必选参数,待删除的角色名称。
  • writeConcern可选参数用来指定命令的write concern的等级。