重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 703|回复: 1
打印 上一主题 下一主题

mongodb系统角色

[复制链接]
跳转到指定楼层
楼主
发表于 2023-5-11 19:04:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.数据库内置角色
MongoDB在每一个数据库上提供内置的Database User Roles和Database Administration Roles,仅仅对admin数据库提供所有内置角色。
1.1 Database User Roles
1.1.1 read
读取所有非系统集合和system.js的功能。

该角色包含以下操作:
changeStream
collStats
dbHash
dbStats
find
killCursors
listIndexes
listCollections



1.1.2 readWrite
在read角色的基础上,增加了对所有非系统集合和system.js集合的修改功能

该角色包含以下操作:
collStats
convertToCapped
createCollection
dbHash
dbStats
dropCollection
createIndex
dropIndex
find
insert
killCursors
listIndexes
listCollections
remove
renameCollectionSameDB
update


1.2 Database Administration Roles
1.2.1 dbAdmin
提供执行管理任务的能力,例如与schema相关的任务,索引和统计信息收集。该角色没有用户和角色管理的权限。


1.2.2 dbOwner
数据库所有者可以对数据库执行任何操作,该角色由readWrite,dbAdmin,userAdmin角色组合授权。


1.2.3 userAdmin
提供在当前数据库上创建和修改角色和用户的功能,由于该角色允许用户向任何用户(包括自己)授予任何特权,该角色间接提供了超级用户的权限(后面理解不了,附原文)。
原文:Provides the ability to create and modify roles and users on the current database. Since the userAdmin role allows users to grant any privilege to any user, including themselves, the role also indirectly provides superuser access to either the database or, if scoped to the admin database, the cluster.



1.3 Cluster Administration Roles
仅仅可以对创建在admin数据库中的用户授予集群管理角色。

1.3.1 clusterAdmin
最大的集群管理权限,该角色包含clusterManager、clusterMonitor、hostManager角色,此外,还提供了dropDatabase操作权限。

1.3.2 clusterManager
提供对集群的管理和监视操作,具有此角色的用户可以访问config和local数据库,分别用于分片和复制。

1.3.3 clusterMonitor
提供对集群监视的只读访问。

1.3.4 hostManager
提供监视和管理服务器的功能。


1.4 Backup and Restoration Roles
仅仅可以对创建在admin数据库中的用户授予备份与恢复角色。

1.4.1 backup
提供了最小的使用MongoDB Cloud Manager,Ops Manager,mongodump工具备份数据库的权限。

1.4.2 restore
提供了使用mongorestore恢复数据的权限。


1.5 All-Database Roles
仅仅可以对创建在admin数据库中的用户授予对全部数据库操作的角色。

1.5.1 readAnyDatabase

除了local和config数据库,提供了对其它所有数据库只读(read)的权限。

1.5.2 readWriteDatabase
除了local和config数据库,提供了对其它所有数据库读写(readWrite)的权限。

1.5.3 userAdminAnyDatabase
除了local和config数据库,提供了对其它所有数据库userAdmin角色的权限。


1.5.4 dbAdminAnyDatabase
除了local和config数据库,提供了对其它所有数据库dbAdmin角色的权限。


1.6 Superuser Roles
以下角色具有授予任意数据库中任意用户任意权限的能力,这意味着具有以下角色的用户可以授予自己任何权限。
-- 在admin数据库中,具有dbOwner角色的用户
-- 在admin数据库中,具有userAdmin角色的用户
-- 具有userAdminAnyDatabase角色的用户

1.6.1 root
root角色包含了以下角色:
readWriteAnyDatabase
dbAdminAnyDatabase
userAdminAnyDatabase
clusterAdmin
restore
backup

2. Internal Role
2.1 __system
MongoDB将该角色分配给集群成员,例如副本集成员和mongos实例。授予该角色的用户能够对任意数据库进行任意操作,不要将此角色授予给应用程序用户。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

沙发
 楼主| 发表于 2023-5-11 19:09:21 | 只看该作者
内建的角色
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system
角色说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限



关于角色,参考官方文档提取总结如下:

角色分类

角色

权限及角色

(本文大小写可能有些变化,使用时请参考官方文档)

Database User Roles

read

CollStats,dbHash,dbStats,find,killCursors,listIndexes,listCollections

readWrite

CollStats,ConvertToCapped,CreateCollection,DbHash,DbStats,

DropCollection,CreateIndex,DropIndex,Emptycapped,Find,

Insert,KillCursors,ListIndexes,ListCollections,Remove,

RenameCollectionSameDB,update

Database Administration Roles

dbAdmin

collStats,dbHash,dbStats,find,killCursors,listIndexes,listCollections,

dropCollection 和 createCollection 在 system.profile

dbOwner

角色:readWrite, dbAdmin,userAdmin

userAdmin

ChangeCustomData,ChangePassword,CreateRole,CreateUser,

DropRole,DropUser,GrantRole,RevokeRole,ViewRole,viewUser

Cluster Administration Roles

clusterAdmin

角色:clusterManager, clusterMonitor, hostManager

clusterManager

AddShard,ApplicationMessage,CleanupOrphaned,FlushRouterConfig,

ListShards,RemoveShard,ReplSetConfigure,ReplSetGetStatus,

ReplSetStateChange,Resync,



EnableSharding,MoveChunk,SplitChunk,splitVector

clusterMonitor

connPoolStats,cursorInfo,getCmdLineOpts,getLog,getParameter,

getShardMap,hostInfo,inprog,listDatabases,listShards,netstat,

replSetGetStatus,serverStatus,shardingState,top



collStats,dbStats,getShardVersion

hostManager

applicationMessage,closeAllDatabases,connPoolSync,cpuProfiler,

diagLogging,flushRouterConfig,fsync,invalidateUserCache,killop,

logRotate,resync,setParameter,shutdown,touch,unlock

Backup and Restoration Roles

backup

提供在admin数据库mms.backup文档中insert,update权限

列出所有数据库:listDatabases

列出所有集合索引:listIndexes



对以下提供查询操作:find

*非系统集合

*系统集合:system.indexes, system.namespaces, system.js

*集合:admin.system.users 和 admin.system.roles

restore

非系统集合、system.js,admin.system.users 和 admin.system.roles 及2.6 版本的system.users提供以下权限:

collMod,createCollection,createIndex,dropCollection,insert



列出所有数据库:listDatabases

system.users :find,remove,update

All-Database Roles

readAnyDatabase

提供所有数据库中只读权限:read

列出集群所有数据库:listDatabases

readWriteAnyDatabase

提供所有数据库读写权限:readWrite

列出集群所有数据库:listDatabases

userAdminAnyDatabase

提供所有用户数据管理权限:userAdmin

Cluster:authSchemaUpgrade,invalidateUserCache,listDatabases

admin.system.users和admin.system.roles:

collStats,dbHash,dbStats,find,killCursors,planCacheRead

createIndex,dropIndex

dbAdminAnyDatabase

提供所有数据库管理员权限:dbAdmin

列出集群所有数据库:listDatabases

Superuser Roles

root

角色:dbOwner,userAdmin,userAdminAnyDatabase

readWriteAnyDatabase, dbAdminAnyDatabase,

userAdminAnyDatabase,clusterAdmin

Internal Role

__system

集群中对任何数据库采取任何操作

创建一个用户ADMIN,
db.createUser(
  {
    user: "admin",
    pwd: "admin",
    roles: [ { role: "root", db: "admin" } ]
  }

);



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-5-5 12:29 , Processed in 0.093679 second(s), 18 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表