角色管理

最近更新时间:2026-06-18 12:15:00

我的收藏

操作场景

在云数据库 MongoDB 中,角色(Role)是权限(Privilege)的抽象集合,账号的所有数据访问权限均通过绑定角色获得。MongoDB 提供了一组内置角色用于满足通用授权需求;当内置角色无法覆盖业务的精细授权场景时,可以创建自定义角色来组合所需的操作命令(Action)和资源范围(Resource),实现库表级甚至命令级的精细授权,适用于以下场景:
库表级权限隔离:当业务对同一数据库下不同集合(Collection)有独立读写隔离需求时(如订单库下 order_main 仅读、order_log 可写),通过自定义角色精确限定到目标集合,避免使用 readWrite 等粗粒度角色导致越权。
命令级权限管控:当业务仅需账号执行特定操作(如仅 findinsert,不允许 dropupdate)时,通过自定义角色组合具体 Action,将权限范围严格收敛到业务实际需要的命令集。
复用与继承授权模板:将通用授权组合(如"运营查询角色"包含多个常用查询库的只读权限)封装为自定义角色,新账号直接绑定该角色,避免重复配置,并在角色权限调整时同步更新所有绑定账号。
存量内核角色管理:通过 mongo shell 或驱动直接在 MongoDB 内核中创建的自定义角色,可在控制台统一查看和管理,便于迁移上云后的角色资产盘点。

功能说明

角色管理模块提供角色查看、自定义角色全生命周期管理两类能力:
角色查看:在角色列表中集中展示所有内置角色和自定义角色,包含角色名、类别、授权范围等信息。
创建自定义角色:基于全局角色、数据库角色、自定义角色继承,以及全局 Action、数据库 Action、集合 Action 六种权限来源,组合生成一个新的自定义角色。
修改自定义角色:调整自定义角色已配置的权限项,修改后对所有绑定该角色的账号同步生效。
删除自定义角色:清理不再使用的自定义角色,释放角色名空间。
说明:
MongoDB RBAC 权限模型由 User(账号)、Role(角色)、Privilege(权限)、Resource(资源)四要素构成。其中 Privilege = Action(操作命令) + Resource(资源范围)。角色管理操作的对象是 Role,账号与角色的绑定操作在 创建账号 或修改账号权限时完成。

使用须知

创建、修改、删除角色后,系统需要2分钟进行后台配置才能生效,请稍作等待后再使用相关账号连接数据库。
控制台创建的自定义角色默认存储在 admin 库;通过 mongo shell 或驱动直接在非 admin 库创建的自定义角色也支持在角色列表中展示和管理。
内置角色由 MongoDB 提供,仅支持查看,不支持修改和删除。
修改自定义角色的权限会同步影响所有绑定该角色的账号,建议修改前先确认账号清单和业务影响范围。

前提条件

云数据库 MongoDB 副本集实例或分片实例的状态为运行中
已规划好自定义角色的授权范围,明确需要覆盖的数据库、集合或操作命令。
如需通过"自定义角色继承"组合多个已有角色,需提前确认被继承角色的权限范围。

角色类别说明

在创建账号或创建自定义角色时,可选的角色分为三大类别:数据库角色、全局角色、自定义角色。三类角色的资源约束和可选范围如下表所示。
角色类别
作用范围
适用场景
数据库角色
单个数据库下的全部集合
单库读写、单库管理
全局角色
实例内全部数据库或整个集群
跨库读写、集群管理、备份恢复
自定义角色
由角色定义决定,可精确到集合和 Action
库表级精细授权、命令级权限管控

数据库角色

数据库角色作用于单个数据库,常用于普通业务账号的读写授权。
角色名
功能含义
典型使用场景
read
在指定数据库内执行查询操作,可读取所有非系统集合的数据。
业务只读账号、报表查询账号、运营数据查询账号。
readWrite
在指定数据库内执行读写操作,包含查询、插入、更新、删除以及集合管理。
业务读写账号,是最常用的应用接入角色。
dbOwner
在指定数据库内拥有最高权限,包含 readWrite 的全部能力,并可进行用户管理和数据库管理操作。
单库管理员、独立业务线 DBA。
userAdmin
在指定数据库内管理账号和角色(创建、修改、删除),但不具备数据读写能力。
数据库权限管理员,与数据使用人员职责分离。
dbAdmin
在指定数据库内执行管理操作,如创建索引、查看统计信息、修改集合结构,但不具备数据读写权限。
性能优化人员、DBA 运维账号。

全局角色

全局角色作用于实例内的所有数据库整个集群,按授权强度从低到高分为四个组,可根据业务场景选择最合适的组。

第一组:跨库读写和管理

角色名
功能含义
典型使用场景
readAnyDatabase
对实例内所有数据库具有读权限,等同于在每个数据库都绑定 read 角色。
全局只读账号、跨库报表分析账号。
readWriteAnyDatabase
对实例内所有数据库具有读写权限,等同于在每个数据库都绑定 readWrite 角色。
跨多库的业务账号、数据迁移账号。
userAdminAnyDatabase
对实例内所有数据库具有账号和角色管理权限,但不具备数据读写能力。
全局权限管理员。
dbAdminAnyDatabase
对实例内所有数据库具有管理操作权限(索引、统计、集合结构),但不具备数据读写能力。
全局 DBA 运维账号。

第二组:超高权限角色(请谨慎授予)

注意:
超高权限角色(root__system)可对实例进行任意操作,建议仅在应急运维、迁移等特定场景下短期授予,不建议长期分配给业务账号。directShardOperations 绕过了 mongos 的统一路由,误用可能导致集群无法正常工作甚至数据损坏,请仅在腾讯云技术支持指导下使用。
角色名
功能含义
典型使用场景
root
拥有实例几乎所有的内置角色权限,可对实例进行任意操作。
应急运维、故障处理。不建议长期分配给业务账号
__system
MongoDB 内部专用角色,可对集群内任意对象执行任意操作。
仅供 MongoDB 内部系统调用。不建议授予任何用户账号

第三组:集群管理类

注意:
directShardOperations 绕过了 mongos 的统一路由,误用可能导致集群无法正常工作甚至数据损坏,请仅在腾讯云技术支持指导下使用。
角色名
功能含义
典型使用场景
clusterManager
在集群上执行管理和监控操作(如配置分片、添加节点),不包含数据访问权限。
集群运维账号。
clusterAdmin
集群最高管理权限,组合 clusterManagerclusterMonitorhostManager 三个角色的全部能力。
集群级管理员。
clusterMonitor
对集群进行只读监控访问,可查看集群运行状态、节点信息、慢日志等。
监控采集账号、巡检账号。
hostManager
对集群中的服务器进行运维操作(如关闭节点、刷新配置)。
集群运维账号。
directShardOperations
允许直接连接分片节点执行运维命令(仅 MongoDB 8.0及以上版本支持)。
仅在维护操作或腾讯云技术支持指导下使用。误用可能导致集群异常或数据损坏
enableSharding
允许对数据库启用分片以及对集合进行分片操作。
分片集群初始化账号。
searchCoordinator
协调 Atlas Search 等搜索类工作负载所需的集群权限。
Atlas Search 场景的运维账号。

第四组:备份恢复类

角色名
功能含义
典型使用场景
backup
提供使用备份工具(如 mongodump)对实例进行全量备份所需的最小权限集。
备份工具账号。
restore
提供使用恢复工具(如 mongorestore)将备份数据恢复到实例所需的权限集。
恢复工具账号。

操作步骤

步骤一:进入角色管理页面

1. 登录 MongoDB 控制台
2. 在左侧导航栏 MongoDB 的下拉列表中,选择副本集实例分片实例(两者操作类似)。
3. 在右侧实例列表页面上方,选择地域。
4. 在实例列表中,找到目标实例。
5. 单击目标实例 ID,进入实例详情页面。
6. 选择数据库管理页签,单击角色管理,进入角色列表页面。

步骤二:查看角色列表

在角色列表页面,集中展示当前实例的全部内置角色和自定义角色。列表字段说明如下表。

字段名称
字段说明
角色名
角色的唯一标识。
内置角色名为 MongoDB 标准角色名(如 readWrite)。
自定义角色名为创建时设定的名称。
角色类别
取值为数据库角色全局角色自定义角色三类。
所属数据库
角色所属的数据库名称。对于全局角色和部分特定内置角色,通常归属于 admin 数据库。
授权角色和命令
仅自定义角色展示该字段,列出该角色继承的角色清单和直接配置的 Action 清单。内置角色该字段为‘--’。
操作
自定义角色支持修改删除操作;内置角色仅支持查看操作。
说明:
列表的默认排序规则如下:
自定义角色排在前,方便用户优先识别业务自定义的角色资产。
同类别角色按角色名首字母升序排列

步骤三:创建自定义角色

在角色列表页面,单击新建角色,在新建角色窗口完成以下配置后单击确定,即可完成创建。等待 2 分钟系统配置生效后,可在创建账号或修改账号权限时选择该自定义角色。

1. 角色名:在输入框,设置自定义角色的名称。角色创建后不支持修改。
字符长度为1 - 32;
仅支持字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短划线(-)。例如 audit_readonly
注意:
自定义角色名在同一实例内必须唯一,且不能与 MongoDB 内置角色名重复。
2. 权限配置:自定义角色的权限来自以下六种来源,可单选或组合使用。
单击添加一条,可为同一角色叠加多种权限来源的授权记录。
在选择数据库角色数据库操作时,可以在选择 Database 下拉框单击创建,直接预设新数据库的授权记录,新建项排在列表第 1 位。
在选择 collection 操作时,可以在选择 Database 选择 Collection 下拉框分别单击创建,直接预设新数据库与集合的授权记录,新建项排在列表第1位。
说明:
此处的"新建数据库"和"新建集合"仅在控制台预设授权记录,并不会立即在 MongoDB 中创建物理资源。物理资源会在首次写入数据时由 MongoDB 自动创建。
权限来源
说明
与账号直接绑定角色的差异
全局角色
继承一个或多个系统预设的全局角色权限,其权限效力作用于实例下的所有数据库。
与账号直接绑定角色的行为一致。具体信息,请参见 创建账号
全局操作
按操作命令(Action)粒度授予全局维度的管理权限(如 listDatabases、shutdown)。
账号直接绑定角色时不支持此粒度。
数据库角色
继承一个或多个特定数据库的角色权限,其权限效力作用于指定的数据库。
与账号直接绑定角色的行为一致。具体信息,请参见 创建账号
数据库操作
按操作命令(Action)粒度授予指定数据库维度的管理权限(如 listCollections、createCollection)。
账号直接绑定角色时不支持此粒度。
collection 操作
按操作命令(Action)粒度授予指定数据库下特定集合(Collection)的数据操作权限(如 find、insert、update、remove)。
账号直接绑定角色时不支持此粒度。
自定义角色
继承一个或多个已存在的其他自定义角色权限,实现权限的层级嵌套与复用。
说明:
自定义角色继承不支持循环引用(如角色 A 继承 B,B 又继承 A),系统会在创建时进行校验拦截。
与账号直接绑定角色的行为一致。具体信息,请参见 创建账号

步骤四:修改自定义角色

在角色列表页面,找到目标自定义角色,单击操作列的编辑,在修改角色窗口调整权限项。修改流程与创建自定义角色一致,修改完成后单击确定保存。
不可修改项角色名一旦创建即不可变更。如需变更角色名,请删除原角色后重新创建。
可修改项:可对其六类权限来源(全局角色、全局操作、数据库角色、数据库操作、集合操作、自定义角色)的绑定关系与具体规则进行编辑与更新。

说明:
修改或删除角色后,建议在2 - 5分钟内通过该角色绑定的账号执行一次连接和操作验证,确认权限调整符合预期。

步骤五:删除自定义角色

在角色列表页面,找到目标自定义角色,单击操作列的删除,在弹出的删除角色窗口确认操作。
说明:
内置角色属于系统预设,不支持删除。 自定义角色删除后无法恢复,请务必谨慎操作。在删除自定义角色前,建议对该角色的权限配置进行备份。您可以通过“权限预览”功能,复制对应的 MongoDB 命令行作为配置备份。

相关 API

API 接口名称
描述
DescribeInstanceRoles
查询当前实例的角色列表
CreateInstanceRole
创建自定义角色
UpdateInstanceRole
修改自定义角色
DeleteInstanceRole
删除自定义角色

常见问题

内置角色和自定义角色有什么区别?

内置角色由 MongoDB 提供,覆盖通用授权场景(如 readreadWrite),用户仅可查看和使用,不能修改或删除其权限定义。自定义角色由用户根据业务需要创建,支持组合多种权限来源(全局角色 / 数据库角色 / Action / 已有自定义角色),并可精确到数据库、集合和单个操作命令的粒度。当内置角色无法满足业务的精细授权需求时,建议使用自定义角色。

已绑定到账号的自定义角色被删除后,账号还能继续访问数据库吗?

不能。自定义角色被删除后,绑定该角色的账号将立即失去通过该角色获得的所有权限。建议在删除自定义角色前,先通过 账号管理 确认绑定关系并完成角色替换或解绑操作。

自定义角色支持继承其他自定义角色吗?

支持。在创建或修改自定义角色时,可在"自定义角色"权限来源中选择一个或多个已有的自定义角色。被继承的角色权限会合并到当前角色中。但系统不允许循环引用,即角色 A 不能继承一个已经直接或间接继承了 A 的角色。

通过 mongo shell 创建的自定义角色能在控制台修改吗?

可以。控制台会自动识别非 admin 库的自定义角色并展示在角色列表中,对应的修改、删除操作在控制台和内核之间保持数据一致。建议统一通过控制台进行角色管理,避免控制台与内核中同名角色的权限差异。

修改自定义角色的权限后多久生效?

系统需要2分钟完成后台配置才会生效。在此期间,绑定该角色的账号执行的操作仍以原权限为准。建议在业务低峰期进行权限修改,并在生效后通过一个测试账号验证调整结果。

相关文档