Built-In Roles内置角色
On this page本页内容
MongoDB grants access to data and commands through role-based authorization and provides built-in roles that provide the different levels of access commonly needed in a database system. MongoDB通过基于角色的授权授予对数据和命令的访问权限,并提供内置角色,提供数据库系统中通常需要的不同级别的访问权限。You can additionally create user-defined roles.您还可以创建用户定义的角色。
A role grants privileges to perform sets of actions on defined resources. 角色授予对定义的资源执行一组操作的权限。A given role applies to the database on which it is defined and can grant access down to a collection level of granularity.给定的角色应用于在其上定义它的数据库,并且可以授予访问权限,访问权限可以降低到粒度的集合级别。
Each of MongoDB's built-in roles defines access at the database level for all non-system collections in the role's database and at the collection level for all system collections.MongoDB的每个内置角色都定义了在数据库级别访问角色数据库中的所有非系统集合,以及在集合级别访问所有系统集合。
MongoDB provides the built-in database user and database administration roles on every database. MongoDB为每个数据库提供了内置的数据库用户和数据库管理角色。MongoDB provides all other built-in roles only on the MongoDB只在admin
database.admin
数据库上提供所有其他内置角色。
This section describes the privileges for each built-in role. 本节介绍每个内置角色的权限。You can also view the privileges for a built-in role at any time by issuing the 您还可以通过发出rolesInfo
command with the showPrivileges
and showBuiltinRoles
fields both set to true
.rolesInfo
命令随时查看内置角色的权限,其中showPrivileges
和showBuiltinRoles
字段均设置为true
。
Database User Roles数据库用户角色
Every database includes the following client roles:每个数据库都包括以下客户端角色:
read
-
Provides the ability to read data on all non-system collections and the提供读取所有非系统集合和system.js
collection.system.js
集合上的数据的能力。NoteStarting in MongoDB 4.2, the role no longer provides privileges to access the从MongoDB 4.2开始,该角色不再提供直接访问system.namespaces
collection directly.system.namespaces
集合的权限。Direct access to the collection has been deprecated since MongoDB 3.0.自MongoDB 3.0以来,对该集合的直接访问一直被弃用。In earlier versions, the role provided the aforementioned privilege actions on the在早期版本中,角色对system.namespaces
collection, thereby allowing direct access.system.namespaces
集合提供了上述权限操作,从而允许直接访问。The role provides read access by granting the following actions:该角色通过授予以下操作来提供读取访问权限:changeStream
collStats
dbHash
dbStats
find
killCursors
listCollections
listIndexes
listSearchIndexes
If the user does not have the如果用户没有listDatabases
privilege action, users can run thelistDatabases
command to return a list of databases for which the user has privileges (including databases for which the user has privileges on specific collections) if the command is run withauthorizedDatabases
option unspecified or set totrue
.listDatabases
权限操作,则如果在authorizedDatabases
选项未指定或设置为true
的情况下运行该命令,则用户可以运行listDatabases
命令以返回用户具有权限的数据库列表(包括用户在特定集合上具有权限的数据库)。
readWrite
-
Provides all the privileges of the提供read
role plus ability to modify data on all non-system collections and thesystem.js
collection.read
角色的所有权限,以及修改所有非系统集合和system.js
集合上的数据的能力。The role provides the following actions on those collections:该角色对这些集合提供以下操作:
Database Administration Roles数据库管理角色
Every database includes the following database administration roles:每个数据库都包括以下数据库管理角色:
dbAdmin
-
Provides the ability to perform administrative tasks such as schema-related tasks, indexing, and gathering statistics. This role does not grant privileges for user and role management.提供执行管理任务的能力,例如与架构相关的任务、索引和集合统计信息。此角色不授予用户和角色管理权限。Specifically, the role provides the following privileges:具体而言,该角色提供以下权限:Resource资源Permitted Actions允许的操作system.profile
NoteAside
Starting in version 4.2, MongoDB removes the从4.2版本开始,MongoDB删除了system.indexes
andsystem.namespaces
collections.system.indexes
和system.namespaces
集合。As such, the因此,dbAdmin
role no longer provides privileges to access these collections. Direct access to these collections has been deprecated since MongoDB 3.0.dbAdmin
角色不再提供访问这些集合的权限。自MongoDB 3.0以来,对这些集合的直接访问一直被弃用。In earlier versions, the在早期版本中,dbAdmin
role provides the aforementioned privilege actions (exceptdropCollection
andcreateCollection
) onsystem.indexes
andsystem.namespaces
collections, thereby allowing direct access to thesystem.indexes
andsystem.namespaces
collections.dbAdmin
角色在system.indexes
和system.namespaces
集合上提供上述权限操作(dropCollection
和createCollection
除外),从而允许直接访问system.indexes
和system.namespaces
集合。All non-system collections (i.e. database resource)所有非系统集合(即数据库资源)For these collections,对于这些集合,dbAdmin
does not include full read access (i.e.find
).dbAdmin
不包括完全读取访问权限(即find
)。
dbOwner
-
The database owner can perform any administrative action on the database.数据库所有者可以对数据库执行任何管理操作。This role combines the privileges granted by the此角色结合了readWrite
,dbAdmin
anduserAdmin
roles.readWrite
、dbAdmin
和userAdmin
角色授予的权限。
userAdmin
-
Provides the ability to create and modify roles and users on the current database.提供在当前数据库中创建和修改角色和用户的功能。Since the由于userAdmin
role allows users to grant any privilege to any user, including themselves, the role also indirectly provides superuser access to either the database or, if scoped to theadmin
database, the cluster.userAdmin
角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接地为superuser
提供对数据库的访问,或者如果作用域为admin数据库,则提供对集群的访问。TheuserAdmin
role explicitly provides the following actions:userAdmin
角色明确提供以下操作:changeCustomData
changePassword
createRole
createUser
dropRole
dropUser
grantRole
revokeRole
setAuthenticationRestriction
viewRole
viewUser
WarningIt is important to understand the security implications of granting the了解授予userAdmin
role: a user with this role for a database can assign themselves any privilege on that database.userAdmin
角色的安全含义很重要:对于数据库具有此角色的用户可以为自己分配该数据库的任何权限。Granting the在userAdmin
role on theadmin
database has further security implications as this indirectly provides superuser access to a cluster.admin
数据库上授予userAdmin
角色会带来进一步的安全影响,因为这会间接地为超级用户提供对集群的访问。With使用admin
scope a user with theuserAdmin
role can grant cluster-wide roles or privileges includinguserAdminAnyDatabase
.admin
作用域,具有userAdmin
角色的用户可以授予集群范围的角色或权限,包括userAdminAnyDatabase
。
Cluster Administration Roles群集管理角色
The admin
database includes the following roles for administering the whole system rather than just a single database. admin
数据库包括以下用于管理整个系统而不仅仅是单个数据库的角色。These roles include but are not limited to replica set and sharded cluster administrative functions.这些角色包括但不限于副本集和分片集群管理功能。
clusterAdmin
-
Provides the greatest cluster-management access.提供最大的群集管理访问权限。This role combines the privileges granted by the此角色组合了clusterManager
,clusterMonitor
, andhostManager
roles.clusterManager
、clusterMonitor
和hostManager
角色授予的权限。Additionally, the role provides the此外,该角色还提供dropDatabase
action.dropDatabase
操作。
clusterManager
-
Provides management and monitoring actions on the cluster.提供对群集的管理和监视操作。A user with this role can access the具有此角色的用户可以访问分别用于分片和复制的config
andlocal
databases, which are used in sharding and replication, respectively.config
数据库和local
数据库。Resource资源Actions操作cluster addShard
appendOplogNote
applicationMessage
checkMetadataConsistency
(New in version 7.0)cleanupOrphaned
flushRouterConfig
getDefaultRWConcern
(New in version 4.4)listSessions
listShards
All databases clearJumboFlag
(New in 4.2.3)enableSharding
refineCollectionShardKey
(New in 4.4)moveChunk
splitVector
clusterManager
provides additional privileges for the为config
andlocal
databases.config
数据库和local
数据库提供了额外的权限。On the在config
database, permits the following actions:config
数据库上,允许执行以下操作:Resource资源Actions操作All non-system collections in theconfig
databaseconfig
数据库中的所有非系统集合system.js
NoteAside
Starting in version 4.2, MongoDB removes the从4.2版本开始,MongoDB删除了system.indexes
andsystem.namespaces
collections.system.indexes
和system.namespaces
集合。As such, the因此,clusterManager
role no longer provides privileges to access these collections.clusterManager
角色不再提供访问这些集合的权限。Direct access to these collections has been deprecated since MongoDB 3.0.自MongoDB 3.0以来,对这些集合的直接访问一直被弃用。In earlier versions, the在早期版本中,clusterManager
role provides the aforementioned privilege actions on thesystem.indexes
andsystem.namespaces
collections, thereby allowing direct access to thesystem.indexes
andsystem.namespaces
collections.clusterManager
角色在system.indexes
和system.namespaces
集合上提供上述权限操作,从而允许直接访问system.indexes
和system.namespaces
集合。On the在local
database, permits the following actions:local
数据库上,允许执行以下操作:Resource资源Actions操作All non-system collections in thelocal
databaselocal
数据库中的所有非系统集合system.replset
collection集合
clusterMonitor
-
Provides read-only access to monitoring tools, such as the MongoDB Cloud Manager提供对监控工具的只读访问,如MongoDB Cloud Managerand Ops Manager monitoring agent.
和Ops Manager监控代理。
Permits the following actions on the cluster as a whole:允许对整个集群执行以下操作:checkFreeMonitoringStatus
connPoolStats
getCmdLineOpts
getDefaultRWConcern
(New in version 4.4)(4.4版新增)getLog
getParameter
getShardMap
hostInfo
inprog
listDatabases
Permits the following actions on all databases in the cluster:允许对群集中的所有数据库执行以下操作:Permits the允许对群集中的所有find
action on allsystem.profile
collections in the cluster.system.profile
集合执行find
操作。On the在config
database, permits the following actions:config
数据库上,允许执行以下操作:Resource资源Actions操作All non-system collections in theconfig
databaseconfig
数据库中的所有非系统集合collStats
dbHash
dbStats
find
getShardVersion
indexStats
killCursors
listCollections
listIndexes
listSearchIndexes
planCacheRead
system.js
collectioncollStats
dbHash
dbStats
find
killCursors
listCollections
listIndexes
planCacheRead
NoteAside
Starting in version 4.2, MongoDB removes the从4.2版本开始,MongoDB删除了system.indexes
andsystem.namespaces
collections.system.indexes
和system.namespaces
集合。As such, the因此,clusterMonitor
role no longer provides privileges to access these collections.clusterMonitor
角色不再提供访问这些集合的权限。Direct access to these collections has been deprecated since MongoDB 3.0.自MongoDB 3.0以来,对这些集合的直接访问一直被弃用。
In earlier versions, the role provides the aforementioned privilege actions on the在早期版本中,角色对system.indexes
andsystem.namespaces
collections, thereby allowing direct access to thesystem.indexes
andsystem.namespaces
collections.system.indexes
和system.namespaces
集合提供上述权限操作,从而允许直接访问system.indexes
和system.namespaces
集合。On the在local
database, permits the following actions:local
数据库上,允许执行以下操作:Resource资源Actions操作All collections in thelocal
databaselocal
数据库中的所有集合collStats
dbHash
dbStats
find
getShardVersion
indexStats
killCursors
listCollections
listIndexes
listSearchIndexes
planCacheRead
system.js
collection集合collStats
dbHash
dbStats
find
killCursors
listCollections
listIndexes
listSearchIndexes
planCacheRead
Starting in version 4.2, MongoDB removes the从4.2版本开始,MongoDB删除了system.indexes
andsystem.namespaces
collections.system.indexes
和system.namespaces
集合。As such, the因此,clusterMonitor
role no longer provides privileges to access these collections.clusterMonitor
角色不再提供访问这些集合的权限。Direct access to these collections has been deprecated since MongoDB 3.0.自MongoDB 3.0以来,对这些集合的直接访问一直被弃用。
In earlier versions, the role provides the aforementioned privilege actions on the在早期版本中,角色对system.indexes
andsystem.namespaces
collections, thereby allowing direct access to thesystem.indexes
andsystem.namespaces
collections.system.indexes
和system.namespaces
集合提供上述权限操作,从而允许直接访问system.indexes
和system.namespaces
集合。system.replset
,system.profile
,find
hostManager
-
Provides the ability to monitor and manage servers.提供监视和管理服务器的能力。On the cluster as a whole, provides the following actions:在整个集群上,提供以下操作:rotateCertificates
(New in version 5.0)setParameter
shutdown
touch
unlock
Changed in version 4.4.4.4版更改。Starting in version 4.4,从版本4.4开始,hostManager
no longer provides thecpuProfiler
privilege action on the cluster.hostManager
不再在集群上提供cpuProfiler
权限操作。On all databases in the cluster, provides the following actions:在群集中的所有数据库上,提供以下操作:
Backup and Restoration Roles备份和恢复角色
The admin
database includes the following roles for backing up and restoring data:admin
数据库包括以下用于备份和恢复数据的角色:
backup
-
Provides minimal privileges needed for backing up data.提供备份数据所需的最低权限。This role provides sufficient privileges to use the MongoDB Cloud Manager此角色提供足够的权限来使用MongoDB Cloud Managerbackup agent, Ops Manager backup agent, or to use
mongodump
to back up an entiremongod
instance.备份代理、Ops Manager备份代理,或使用
mongodump
备份整个mongod
实例。Provides the提供对insert
andupdate
actions on thesettings
collection in theconfig
database.config
数据库中的settings
集合的insert
和update
操作。On在anyResource
, provides theanyResource
上,提供listDatabases
action操作listCollections
action操作listIndexes
action操作listSearchIndexes
action操作
On the cluster as a whole, provides the在整个群集上,提供appendOplogNote
getParameter
listDatabases
serverStatus
(Starting in MongoDB 4.2)(从MongoDB 4.2开始)setUserWriteBlockMode
(Starting in MongoDB 6.0)(从MongoDB 6.0开始)
Provides the对以下内容提供find
action on the following:find
操作:all non-system collections in the cluster, including those in the群集中的所有非系统集合,包括config
andlocal
databasesconfig
数据库和local
数据库中的集合The following system collections in the cluster:群集中的以下系统集合:system.js
, andsystem.profile
Theadmin.system.users
andadmin.system.roles
collectionsadmin.system.users
和admin.system.roles
集合Theconfig.settings
collectionconfig.settings
集合LegacyMongoDB 2.6之前版本的遗留system.users
collections from versions of MongoDB prior to 2.6system.users
集合
Provides the提供对insert
andupdate
actions on theconfig.settings
collection.config.settings
集合的insert
和update
操作。Thebackup
role provides additional privileges to back up thesystem.profile
collection that exists when running with database profiling.backup
角色提供了备份system.profile
文件集合的额外权限,该集合在与数据库分析一起运行时存在。
restore
-
Provides在非系统集合上提供convertToCapped
on non-system collections.convertToCapped
。Provides the necessary privileges to restore data from backups if the data does not include如果数据不包括system.profile
collection data and you runmongorestore
without the--oplogReplay
option.system.profile
集合数据,并且您在不使用--oplogReplay
选项的情况下运行mongorestore
,则提供从备份中恢复数据所需的权限。If the backup data includes如果备份数据包括system.profile
collection data or you run with--oplogReplay
, you need additional privileges:system.profile
集合数据,或者使用--oplogReplay
运行,则需要其他权限:system.profile
If the backup data includes如果备份数据包括system.profile
collection data and the target database does not contain thesystem.profile
collection,mongorestore
attempts to create the collection even though the program does not actually restoresystem.profile
documents.system.profile
集合数据,而目标数据库不包含system.profile
集合,则即使程序实际上没有还原system.profile
文档,mongorestore
也会尝试创建该集合。As such, the user requires additional privileges to perform因此,用户需要额外的权限才能对数据库的系统配置文件集合执行createCollection
andconvertToCapped
actions on thesystem.profile
collection for a database.createCollection
和convertToCapped
操作。
Both the built-in roles内置角色dbAdmin
anddbAdminAnyDatabase
provide the additional privileges.dbAdmin
和dbAdminAnyDatabase
都提供了额外的权限。--oplogReplay
To run with要使用--oplogReplay
, create a user-defined role that hasanyAction
onanyResource
.--oplogReplay
运行,请在anyResource
上创建一个具有anyAction
的用户定义角色。
Grant only to users who must run仅授予必须使用mongorestore
with--oplogReplay
.--oplogReplay
运行mongorestore
的用户。Provides the following action on the cluster as a whole:在整个群集上提供以下操作:Provides the following actions on all non-system collections:对所有非系统集合提供以下操作:bypassDocumentValidation
changeCustomData
changePassword
collMod
convertToCapped
createCollection
createIndex
createRole
createSearchIndexes
createUser
dropCollection
dropRole
dropUser
grantRole
insert
revokeRole
updateSearchIndex
viewRole
viewUser
Provides the following actions on对system.js
collection:system.js
集合提供以下操作:bypassDocumentValidation
collMod
createCollection
createIndex
dropCollection
insert
updateSearchIndex
Provides the following action on对anyResource
:anyResource
提供以下操作:Provides the following actions on all non-system collections on the对config
and thelocal
databases:config
数据库和local
数据库上的所有非系统集合提供以下操作:bypassDocumentValidation
collMod
createCollection
createIndex
dropCollection
insert
updateSearchIndex
Provides the following actions on在admin.system.version
admin.system.version
上提供以下操作bypassDocumentValidation
collMod
createCollection
createIndex
dropCollection
find
insert
updateSearchIndex
Provides the following action on对admin.system.roles
admin.system.roles
提供以下操作Provides the following actions on对admin.system.users
and legacysystem.users
collections:admin.system.users
和旧版system.users
集合提供以下操作:bypassDocumentValidation
collMod
createCollection
createIndex
dropCollection
find
insert
remove
update
updateSearchIndex
Although,尽管restore
includes the ability to modify the documents in theadmin.system.users
collection using normal modification operations, only modify these data using the user management methods.restore
包括使用常规修改操作修改admin.system.users
集合中文档的功能,但只能使用用户管理方法修改这些数据。On the cluster as a whole, provides the following actions:在整个集群上,提供以下操作:bypassWriteBlockingMode
(Staring in MongoDB 6.0)setUserWriteBlockMode
(Starting in MongoDB 6.0)
NoteAside
Starting in version 4.2, MongoDB removes the从4.2版本开始,MongoDB删除了system.namespaces
collection. As such, therestore
role no longer provides privileges to access these collections.system.namespaces
集合。因此,restore
角色不再提供访问这些集合的权限。Direct access to these collections has been deprecated since MongoDB 3.0.自MongoDB 3.0以来,对这些集合的直接访问一直被弃用。In earlier versions, the在早期版本中,restore
role provides the aforementioned privilege actions on thesystem.namespaces
collection, thereby allowing direct access to the collection.restore
角色对system.namespaces
集合提供上述权限操作,从而允许直接访问该集合。
All-Database Roles所有数据库角色
The following roles are available on the 以下角色在admin
database and provide privileges which apply to all databases except local
and config
:admin
数据库上可用,并提供适用于除local
和config
之外的所有数据库的权限:
readAnyDatabase
-
Provides the same read-only privileges as在除read
on all databases exceptlocal
andconfig
.local
和config
之外的所有数据库上提供与read
相同的只读权限。The role also provides the该角色还提供了整个集群上的listDatabases
action on the cluster as a whole.listDatabases
操作。See also the另请参阅clusterManager
andclusterMonitor
roles for access to theconfig
andlocal
databases.clusterManager
和clusterMonitor
角色,以访问配置数据库和本地数据库。
readWriteAnyDatabase
-
Provides the same privileges as在除readWrite
on all databases exceptlocal
andconfig
.local
和config
之外的所有数据库上提供与readWrite
相同的权限。The role also provides:该角色还提供:the整个集群上的listDatabases
action on the cluster as a wholelistDatabases
操作thecompactStructuredEncryptionData
actioncompactStructuredEncryptionData
操作
See also the另请参阅clusterManager
andclusterMonitor
roles for access to theconfig
andlocal
databases.clusterManager
和clusterMonitor
角色,以访问配置数据库和本地数据库。
userAdminAnyDatabase
-
Provides the same access to user administration operations as在除userAdmin
on all databases exceptlocal
andconfig
.local
和config
之外的所有数据库上,提供与userAdmin
相同的对用户管理操作的访问权限。userAdminAnyDatabase
also provides the following privilege actions on the cluster:还提供了对群集的以下权限操作:The role provides the following privilege actions on the该角色对system.users
andsystem.roles
collections on theadmin
database, and on legacysystem.users
collections from versions of MongoDB prior to 2.6:admin
数据库上的system.users
和system.roles
集合,以及2.6之前版本的MongoDB中的遗留system.users
集合提供以下权限操作:collStats
createIndex
createSearchIndexes
dbHash
dbStats
dropIndex
dropSearchIndex
find
killCursors
planCacheRead
TheuserAdminAnyDatabase
role does not restrict the privileges that a user can grant. As a result,userAdminAnyDatabase
users can grant themselves privileges in excess of their current privileges and even can grant themselves all privileges, even though the role does not explicitly authorize privileges beyond user administration.userAdminAnyDatabase
角色不限制用户可以授予的权限。因此,userAdminAnyDatabase
用户可以授予自己超出当前权限的权限,甚至可以授予自己所有权限,即使角色没有明确授权超出用户管理权限的权限。This role is effectively a MongoDB system superuser.这个角色实际上是MongoDB系统的超级用户。See also the另请参阅clusterManager
andclusterMonitor
roles for access to theconfig
andlocal
databases.clusterManager
和clusterMonitor
角色,以访问config
数据库和local
数据库。
dbAdminAnyDatabase
-
Provides the same privileges as在除dbAdmin
on all databases exceptlocal
andconfig
.local
和config
之外的所有数据库上提供与dbAdmin
相同的权限。The role also provides the该角色还提供了整个集群上的listDatabases
action on the cluster as a whole.listDatabases
操作。See also the另请参阅clusterManager
andclusterMonitor
roles for access to theconfig
andlocal
databases.clusterManager
和clusterMonitor
角色,以访问配置数据库和本地数据库。Starting in MongoDB 5.0,从MongoDB 5.0开始,dbAdminAnyDatabase
includes the applyOps privilege action.dbAdminAnyDatabase
包含applyOps权限操作。
Superuser Roles超级用户角色
Several roles provide either indirect or direct system-wide superuser access.几个角色提供间接或直接的系统范围的超级用户访问。
The following roles provide the ability to assign any user any privilege on any database, which means that users with one of these roles can assign themselves any privilege on any database:以下角色可以为任何用户分配任何数据库上的任何权限,这意味着具有其中一个角色的用户可以为自己分配任何数据库的任何权限:
dbOwner
role, when scoped to the角色,当作用域为admin
databaseadmin
数据库时userAdmin
role, when scoped to the角色,当作用域为admin
databaseadmin
数据库时userAdminAnyDatabase
role角色
The following role provides full privileges on all resources:以下角色提供对所有资源的完全权限:
Internal Role内部角色
__system
-
MongoDB assigns this role to user objects that represent cluster members, such as replica set members andMongoDB将此角色分配给代表集群成员的用户对象,例如副本集成员和mongos
instances.mongos
实例。The role entitles its holder to take any action against any object in the database.该角色使其持有者有权对数据库中的任何对象采取任何操作。Do not assign this role to user objects representing applications or human administrators, other than in exceptional circumstances.除非在特殊情况下,否则不要将此角色分配给代表应用程序或管理员的用户对象。If you need access to all actions on all resources, for example to run如果您需要访问所有资源上的所有操作,例如运行applyOps
commands, do not assign this role. Instead, create a user-defined role that grantsanyAction
onanyResource
and ensure that only the users who need access to these operations have this access.applyOps
命令,请不要分配此角色。相反,创建一个用户定义的角色,授予anyResource
上的anyAction
,并确保只有需要访问这些操作的用户才有此访问权限。