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. 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.
System collections include those in:
<database>.system.*namespacelocal.replset.*replica set namespace
For details, see System Collections.
Non-system collections are those not in namespaces in the previous list.
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.
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.
MongoDB Atlas Built-In Roles
Although database users in MongoDB Atlas have different built-in roles than self-hosted deployments, the built-in roles for each type of deployment are built from the same set of privilege actions.
For the built-in database user roles for deployments hosted in MongoDB Atlas, see Atlas Built-In Roles and Privileges.
You can create database users and assign built-in roles in the MongoDB Atlas user interface. To learn more, see Add Database Users.
Database Built-In Roles
MongoDB provides the following built-in roles in self-hosted deployments:
Database user and database administration roles on specific databases
All other roles only on the
admindatabase
Database User Roles
Every database includes the following client roles:
readProvides the ability to read data on all non-system collections and the
system.jscollection.Note
The role does not provide privileges to directly access the
system.namespacescollection directly.The role provides read access by granting the following actions:
If the user does not have the
listDatabasesprivilege action, users can run thelistDatabasescommand 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 withauthorizedDatabasesoption unspecified or set totrue.
Database Administration Roles
Every database includes the following database administration roles:
dbAdminProvides 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:
ResourcePermitted ActionsAll non-system collections (i.e. database resource)
dbOwnerThe database owner can perform any administrative action on the database. This role combines the privileges granted by the
readWrite,dbAdminanduserAdminroles.
userAdminProvides the ability to create and modify roles and users on the current database. Since the
userAdminrole 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 theadmindatabase, the cluster.The
userAdminrole explicitly provides the following actions:Warning
It is important to understand the security implications of granting the
userAdminrole: a user with this role for a database can assign themselves any privilege on that database. Granting theuserAdminrole on theadmindatabase has further security implications as this indirectly provides superuser access to a cluster. Withadminscope a user with theuserAdminrole can grant cluster-wide roles or privileges includinguserAdminAnyDatabase.
Cluster Administration Roles
The admin database includes the following roles for administering the
whole system rather than just a single database. These roles include but are
not limited to replica set and sharded cluster administrative
functions.
clusterAdminProvides the greatest cluster-management access. This role combines the privileges granted by the
clusterManager,clusterMonitor, andhostManagerroles. Additionally, the role provides thedropDatabaseaction.
clusterManagerProvides management and monitoring actions on the cluster. A user with this role can access the
configandlocaldatabases, which are used in sharding and replication, respectively. Additionally, the role provides thequerySettingsaction.ResourceActionsAll databases
clusterManagerprovides additional privileges for theconfigandlocaldatabases.On the
configdatabase, permits the following actions:ResourceActionsAll non-system collections in the
configdatabaseOn the
localdatabase, permits the following actions:ResourceActionsAll non-system collections in the
localdatabasesystem.replsetcollection
clusterMonitorProvides read-only access to monitoring tools, such as the MongoDB Cloud Manager and Ops Manager monitoring agent.
Permits the following actions on the cluster as a whole:
Permits the following actions on all databases in the cluster:
Permits the
findaction on allsystem.profilecollections in the cluster.On the
configdatabase, permits the following actions:ResourceActionsAll non-system collections in the
configdatabasesystem.jscollectionOn the
localdatabase, permits the following actions:ResourceActionsAll non-system collections in the
localdatabasesystem.jscollection
directShardOperationsStarting in MongoDB 8.0, you can use the
directShardOperationsrole to perform maintenance operations that require you to execute commands directly against a shard.Warning
Running commands using the
directShardOperationsrole can cause your cluster to stop working correctly and may cause data corruption. Only use thedirectShardOperationsrole for maintenance purposes or under the guidance of MongoDB support. Once you are done performing maintenance operations, stop using thedirectShardOperationsrole.
enableShardingProvides the ability to enable sharding for a collection and modify existing shard keys.
Provides the following actions on all non-system collections:
moveCollection(MongoDB 8.0 and later)unshardCollection(MongoDB 8.0 and later)
hostManagerProvides the ability to monitor and manage servers.
On the cluster as a whole, provides the following actions:
compact(New in version 7.3)
rotateCertificates(New in version 5.0)
On all databases in the cluster, provides the following actions:
searchCoordinatorProvides
readAnyDatabaseprivileges and write permissions on the__mdb_internal_searchdatabase.Important
Do not modify the contents of the
__mdb_internal_searchdatabase.On the cluster as a whole, provides the following action:
Backup and Restoration Roles
The admin database includes the following roles for backing up and
restoring data:
backupProvides minimal privileges needed for backing up data. This role provides sufficient privileges to use the MongoDB Cloud Manager backup agent, Ops Manager backup agent, or to use
mongodumpto back up an entiremongodinstance.Provides the
insertandupdateactions on thesettingscollection in theconfigdatabase.On
anyResource, provides thelistDatabasesactionlistCollectionsactionlistIndexesactionlistSearchIndexesaction
On the cluster as a whole, provides the
setUserWriteBlockMode(Starting in MongoDB 6.0)
Provides the
findaction on the following:all non-system collections in the cluster, including those in the
configandlocaldatabasesThe following system collections in the cluster:
system.js, andsystem.profileThe
admin.system.usersandadmin.system.rolescollectionsThe
config.settingscollectionLegacy
system.userscollections from versions of MongoDB prior to 2.6
Provides the
insertandupdateactions on theconfig.settingscollection.The
backuprole provides additional privileges to back up thesystem.profilecollection that exists when running with database profiling.
restoreProvides
convertToCappedon non-system collections.Provides the necessary privileges to restore data from backups if the data does not include
system.profilecollection data and you runmongorestorewithout the--oplogReplayoption.If the backup data includes
system.profilecollection data or you run with--oplogReplay, you need additional privileges:system.profileIf the backup data includes
system.profilecollection data and the target database does not contain thesystem.profilecollection,mongorestoreattempts to create the collection even though the program does not actually restoresystem.profiledocuments. As such, the user requires additional privileges to performcreateCollectionandconvertToCappedactions on thesystem.profilecollection for a database.Both the built-in roles
dbAdminanddbAdminAnyDatabaseprovide the additional privileges.--oplogReplayTo run with
--oplogReplay, create a user-defined role that hasanyActiononanyResource.Grant only to users who must run
mongorestorewith--oplogReplay.Provides the following action on the cluster as a whole:
Provides the following actions on all non-system collections:
Provides the following actions on
system.jscollection:Provides the following action on
anyResource:Provides the following actions on all non-system collections on the
configand thelocaldatabases:Provides the following actions on
admin.system.version