《本文档主要翻译自mongodb官方文档Built-In Roles》
https://docs.mongodb.com/manual/core/security-built-in-roles/
Mongodb根据数据库的需要,提供了一些不同访问级别的内置角色。在每一个数据库中都存在 database user roles和database administration roles两种角色。admin 数据库包含具有新增用户权限的角色
Database user rolse
每一个数据库都包含以下两种角色
角色 | 简要描述 |
read | 提供了读取所有非系统集合和system.indexes,system.js,system.namespaces集合的权限 |
readWrite | 包含read的所有权限,并且具有修改非系统集合的权限 |
Database Administrator Roles
每一个数据库都包含以下数据库管理角色
角色 | 简要描述 |
dbAdmin | 提供一些创建schema,index等管理型任务的权限,这个角色不能给用户或者角色分配特殊权限 |
userAdmin | 提供给当前数据库创建用户,分配用户权限的功能。由于它有这种特殊的功能,他也能给自己分配一些特殊权限,如果所在的库是admin数据库,此种用户角色就成了超级角色 |
dbOwner | 提供一些管理数据库的功能。这种角色综合了readWrite,dbAdmin和user Admin这些角色的权限 |
Cluster Administration Roles(集群管理员角色)
admin数据库提供了是一个特殊的数据库,它存储了整个系统管理的信息和功能。这些角色包括但不限于复制和分片集群管理功能。
角色 | 简要描述 |
clusterAdmin | 具有最大的集群访问权限。这个角色综合 clusterManager,clusterMonitor 和hostManager的功能,并且额外的增加了删除数据库的功能 |
clusterManager | 集群管理角色,能够管理和监视集群中的一些操作,具有这个角色的用户可以访问config和local数据库,分别用于分别和集群复制集的配置 |
clusterMonitor | 集群监控角色,只能访问一些类似MongoDB CloudManager和OpsManager 之类的监控工具 |
hostManager | 管理和监控各个服务实例 |
Backup and Restoration Roles(备份和恢复角色)
admin数据库提供了备份和恢复数据库的两种角色
角色 | 简要描述 |
backup | 提供了足够的权限备份数据库,可以运行MongoDB Cloud Manager 备份客户端和Ops Manager备份客户端,或者可以使用mongodump程式 |
restore | 在没有oplogReplay甚至没有system.profile的情况下使用mongorestore恢复数据库 |
All-Database Roles
admin数据库提供了不管是是单机环境还是集群环境下的针对mongod实例的一些权限
角色 | 简要描述 |
readAnyDatabase | 提供读取读取权限,或者是集群中所有机器的读取权限。并且提供了列出集群中所有机器的权限 |
readWriteAnyDatabase | 提供了集群中所有机器的读写权限,并且有列出集群所有数据库的权限 |
userAdminAnyDatabase | 在单机环境下,和userAdmin角色的权限一样,但是它可以用在集群中 |
dbAdminAnyDatabase | 单机中和dbAdmin角色功能一样,但是它可以用在集群中,并且增加了列出所有数据库(listDatabases)的功能 |
Superuser Roles(超级用户角色)
下面角色属于超级用户,对所有资源均有访问权限,具有最高权限
角色 | 简要描述 |
root | 具有访问数据库所有资源的权限,超级用户 |