MongoDB 数据库角色

更新时间:2022-12-20 16:05
1 数据库用户角色
每个数据库都包含下列的角色:
  • read :提供读取所有的非系统集合的能力,也能读取以下系统集合:system.indexes,system.js,system.namespaces
  • readWrite :提供所有读权限另外还能修改非系统集合和system.js集合

2 数据库管理角色
每个数据库都包含以下数据库管理员角色
  • dbAdmin :提供执行管理任务的能力,比如schema相关的任务,索引和聚合分析。这个角色不能对用户和角色做授权管理
  • dbOwner :数据库拥有者可以在数据库上执行任何管理动作,这个角色组合了readWrite,dbAdmin,userAdmin角色的特权
  • userAdmin :在当前数据库中创建和修改角色和用户的能力,userAdmin角色允许用户授予任何特权给任何用户,包括他们自己,此角色还可以直接提供superuser 访问任何数据库,甚至是admin数据库,集群。

3 集群管理角色
admin数据库包括下列角色来管理整个系统而不仅仅是单个数据库,这些角色包括但不限于副本集和分片集群管理功能
  • clusterAdmin :提供最大的机器管理访问权限,此角色组合了clusterManager,clusterMonitor和hostManager角色,另外此角色还提供dropDatabase动作
  • clusterManager :在机器上能进行管理和监控动作。拥有此角色的用户可以访问config和local数据库,它们分别用于分片和副本集
  • clusterMonitor :为监控工具提供只读权限,比如MongoDB cloud manager 和ops manager 监控代理
  • hostManager :提供监控和管理服务器的能力

4 备份和恢复角色
admin数据库包含下列角色用来备份和恢复数据
  • backup :提供最小的备份数据的权限,该角色提供了足够的权限用于:MongoDB cloud manager 备份代理、ops manager 备份代理或者用于mongodump备份整个mongod实例
  • restore :提供权限用来从备份恢复数据,但是不包括system.profile集合数据。此角色提供了足够的权限用于使用不带--oplogReplay选项的mongorestore恢复数据

5 所有数据库角色
下列角色在admin数据库上都可获取到,并能应用于所有数据库除了local和config
  • readAnyDatabase :在所有的数据库上提供和read特权一样只读的权限,除了local和config
  • readWriteAnyDatabase :在所有的数据库桑提供和readWrite一样的权限,除了local和config
  • userAdminAnyDatabase :在所有的数据库桑提供和userAdmin一样的权限,除了local和config
  • dbAdminAnyDatabase :在所有的数据库桑提供和dbAdmin一样的权限,除了local和config,此角色还能在集群上执行listDatabases命令

6 超级用户角色
  • root :提供readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin, restore, backup角色的组合权限

7 内部角色
  • __system:提供对数据库中任何对象采取任何操作的特权。