MongoDB 内置角色

MongoDB 提供了不同访问级别的内置角色。 数据库用户角色(Database User Roles)和数据库管理角色(Database Administration Roles)存在于每个数据库中, 而其他的他的角色存在于 admin 数据库中。

数据库用户角色(Database User Roles)

每个数据库都包含以下两个角色:

  1. read: 提供读取所有非系统集合和以及system.indexes,system.js, system.namespaces集合的权限。
  2. readWrite: 提供 read 角色的权限,以及所有非系统集合和 system.js 集合的写权限

数据库管理角色(Database Administration Roles)

每个数据库都包含以下数据库管理角色

  1. dbAdmin: 提供类似于schema-related , 索引, 信息统计等管理权限。此角色不提供用于用户管理,角色管理的权限
  2. userAdmin: 提供在当前数据库上创建和修改角色和用户的权限。 由于userAdmin角色允许用户向任何用户(包括他们自己)授予任何权限,所以该角色还间接地提供对数据库的超级用户访问权限,或者如果作用于管理数据库的集群。
  3. dbOwner: 提供 readWrite,dbAdmin,userAdmin角色的权限。

集群(Cluster)管理角色(Cluster Administration Roles)

admin 数据库包含以下管理整个系统而不是特定数据库的角色, 这些角色包括但不限于复制集和分片集群管理功能。

  1. clusterAdmin: 提供集群管理访问权限, 此角色组合了由clusterManager,clusterMonitor和hostManager角色授予的权限。 此外,还提供了 dropDatabase 操作权限。
  2. clusterManager: 提供集群管理和监控权限。具有此角色的用户可以访问复制集和分片的 local, config 数据库。
  3. clusterMonitor: 为MongoDB Cloud Manager和Ops Manager监控代理工具提供只读访问权限。
  4. hostManager: 提供监控和管理服务器(servers)的能力。

备份与恢复角色(Backup and Restoration Roles)

  1. backup: 提供备份数据所需的权限。 此角色给MongoDB Cloud Manager,Ops Manager以及mongodump等工具备份数据足够的权限。
  2. restore: 提供 mongorestore 工具不带–oplogReplay 选项或没有system.profile数据时恢复数据所需的权限(Provides privileges needed to restore data with mongorestore
    without the –oplogReplay
    option or without system.profile
    collection data).

All-Database Roles(All-Database Roles)

  1. readAnyDatabase: 拥有除了 local 和 config 以外的所有数据的 read 角色权限,此外还提供 listDatabases 操作权限(Provides the same read-only permissions as read, except it applies to all but the local and config databases in the cluster. The role also provides the listDatabases action on the cluster as a whole.)。
  2. readWriteAnyDatabase: 拥有除了 local 和 config 以外的所有数据的 read, readWriteAnyDatabase 角色权限,此外还提供 listDatabases 操作权限( Provides the same read and write permissions as readWrite, except it applies to all but the local and config databases in the cluster. The role also provides the listDatabases action on the cluster as a whole)。
  3. userAdminAnyDatabase: 拥有除了 local 和 config 以外的所有数据的 userAdmin 角色权限 (Provides the same access to user administration operations as userAdmin, except it applies to all but the local and config databases in the cluster)。
  4. dbAdminAnyDatabase: 拥有除了 local 和 config 以外的所有数据的 dbAdmin角色权限, 此外还提供 listDatabases 操作权限( Provides the same access to database administration operations as dbAdmin, except it applies to all but the local and config databases in the cluster. The role also provides the listDatabases action on the cluster as a whole)。

注意,local 与 config 数据库不能创建用户 ,只能通过在admin数据库创建用户并赋予相应的数据库访问权限,如下:

>>use admin
switched to db admin
>>show users
{
    "_id" : "admin.local_user",
    "user" : "local_user",
    "db" : "admin",
    "roles" : [
        {
            "role" : "read",
            "db" : "local"
        }
    ]
}

超级角色(Superuser Roles)

  1. root: readWriteAnyDatabase,dbAdminAnyDatabase,userAdminAnyDatabase,clusterAdmin,restore和backup的组合

内部角色(Internal Role)

  1. __system: 提供对数据库中任何对象执行任何操作的权限。
    原文作者:非典型程序员
    原文地址: https://www.jianshu.com/p/d60c09e45816
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞