自管理部署的特权操作
特权操作定义用户可以对资源执行的操作。 MongoDB权限由资源和允许的操作组成。此页面列出了按常见目的分组的可用操作。
MongoDB 提供内置角色以及预定义的资源和允许的操作对。有关已授予操作的列表,请参阅自管理部署中的内置角色。要定义自定义角色,请参阅创建用户定义的角色。
查询和写入操作
find
用户可执行以下命令和等效的辅助方法:
aggregate
适用于除$collStats
$out
和$indexStats
之外的所有管道操作。geoSearch
(在 MongoDB 5.0 中已删除)getLastError
(在 MongoDB 5.1 中已删除)killCursors
,但前提是此游标与当前已经过身份验证的用户相关联。mapReduce
,带{out: inline}
选项。resetError
(在 MongoDB 5.0 中已删除)
输出至集合时,
mapReduce
命令和db.collection.mapReduce()
辅助方法的查询部分为必填项。findAndModify
命令和db.collection.findAndModify()
辅助方法的查询部分为必填项。cloneCollectionAsCapped
和renameCollection
命令以及db.collection.renameCollection()
辅助方法的源集合为必填项。如果用户没有
listDatabases
特权操作,则用户可运行listDatabases
命令以返回该用户拥有特权的数据库列表(包括用户对特定集合具有特权的数据库),前提是该命令未指定authorizedDatabases
选项或该选项设置为true
。将此操作应用于数据库或集合资源。
insert
用户可执行以下命令及其等效方法:
输出至集合时,
mapReduce
命令和db.collection.mapReduce()
辅助方法的输出部分为必填项。使用
$out
或$merge
管道操作符时,aggregate
命令和db.collection.aggregate()
辅助方法为必填项。与
upsert
选项一起使用时,update
和findAndModify
命令以及等效辅助方法为必填项。以下命令及其辅助方法的目标集合为必填项:
将此操作应用于数据库或集合资源。
remove
用户可以执行
delete
命令和等效的辅助方法。findAndModify
命令和db.collection.findAndModify()
{5} 方法的写入部分为必填项。当输出至集合时指定
replace
操作时,mapReduce
命令和db.collection.mapReduce()
辅助方法为必填项。使用
$out
管道操作符时,aggregate
命令和db.collection.aggregate()
辅助方法为必填项。将此操作应用于数据库或集合资源。
update
用户可以执行
update
命令和等效的辅助方法。在未指定
replace
操作的情况下输出至集合时,mapReduce
命令和db.collection.mapReduce()
辅助方法为必填项。findAndModify
命令和db.collection.findAndModify()
辅助方法为必填项。将此操作应用于数据库或集合资源。
bypassDocumentValidation
对于支持
bypassDocumentValidation
选项的命令和方法,用户可以绕过文档验证。以下命令及其等效方法支持绕过文档验证:将此操作应用于数据库或集合资源。
数据库管理操作
changeOwnCustomData
用户可以更改自己的自定义信息。将此操作应用于数据库资源。另请参阅更改自管理部署的密码和自定义数据。
changeOwnPassword
用户可以更改自己的密码。将此操作应用于数据库资源。另请参阅更改自管理部署的密码和自定义数据。
createCollection
用户可以执行
db.createCollection()
方法。将此操作应用于数据库或集合资源。
createIndex
提供对
db.collection.createIndex()
方法和createIndexes
命令的访问权限。将此操作应用于数据库或集合资源。
dropCollection
用户可以执行
db.collection.drop()
方法。将此操作应用于数据库或集合资源。
enableProfiler
用户可以执行
db.setProfilingLevel()
方法。将此操作应用于数据库资源。
planCacheIndexFilter
用户可以运行
planCacheClearFilters
、planCacheListFilters
和planCacheSetFilter
命令。将planCacheIndexFilter
操作应用于集合资源。
querySettings
用户可以运行
setQuerySettings
和removeQuerySettings
命令,并向聚合管道添加$querySettings
阶段。8.0版本新增。
setAuthenticationRestriction
运行以下命令时,用户可以在
user
文档中指定 authenticationRestrictions 字段:运行以下命令时,用户可以在
role
文档中指定authenticationRestrictions
字段:注意
以下内置角色可授予此特权:
userAdmin
角色在分配了该角色的数据库上提供此特权。userAdminAnyDatabase
角色对所有数据库提供此特权。
将此操作应用于数据库资源。
setFeatureCompatibilityVersion
用户可以运行
setFeatureCompatibilityVersion
命令。将此操作应用于cluster
资源。
unlock
用户可以执行
db.fsyncUnlock()
方法。将此操作应用于cluster
资源。
部署管理操作
inprog
用户可使用
db.currentOp()
方法返回待执行和活动操作的信息。将此操作应用于cluster
资源。即使没有
inprog
特权,在mongod
实例上,用户也可以通过运行db.currentOp( { "$ownOps": true } )
来查看自己的操作。
invalidateUserCache
提供对
invalidateUserCache
命令的访问权限。将此操作应用于cluster
资源。
killop
用户可以执行
db.killOp()
方法。将此操作应用于cluster
资源。
planCacheRead
用户可以运行以下操作:
$planCacheStats
聚合阶段。
将此操作应用于数据库或集合资源。
planCacheWrite
用户可以执行
planCacheClear
命令以及PlanCache.clear()
和PlanCache.clearPlansByQuery()
方法。将此操作应用于数据库或集合资源。
变更流操作
changeStream
在特定集合上、特定数据库中的所有非
system
集合上或所有数据库的所有非system
集合上拥有changeStream
和find
的用户可以打开该资源的变更流游标。
复制操作
replSetGetConfig
用户可以查看副本集的配置。提供对
replSetGetConfig
命令和rs.conf()
辅助方法的访问权限。将此操作应用于
cluster
资源。
replSetGetStatus
用户可以执行
replSetGetStatus
命令。将此操作应用于cluster
资源。
replSetStateChange
用户可以通过
replSetFreeze
、replSetMaintenance
、replSetStepDown
和replSetSyncFrom
命令更改副本集的状态。将此操作应用于cluster
资源。
分片操作
addShard
用户可以执行
addShard
命令。将此操作应用于cluster
资源。
checkMetadataConsistency
用户可以执行
checkMetadataConsistency
命令。将此操作应用于cluster
、数据库或集合资源。7.0 版本中的新增功能。
clearJumboFlag
需要使用
clearJumboFlag
命令清除数据段的巨型标志。将此操作应用于数据库或集合资源。包含在
clusterManager
内置角色中。
enableSharding
- 资源说明
授予用户执行以下操作的特权:
使用
enableSharding
命令在数据库上启用分片,并使用
shardCollection
命令对集合进行分片。
refineCollectionShardKey
提供优化分片集合的分片键并运行
refineCollectionShardKey
命令的特权。将此操作应用于数据库或集合资源。包含在
clusterManager
内置角色中。
reshardCollection
用户可以执行
reshardCollection
命令。将此操作应用于数据库或集合资源。版本 5.0 中的新增功能。
flushRouterConfig
用户可以执行
flushRouterConfig
命令。将此操作应用于cluster
资源。
getShardMap
用户可以执行
getShardMap
命令。将此操作应用于cluster
资源。
listShards
用户可以执行
listShards
命令。将此操作应用于cluster
资源。
moveChunk
用户可以执行
moveChunk
和moveRange
命令。此外,只要特权应用于适当的数据库资源,用户还可以执行movePrimary
命令。将此操作应用于数据库或集合资源。
removeShard
用户可以执行
removeShard
命令。将此操作应用于cluster
资源。
shardedDataDistribution
用户可以执行
$shardedDataDistribution
聚合管道阶段。6.0.3 版本新增。
shardingState
用户可以执行
shardingState
命令。将此操作应用于cluster
资源。
splitVector
用户可以执行
splitVector
命令。将此操作应用于数据库或集合资源。
transitionFromDedicatedConfigServer
对
cluster
资源执行此动作的用户可以运行transitionFromDedicatedConfigServer
命令。8.0版本新增。
transitionToDedicatedConfigServer
对
cluster
资源执行此动作的用户可以运行transitionToDedicatedConfigServer
命令。8.0版本新增。
服务器管理操作
applicationMessage
用户可以执行
logApplicationMessage
命令。将此操作应用于cluster
资源。
bypassWriteBlockingMode
即使在
setUserWriteBlockMode
命令阻止写入时,用户也可以执行写入操作。将此操作应用于cluster
资源。
bypassDefaultMaxTimeMS
用户运行的所有查询都会忽略
defaultMaxTimeMS
的值。
collMod
用户可以执行
collMod
命令。将此操作应用于数据库或集合资源。
compact
用户可以执行
compact
命令和autoCompact
命令。将此动作应用于数据库或集合资源。
compactStructuredEncryptionData
用户可以执行
compactStructuredEncryptionData
命令。将此操作应用于数据库或集合资源。
convertToCapped
用户可以执行
convertToCapped
命令。将此操作应用于数据库或集合资源。
dropConnections
用户可以执行
dropConnections
命令。将此操作应用于cluster
资源。
dropDatabase
用户可以执行
dropDatabase
命令。将此操作应用于数据库资源。
dropIndex
用户可以执行
dropIndexes
命令。将此操作应用于数据库或集合资源。
fsync
用户可以执行
fsync
命令。将此操作应用于cluster
资源。
getDefaultRWConcern
用户可以发出管理
getDefaultRWConcern
命令。将此操作应用于cluster
资源。
getParameter
用户可以执行
getParameter
命令。将此操作应用于cluster
资源。
oidReset
需要重置对象标识符中使用的 5 字节随机字符串。
logRotate
用户可以执行
logRotate
命令。将此操作应用于cluster
资源。
reIndex
用户可以执行
reIndex
命令。将此操作应用于数据库或集合资源。
renameCollectionSameDB
允许用户使用
renameCollection
命令重命名当前数据库上的集合。将此操作应用于数据库资源。此外,用户必须在源集合上拥有
find
,或者在目标集合上没有find
。如果已存在采用新名称的集合,则用户还必须对目标集合执行
dropCollection
操作。
rotateCertificates
用户可以执行
rotateCertificates
命令。将此操作应用于cluster
资源。
setDefaultRWConcern
用户可以发出管理
setDefaultRWConcern
命令。将此操作应用于cluster
资源。
setParameter
用户可以执行
setParameter
命令。将此操作应用于cluster
资源。
setUserWriteBlockMode
用户可以执行
setUserWriteBlockMode
命令。将此操作应用于cluster
资源。
shutdown
用户可以执行
shutdown
命令。将此操作应用于cluster
资源。
会话操作
impersonate
用户可以使用
users
和roles
模式执行killAllSessionsByPattern
命令。将此操作应用于cluster
资源。要运行
killAllSessionsByPattern
命令,用户还必须拥有对集群资源的killAnySession
特权。
listSessions
用户可以为所有用户或指定用户执行
$listSessions
操作或$listLocalSessions
操作。将此操作应用于cluster
资源。
killAnySession
用户可以执行
killAllSessions
和killAllSessionsByPattern
命令。将此操作应用于cluster
资源。
Atlas Search 索引操作
通过以下操作,用户可以运行 Atlas Search 数据库命令。这些操作仅与 MongoDB Atlas 上托管的部署相关。
createSearchIndexes
用户可以运行
createSearchIndexes
数据库命令。将此操作应用于数据库或集合资源。
dropSearchIndex
用户可以运行
dropSearchIndex
数据库命令。将此操作应用于数据库或集合资源。
listSearchIndexes
用户可以运行
$listSearchIndexes
聚合阶段。将此操作应用于数据库或集合资源。
updateSearchIndex
用户可以运行
updateSearchIndex
数据库命令。将此操作应用于数据库或集合资源。
诊断操作
collStats
用户可以执行
collStats
命令。将此操作应用于数据库或集合资源。
connPoolStats
用户可以执行
connPoolStats
命令。将此操作应用于cluster
资源。
dbHash
用户可以执行
dbHash
命令。将此操作应用于数据库或集合资源。
dbStats
用户可以执行
dbStats
命令。将此操作应用于数据库资源。
getCmdLineOpts
用户可以执行
getCmdLineOpts
命令。将此操作应用于cluster
资源。
getLog
用户可以执行
getLog
命令。将此操作应用于cluster
资源。
indexStats
用户可以运行
$indexStats
聚合管道阶段。将此操作应用于数据库或集合资源。要使用
$indexStats
阶段,用户必须至少使用clusterMonitor
角色进行身份验证。
listDatabases
用户可以执行
listDatabases
命令。将此操作应用于cluster
资源。如果用户没有
listDatabases
特权操作,则用户可运行listDatabases
命令以返回该用户拥有特权的数据库列表(包括用户对特定集合具有特权的数据库),前提是该命令未指定authorizedDatabases
选项或该选项设置为true
。
listCollections
用户可以执行
listCollections
命令。将此操作应用于数据库资源。注意
没有所需特权的用户可以运行
listCollections
命令,并将authorizedCollections
和nameOnly
选项设置为true
。在这种情况下,该命令仅返回用户拥有特权的集合的名称和类型。
listIndexes
用户可以执行
listIndexes
命令。将此操作应用于数据库或集合资源。
queryStatsRead
用户可以在没有
transformIdentifiers
选项的情况下运行$queryStats
聚合阶段。
queryStatsReadTransformed
用户可以在使用或不使用
transformIdentifiers
选项的情况下运行$queryStats
聚合阶段。
serverStatus
用户可以执行
serverStatus
命令。将此操作应用于cluster
资源。
validate
用户可以执行
validate
和validateDBMetadata
命令。将此操作应用于数据库或集合资源。
top
用户可以执行
top
命令。将此操作应用于cluster
资源。
内部操作
applyOps
用户可以执行
applyOps
命令。将此操作应用于cluster
资源。