自管理部署的权限操作
权限操作定义了用户可以对资源执行的运算。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()
辅助方法时输出到集合部分的必需项。在使用
aggregate
命令和db.collection.aggregate()
辅助方法时,当使用$out
或$merge
管道操作符时需要。当与
upsert
选项一起使用时,需要update
和findAndModify
命令及其等效辅助方法。以下命令及其辅助方法需要在目标集合上使用:
将此操作应用于数据库或集合资源。
remove
用户可以执行
delete
命令及其等效辅助方法。在
findAndModify
命令的写入部分和db.collection.findAndModify()
方法中需要。在将输出到集合时,指定
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
资源。
解锁
用户可以执行
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()
方法。将此操作应用于数据库或集合资源。
Change Stream 操作
changeStream
具有
changeStream
和find
的用户可以在特定集合、特定数据库中的所有非system
集合,或所有数据库中的所有非system
集合上打开该资源的 change stream 游标。
复制操作
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
命令。将此操作应用于集群
资源。
getShardMap
用户可以执行
getShardMap
命令。将此操作应用于cluster
资源。
listShards
用户可以执行
listShards
命令。将此操作应用于cluster
资源。
moveChunk
用户可以执行
moveChunk
和moveRange
命令。此外,如果权限应用于适当的数据库资源,用户还可以执行movePrimary
命令。将此操作应用于数据库或集合资源。
removeShard
用户可以执行
removeShard
命令。将该操作应用于cluster
资源。
shardedDataDistribution
用户可以执行
$shardedDataDistribution
聚合管道阶段。新功能版本6.0.3.
shardingState
用户可以执行
shardingState
命令。将该操作应用于cluster
资源。
transitionFromDedicatedConfigServer
具有对
cluster
资源此操作的用戶可以运行transitionFromDedicatedConfigServer
命令。新功能版本8.0.
服务器管理操作
applicationMessage
用户可以执行
logApplicationMessage
命令。将此操作应用于集群
资源。
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
必须重置用于ObjectID的5字节随机字符串。
logRotate
用户可以执行
logRotate
命令。将此操作应用于cluster
资源。
reIndex
用户可以执行
reIndex
命令。将该操作应用于数据库或集合资源。
renameCollectionSameDB
允许用户使用
renameCollection
命令重命名当前数据库中的集合。将该操作应用于数据库资源。此外,用户必须对源集合有 查询 权限或者对目标集合没有 查询 权限。
如果新名称的集合已存在,则用户还必须在目标集合上拥有
dropCollection
操作权限。
rotateCertificates
用户可以执行
rotateCertificates
命令。将此操作应用于集群
资源。
setDefaultRWConcern
用户可以发出管理命令
setDefaultRWConcern
。将此操作应用于集群
资源。
setParameter
用户可以执行
setParameter
命令。将此操作应用于集群
资源。
setUserWriteBlockMode
用户可以执行
setUserWriteBlockMode
命令。将此操作应用于集群
资源。
shutdown
用户可以执行
shutdown
命令。将此操作应用于cluster
资源。
会话操作
impersonate
用户可以使用带有
users
和roles
模式的killAllSessionsByPattern
命令。将此操作应用于cluster
资源。要运行
killAllSessionsByPattern
命令,用户还必须在集群资源上拥有killAnySession
权限。
listSessions
用户可以对所有用户或指定用户执行
$listSessions
操作或$listLocalSessions
操作。将此操作应用于cluster
资源。
killAnySession
用户可以执行
killAllSessions
和killAllSessionsByPattern
命令。将此操作应用于cluster
资源。
Atlas 搜索索引操作
以下操作允许用户运行 Atlas 搜索数据库命令。这些操作仅适用于托管在 MongoDB Atlas 上的部署。
createSearchIndexes
用户可以运行
createSearchIndexes
数据库命令。将此操作应用于数据库或集合资源。
dropSearchIndex
用户可以运行
dropSearchIndex
数据库命令。将此操作应用于数据库或集合资源。
listSearchIndexes
用户可以运行
$listSearchIndexes
聚合阶段。将此操作应用于数据库或集合资源。
updateSearchIndex
用户可以运行
updateSearchIndex
数据库命令。将此操作应用于数据库或集合资源。
诊断操作
collStats
用户可以执行
collStats
命令。将此操作应用于数据库或集合资源。
connPoolStats
用户可以执行
connPoolStats
命令。将此操作应用于集群
资源。
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
命令。将此操作应用于集群
资源。