- Security >
- Security Reference >
- Built-In Roles
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. 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 provides the built-in database user and
database administration roles on
every database. MongoDB provides all other built-in roles only on the
admin
database.
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
.
Database User Roles¶
Every database includes the following client roles:
-
read
¶ Provides the ability to read data on all non-system collections and on the following system collections:
system.indexes
,system.js
, andsystem.namespaces
collections. The role provides read access by granting the following actions:
Database Administration Roles¶
Every database includes the following database administration roles:
-
dbAdmin
¶ Provides the following actions on the database’s
system.indexes
,system.namespaces
, andsystem.profile
collections:collStats
dbHash
dbStats
find
killCursors
listIndexes
listCollections
dropCollection
andcreateCollection
onsystem.profile
only
Changed in version 2.6.4:
dbAdmin
added thecreateCollection
for thesystem.profile
collection. Previous versions only had thedropCollection
on thesystem.profile
collection.Provides the following actions on all non-system collections. This role does not include full read access on non-system collections:
-
dbOwner
¶ The database owner can perform any administrative action on the database. This role combines the privileges granted by the
readWrite
,dbAdmin
anduserAdmin
roles.
-
userAdmin
¶ Provides the ability to create and modify roles and users for a database. A user with this role on a database can assign any role or privilege to any user for that database, including themselves.
The
userAdmin
role explicitly provides the following actions:changeCustomData
changePassword
createRole
createUser
dropRole
dropUser
grantRole
revokeRole
viewRole
viewUser
Warning
It 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. Granting theuserAdmin
role on theadmin
database has further security implications as this indirectly provides superuser access to a cluster. Withadmin
scope a user with theuserAdmin
role 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.
-
clusterAdmin
¶ Provides the greatest cluster-management access. This role combines the privileges granted by the
clusterManager
,clusterMonitor
, andhostManager
roles. Additionally, the role provides thedropDatabase
action.
-
clusterManager
¶ Changed in version 3.4.
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.Provides the following actions on the cluster as a whole:
addShard
appendOplogNote
applicationMessage
cleanupOrphaned
flushRouterConfig
listShards
removeShard
replSetConfigure
replSetGetConfig
replSetGetStatus
replSetStateChange
resync
Provides the following actions on all databases in the cluster:
On the
config
database, provides the following privileges:Resource Actions All collections in the config
databasesystem.namespaces
collectionsOn the
local
database, provides the following privileges:Resource Actions All collections in the local
databasesystem.replset
collection
-
clusterMonitor
¶ Changed in version 3.4.
Provides read-only access to monitoring tools, such as the MongoDB Cloud Manager and Ops Manager monitoring agent.
Provides the following actions on the cluster as a whole:
connPoolStats
getCmdLineOpts
getLog
getParameter
getShardMap
hostInfo
inprog
listDatabases
listShards
netstat
replSetGetConfig
replSetGetStatus
serverStatus
shardingState
top
Provides the following actions on all databases in the cluster:
Provides the
find
action on allsystem.profile
collections in the cluster.On the
config
database, provides the following privileges:Resource Actions All collections in the config
databaseOn the
local
database, provides the following privileges:Resource Actions All collections in the local
databasesystem.replset
,find
-
hostManager
¶ Provides the ability to monitor and manage servers.
Provides the following actions on the cluster as a whole:
applicationMessage
closeAllDatabases
connPoolSync
cpuProfiler
diagLogging
flushRouterConfig
fsync
invalidateUserCache
killop
logRotate
resync
setParameter
shutdown
touch
unlock
Provides the following actions on all databases in the cluster:
Backup and Restoration Roles¶
The admin
database includes the following roles for backing up and
restoring data:
-
backup
¶ Changed in version 3.4.
Provides 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
mongodump
to back up an entiremongod
instance.Provides the
insert
andupdate
actions on themms.backup
collection in theadmin
database and on thesettings
collection in theconfig
database.On anyResource, provides the
listDatabases
actionlistCollections
actionlistIndexes
action
On the cluster as a whole, provides the
Provides the
find
action on the following:- all non-system collections in the cluster, including those in
the
config
andlocal
databases - The following system collections in the cluster:
system.indexes
,system.namespaces
,system.js
, andsystem.profile
- the
admin.system.users
andadmin.system.roles
collections - the
config.settings
collection - legacy
system.users
collections from versions of MongoDB prior to 2.6
Provides
insert
andupdate
action on theconfig.settings
collection.Changed in version 3.2.1: The
backup
role provides additional privileges to back up thesystem.profile
collections that exist when running with database profiling. Previously, users required an additionalread
access on this collection.
-
restore
¶ Changed in version 3.4.
Provides privileges needed to restore data from backups that do not include
system.profile
collection data. This role is sufficient when restoring data withmongorestore
without the--oplogReplay
option.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. As such, the user requires additional privileges to performcreateCollection
andconvertToCapped
actions on thesystem.profile
collection for a database.The built-in roles
dbAdmin
anddbAdminAnyDatabase
provide the additional privileges.If running
mongorestore
with--oplogReplay
, therestore
role is insufficient to replay the oplog. To replay the oplog, create a user-defined role that hasanyAction
on anyResource and grant only to users who must runmongorestore
with--oplogReplay
.
Provides the following action on the cluster as a whole:
Provides the following actions on all non-system collections:
bypassDocumentValidation
changeCustomData
changePassword
collMod
createCollection
createIndex
createRole
createUser
dropCollection
dropRole
dropUser
grantRole
insert
revokeRole
viewRole
viewUser
Provides the following actions on
system.js
collection:Provides the following action on anyResource:
Provides the
find
action on all thesystem.namespaces
collections in the cluster.Provides the following actions on all non-system collections on the
config
and thelocal
databases:Provides the following actions on
admin.system.version
Provides the following action on
admin.system.roles
Provides the following actions on
admin.system.users
and legacysystem.users
collections:bypassDocumentValidation
collMod
createCollection
createIndex
dropCollection
find
insert
remove
update
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.
All-Database Roles¶
Changed in version 3.4.
The admin
database provides the following roles that apply to but
the local
and config
databases in a mongod
instance
and are roughly equivalent to their single-database equivalents:
-
readAnyDatabase
¶ Provides the same read-only permissions as
read
, except it applies to it applies to all but thelocal
andconfig
databases in the cluster. The role also provides thelistDatabases
action on the cluster as a whole.Changed in version 3.4: Prior to 3.4,
readAnyDatabase
includeslocal
andconfig
databases. To provideread
privileges on thelocal
database, create a user in theadmin
database withread
role in thelocal
database. See alsoclusterManager
andclusterMonitor
role for access to theconfig
andlocal
databases.
-
readWriteAnyDatabase
¶ Provides the same read and write permissions as
readWrite
, except it applies to all but thelocal
andconfig
databases in the cluster. The role also provides thelistDatabases
action on the cluster as a whole.Changed in version 3.4: Prior to 3.4,
readWriteAnyDatabase
includeslocal
andconfig
databases. To providereadWrite
privileges on thelocal
database, create a user in theadmin
database withreadWrite
role in thelocal
database. See alsoclusterManager
andclusterMonitor
role for access to theconfig
andlocal
databases.
-
userAdminAnyDatabase
¶ Provides the same access to user administration operations as
userAdmin
, except it applies to all but thelocal
andconfig
databases in the cluster. The role also provides the following actions on the cluster as a whole:The role also provides the following actions on the
admin.system.users
andadmin.system.roles
collections on theadmin
database, and on legacysystem.users
collections from versions of MongoDB prior to 2.6:Changed in version 2.6.4:
userAdminAnyDatabase
added the following permissions on theadmin.system.users
andadmin.system.roles
collections:The
userAdminAnyDatabase
role does not restrict the permissions 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. This role is effectively a MongoDB system superuser.Changed in version 3.4: Prior to 3.4,
userAdminAnyDatabase
includeslocal
andconfig
databases.
-
dbAdminAnyDatabase
¶ Provides the same access to database administration operations as
dbAdmin
, except it applies to all but thelocal
andconfig
databases in the cluster. The role also provides thelistDatabases
action on the cluster as a whole.Changed in version 3.4: Prior to 3.4,
dbAdminAnyDatabase
includeslocal
andconfig
databases. To providedbAdmin
privileges on thelocal
database, create a user in theadmin
database withdbAdmin
role in thelocal
database. See alsoclusterManager
andclusterMonitor
role for access to theconfig
andlocal
databases.
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 theadmin
databaseuserAdmin
role, when scoped to theadmin
databaseuserAdminAnyDatabase
role
The following role provides full privileges on all resources:
-
root
¶ Provides access to the operations and all the resources of the
readWriteAnyDatabase
,dbAdminAnyDatabase
,userAdminAnyDatabase
,clusterAdmin
roles,restore
, andbackup
roles combined.Changed in version 3.4: The
root
role includes privileges from thebackup
role.Changed in version 3.0.7: The
root
hasvalidate
action onsystem.
collections. Previously,root
does not include any access to collections that begin with thesystem.
prefix other thansystem.indexes
andsystem.namespaces
.The
root
role includes privileges from therestore
role.
Internal Role¶
-
__system
¶ MongoDB assigns this role to user objects that represent cluster members, such as replica set members and
mongos
instances. 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
on anyResource and ensure that only the users who need access to these operations have this access.