操作场景
在云数据库 MongoDB 中,角色(Role)是权限(Privilege)的抽象集合,账号的所有数据访问权限均通过绑定角色获得。MongoDB 提供了一组内置角色用于满足通用授权需求;当内置角色无法覆盖业务的精细授权场景时,可以创建自定义角色来组合所需的操作命令(Action)和资源范围(Resource),实现库表级甚至命令级的精细授权,适用于以下场景:
库表级权限隔离:当业务对同一数据库下不同集合(Collection)有独立读写隔离需求时(如订单库下
order_main 仅读、order_log 可写),通过自定义角色精确限定到目标集合,避免使用 readWrite 等粗粒度角色导致越权。命令级权限管控:当业务仅需账号执行特定操作(如仅
find、insert,不允许 drop、update)时,通过自定义角色组合具体 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 | 集群最高管理权限,组合 clusterManager、clusterMonitor、hostManager 三个角色的全部能力。 | 集群级管理员。 |
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 提供,覆盖通用授权场景(如
read、readWrite),用户仅可查看和使用,不能修改或删除其权限定义。自定义角色由用户根据业务需要创建,支持组合多种权限来源(全局角色 / 数据库角色 / Action / 已有自定义角色),并可精确到数据库、集合和单个操作命令的粒度。当内置角色无法满足业务的精细授权需求时,建议使用自定义角色。已绑定到账号的自定义角色被删除后,账号还能继续访问数据库吗?
自定义角色支持继承其他自定义角色吗?
支持。在创建或修改自定义角色时,可在"自定义角色"权限来源中选择一个或多个已有的自定义角色。被继承的角色权限会合并到当前角色中。但系统不允许循环引用,即角色 A 不能继承一个已经直接或间接继承了 A 的角色。
通过 mongo shell 创建的自定义角色能在控制台修改吗?
可以。控制台会自动识别非
admin 库的自定义角色并展示在角色列表中,对应的修改、删除操作在控制台和内核之间保持数据一致。建议统一通过控制台进行角色管理,避免控制台与内核中同名角色的权限差异。修改自定义角色的权限后多久生效?
系统需要2分钟完成后台配置才会生效。在此期间,绑定该角色的账号执行的操作仍以原权限为准。建议在业务低峰期进行权限修改,并在生效后通过一个测试账号验证调整结果。
相关文档
查看账号列表
创建账号