权限操作
在本页面
权限操作定义了用户可以对资源执行的操作。MongoDB 权限包括 资源和允许的操作。此页面列出了按通用目的分组的可用操作。
MongoDB为内置角色提供了预定义的资源对和允许的操作对。有关授予的操作的列表,请参见 内置角色。要定义自定义角色,请参阅 创建用户定义的角色。
查询和写操作¶
find
用户可以执行以下命令及其等效的帮助方法:
aggregate对于所有管道操作 ($collStats,$out和$indexStats除外) 。killCursors,前提是光标与当前经过身份验证的用户相关联。mapReduce与{out: inline}选项
输出到集合时,mapReduce命令和 db.collection.mapReduce辅助方法的查询部分是必需的。
findAndModify命令行和db.collection.findAndModify辅助方法的查询部分是必需的。
cloneCollectionAsCapped和renameCollection命令行以及db.collection.renameCollection()辅助方法要求有源集合。
对于MongoDB 4.0.6+:
如果用户没有
listDatabases操作权限,用户运行listDatabases命令行时authorizedDatabases未指定或设置选项为true,则用户可以运行该命令以返回该用户具有权限的数据库的列表(包括该用户对特定集合具有权限的数据库)。对于MongoDB 4.0.5:
如果用户没有
listDatabases操作权限,在authorizedDatabases未指定选项或设置为true的情况下运行listDatabases命令时,用户可以运行该命令以返回该用户对其具有find操作权限的数据库的列表 。对于MongoDB 4.0.0-4.0.4:
如果用户没有
listDatabases操作权限,则用户可以运行listDatabases命令以返回该用户对其具有find操作权限的数据库列表 。
将此操作应用于数据库或集合资源。
insert用户可以执行以下命令及其等效方法:
输出到集合时,
mapReduce命令和db.collection.mapReduce()方法的输出部分是必需的。使用管道
$out运算符时,aggregate命令和db.collection.aggregate()帮助程序方法是必需的。当使用
update和findAndModify命令以及等效的帮助程序方法时,upsert是必需的 。以下命令及其辅助方法在_目标_集合上是必需的:
将此操作应用于数据库或集合资源。
remove用户可以执行
delete命令和等效的辅助方法。findAndModify命令和db.collection.findAndModify()方法的write 部分是必需的。当您指定
replace输出到集合时,该mapReduce命令和db.collection.mapReduce()辅助方法是必需的。使用
$out管道运算符时,aggregate命令和db.collection.aggregate()辅助方法是必需的。将此操作应用于数据库或集合资源。
update
用户可以执行update命令和等效的帮助方法。
在不指定replace操作的情况下输出到集合时,mapReduce命令和 db.collection.mapReduce()辅助方法是必需的 。
findAndModify命令和 db.collection.findAndModify()辅助方法是必需的。
将此操作应用于数据库或集合资源。
bypassDocumentValidation
3.2版中的新功能。
用户可以绕过支持bypassDocumentValidation选项的命令和方法的文档验证。以下命令及其等效方法支持绕过文档验证:
在_目标_集合上的
cloneCollection
将此操作应用于数据库或集合资源。
useUUID
3.6版的新功能。
用户可以使用UUID来执行以下命令 ,就像它是名称空间一样:
例如,此权限授权用户运行以下命令,该find命令对具有给定UUID的集合执行命令。为了获得成功,此操作还需要授权用户find在与给定UUID对应的集合名称空间上执行命令。
复制
db.runCommand({find: UUID("123e4567-e89b-12d3-a456-426655440000")})有关集合UUID的更多信息,请参见 集合。
将此操作应用于cluster资源。
数据库管理操作¶
changeCustomData用户可以更改给定数据库中任何用户的自定义信息。将此操作应用于数据库资源。
changeOwnCustomData用户可以更改自己的自定义信息。将此操作应用于数据库资源。另请参阅 更改密码和自定义数据。
changeOwnPassword用户可以更改自己的密码。将此操作应用于数据库资源。另请参阅 更改密码和自定义数据。
changePassword用户可以更改给定数据库中任何用户的密码。将此操作应用于数据库资源。
createCollection用户可以执行
db.createCollection()方法。将此操作应用于数据库或集合资源。createIndex
提供对db.collection.createIndex()方法和createIndexes命令的访问。将此操作应用于数据库或集合资源。
createRole用户可以在给定的数据库中创建新角色。将此操作应用于数据库资源。
createUser
用户可以在给定的数据库中创建新用户。将此操作应用于数据库资源。
dropCollection
用户可以执行该db.collection.drop()方法。将此操作应用于数据库或集合资源。
dropRole
用户可以从给定的数据库中删除任何角色。将此操作应用于数据库资源。
dropUser
用户可以从给定的数据库中删除任何用户。将此操作应用于数据库资源。
enableProfiler
用户可以执行db.setProfilingLevel()方法。将此操作应用于数据库资源。
grantRole
用户可以将数据库中的任何角色从系统中的任何数据库授予任何用户。将此操作应用于数据库资源。
killCursors从MongoDB 4.2开始,用户始终可以关闭自己的游标,而不管用户是否具有
killCursors的权限。因此,该killCursors权限在MongoDB 4.2+中无效。在MongoDB 3.6.3到MongoDB 4.0.x中,
killCursors启用访问控制后,用户需要权限来关闭自己的游标。游标创建时,游标与用户相关联。将此操作应用于收集资源。killAnyCursor版本3.6.3中的新功能。
用户可以关闭任何游标,甚至可以关闭其他用户创建的游标。将此操作应用于收集资源。
revokeRole
用户可以从系统中任何数据库的任何用户中删除任何角色。将此操作应用于数据库资源。
setAuthenticationRestriction
3.6版的新功能。
运行以下命令时,用户可以在user文档中指定 authenticationRestrictions字段:
unlock用户可以执行
db.fsyncUnlock()方法。将此操作应用于cluster资源。viewRole用户可以查看有关给定数据库中任何角色的信息。将此操作应用于数据库资源。
viewUser用户可以在给定的数据库中查看任何用户的信息。将此操作应用于数据库资源。
部署管理操作¶
authSchemaUpgrade用户可以执行
authSchemaUpgrade命令。将此操作应用于cluster资源。cleanupOrphaned用户可以执行
cleanupOrphaned命令。将此操作应用于cluster资源。cpuProfiler用户可以启用和使用CPU分析器。将此操作应用于
cluster资源。inprog用户可以使用
db.currentOp()方法返回有关挂起和活动操作的信息。将此操作应用于cluster资源。_在版本3.2.9中进行了更改:_即使没有
inprog权限,用户也可以在mongod实例上通过运行db.currentOp( { "$ownOps": true } )来查看自己的操作。invalidateUserCache提供对
invalidateUserCache命令的访问。将此操作应用于cluster资源。killop
用户可以执行db.killOp()方法。将此操作应用于cluster资源。
_在版本3.2.9中进行了更改:_即使没有killop权限,在 mongod实例上,用户也可以关闭自己的操作。
planCacheRead
用户可以执行以下操作:
$planCacheStats聚集阶段。planCacheListQueryShapes命令和PlanCache.listQueryShapes()方法。将此操作应用于数据库或集合资源。
planCacheWrite
用户可以执行planCacheClear命令以及 PlanCache.clear()和PlanCache.clearPlansByQuery() 方法。将此操作应用于数据库或集合资源。
storageDetails
用户可以执行storageDetails命令。将此操作应用于数据库或集合资源。
变更流操作¶
changeStream
用户在指定集合上使用changeStream和find上,在指定数据库中的所有非system集合或所有数据库中的所有非system集合都可以为这些资源打开变更流游标。
复制操作¶
appendOplogNote用户可以在操作日志中添加注释。将此操作应用于
cluster资源。replSetConfigure用户可以配置副本集。将此操作应用于
cluster资源。replSetGetConfig
用户可以查看副本集的配置。提供对replSetGetConfig命令和rs.conf()辅助方法的访问 。
将此操作应用于cluster资源。
replSetGetStatus用户可以执行
replSetGetStatus命令。将此操作应用于cluster资源。replSetHeartbeat用户可以执行
replSetHeartbeat命令。将此操作应用于cluster资源。replSetStateChange
用户可以通过 replSetFreeze,replSetMaintenance, replSetStepDown,和replSetSyncFrom 命令改变一个副本集的状态。将此操作应用于cluster资源。
resync
用户可以执行resync命令。将此操作应用于cluster资源。
分片操作¶
addShard
用户可以执行addShard命令。将此操作应用于cluster资源。
clearJumboFlag
从4.2.3和4.0.15开始可用
使用clearJumboFlag命令清除块的巨型标志所必需 。将此操作应用于数据库或集合资源。
包含在clusterManager内置角色中。
enableSharding
适用资源
该操作可以应用于以下任一情况:
群集资源以执行各种分片区操作(从版本4.2.2、4.0.14、3.6.16开始)。
授予用户执行以下操作的权限:使用以下enableSharding命令在数据库上启用分片 ,然后使用shardCollection 命令对集合进行分片。
群集从版本4.2.2、4.0.14、3.6.16开始
授予用户执行以下分区域操作的权限:- addShardToZone - updateZoneKeyRange - removeShardFromZone 如果对数据库中的相应集合执行find/ update操作,则还可以执行这些分片区 config操作。有关详细信息,请参见具体操作。
flushRouterConfig
用户可以执行flushRouterConfig命令。将此操作应用于cluster资源。
getShardMap
用户可以执行getShardMap命令。将此操作应用于cluster资源。
getShardVersion用户可以执行
getShardVersion命令。将此操作应用于数据库资源。listShards用户可以执行
listShards命令。将此操作应用于cluster资源。moveChunk
用户可以执行moveChunk命令。此外,如果将权限应用于适当的数据库资源,则用户可以执行movePrimary命令。将此操作应用于数据库或集合资源。
removeShard
用户可以执行removeShard命令。将此操作应用于cluster资源。
shardingState
用户可以执行shardingState命令。将此操作应用于cluster资源。
splitChunk
用户可以执行splitChunk命令和 mergeChunks命令。将此操作应用于数据库或集合资源。
splitVector
用户可以执行splitVector命令。将此操作应用于数据库或集合资源。
服务器管理操作¶
applicationMessage
用户可以执行logApplicationMessage命令。将此操作应用于cluster资源。
closeAllDatabases
用户可以执行closeAllDatabases命令。将此操作应用于cluster资源。
collMod
用户可以执行collMod命令。将此操作应用于数据库或集合资源。
compact
用户可以执行compact命令。将此操作应用于数据库或集合资源。
connPoolSync
用户可以执行connPoolSync命令。将此操作应用于cluster资源。
convertToCapped
用户可以执行convertToCapped命令。将此操作应用于数据库或集合资源。
dropConnections
用户可以执行dropConnections命令。将此操作应用于cluster资源。
dropDatabase
用户可以执行dropDatabase命令。将此操作应用于数据库资源。
dropIndex
用户可以执行dropIndexes命令。将此操作应用于数据库或集合资源。
forceUUID
3.6版的新功能。
用户可以使用 applyOps命令使用用户定义的集合UUID创建集合。
将此操作应用于cluster资源。
fsync
用户可以执行fsync命令。将此操作应用于cluster资源。
getParameter
用户可以执行getParameter命令。将此操作应用于cluster资源。
hostInfo
提供有关运行MongoDB实例的服务器的信息。将此操作应用于cluster资源。
logRotate
用户可以执行logRotate命令。将此操作应用于cluster资源。
reIndex
用户可以执行reIndex命令。将此操作应用于数据库或集合资源。
renameCollectionSameDB允许用户使用
renameCollection命令在当前数据库上重命名集合 。将此操作应用于数据库资源。此外,用户必须_拥有_
find源集合或者_没有_find目标集合。如果已经存在使用新名称的集合,则用户还必须使用
dropCollection对目标集合执行操作。setParameter
用户可以执行setParameter命令。将此操作应用于cluster资源。
shutdown
用户可以执行shutdown命令。将此操作应用于cluster资源。
touch
用户可以执行touch命令。将此操作应用于cluster资源。
会话的操作¶
impersonate
3.6版的新功能。
用户可以使用users和roles模式执行killAllSessionsByPattern命令。将此操作应用于 cluster资源。
要运行killAllSessionsByPattern命令,用户还必须对群集资源具有killAnySession权限。
killAnySessionSEE ALSO
impersonate3.6版的新功能。
用户可以执行
killAllSessions和killAllSessionsByPattern命令。将此操作应用于cluster资源。也可以看看
impersonate
免费的监控操作¶
checkFreeMonitoringStatus
对cluster资源执行此操作的用户可以检查“ 免费监控”的状态。
4.0版本中的新功能。
setFreeMonitoring
对cluster资源执行此操作的用户可以启用或禁用“ 免费监控”。
4.0版本中的新功能。
诊断操作¶
collStats
用户可以执行collStats命令。将此操作应用于数据库或集合资源。
connPoolStats
用户可以执行connPoolStats和shardConnPoolStats 命令。将此操作应用于cluster资源。
cursorInfo
用户可以执行cursorInfo命令。将此操作应用于cluster资源。
dbHash
用户可以执行dbHash命令。将此操作应用于数据库或集合资源。
dbStats
用户可以执行dbStats命令。将此操作应用于数据库资源。
getCmdLineOpts
用户可以执行getCmdLineOpts命令。将此操作应用于cluster资源。
getLog
用户可以执行getLog命令。将此操作应用于cluster资源。
indexStats
用户可以执行indexStats命令。将此操作应用于数据库或集合资源。
在版本3.0_中进行了_更改: MongoDB 3.0删除了该indexStats命令。
listDatabases
用户可以执行listDatabases命令。将此操作应用于cluster资源。
对于MongoDB 4.0.6+:
如果用户没有
listDatabases操作权限,则如果运行listDatabases命令时authorizedDatabases未指定或设置选项为true,则用户可以运行该命令以返回该用户具有权限的数据库的列表(包括该用户对特定集合具有权限的数据库)。对于MongoDB 4.0.5:
如果用户没有
listDatabases操作权限,则在authorizedDatabases命令未指定选项或设置为true的情况下运行listDatabases命令时,用户可以运行该命令以返回该用户对其具有find操作权限的数据库的列表 。对于MongoDB 4.0.0-4.0.4:
如果用户没有
listDatabases操作权限,则用户可以运行listDatabases命令以返回该用户对其具有find操作权限的数据库列表 。listCollections
用户可以执行listCollections命令。将此操作应用于数据库资源。
注意
从4.0版本开始,没有所需权限的用户可以在
authorizedCollections和nameOnly选项都设置为true的情况下运行listCollections命令。在这种情况下,该命令仅返回用户具有特权的集合的名称和类型。
listIndexes
用户可以执行listIndexes命令。将此操作应用于数据库或集合资源。
netstat
用户可以执行netstat命令。将此操作应用于cluster资源。
serverStatus
用户可以执行serverStatus命令。将此操作应用于cluster资源。
validate
用户可以执行validate命令。将此操作应用于数据库或集合资源。
top
用户可以执行top命令。将此操作应用于 cluster资源。
内部操作¶
anyAction
允许对资源执行任何操作。除非绝对必要,否则不要分配此操作。
internal
允许内部动作。除非绝对必要,否则不要分配此操作。
原文链接:https://docs.mongodb.com/manual/reference/privilege-actions/
译者:谢伟成
最后更新于