自管理部署的权限操作
权限操作定义了用户可以对资源执行的运算。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命令。将此操作应用于集群资源。