本文整理自网络,侵删。
目录
- NO.1 MongoDB内建角色
- 内建角色的种类和特点?
- 数据库用户角色:
- 数据库管理角色:
- 集群管理角色:
- 备份和恢复角色:
- 全数据库角色
- 超级用户:
- 内部角色:
- MongoDB中的角色特点
- NO.2 创建自定义角色
NO.1 MongoDB内建角色
内建角色的种类和特点?
想要了解内建角色,还是少不了下面这张图,在MongoDB中,用户的权限是通过角色绑定的方法来分配的。把某个角色绑定在某个用户上,那么这个用户就有这个角色对应的权限了。
MongoDB 4.0中的内建角色类型如下:
这里对上面的内建角色所拥有的权限做以说明:
数据库用户角色:
read:用于读取所有非系统集合,以及下面三个系统集合:
system.indexes、system.js以及system.namesp
readWrite:拥有read角色的所有权限,并且可以修改所有非系统集合和system.js集合上的数据
数据库管理角色:
dbAdmin:提供管理相关功能,例如查询统计信息,索引管理等
userAdmin:提供管理数据库角色及用户的权限,具有这个角色的用户可以为当前数据库的任何用户,包括自己,分配任何角色和权限
dbOwner:提供数据库所有者的权限,它可以对数据库进行任何管理操作,这个角色结合了readWrite、dbAdmin、userAdmin三种角色授予的权限。
集群管理角色:
此类角色提供了管理整个MongoDB的权限,角色只能在admin数据库中进行授权。
clusterManager:提供对集群进行管理和监控的权限
clusterMonitor:提供对监控工具的只读访问权限
hostManager:提供监控和管理服务器的权限
clusterAdmin:提供最高的集群管理访问权限,这个角色拥有clusterManager、clusterMonitor和hostManager角色授予的权限,除此之外,它还具有dropDatabase()权限
备份和恢复角色:
此类角色只能在admin数据库中备份和恢复。
backup:提供备份数据的权限,使用mongodump备份整个mongod实例
restore:提供还原数据库所需的权限,使用户可以通过mongorestore恢复数据
全数据库角色
全数据库角色用于管理所有自定义数据库,但是不包含local和config数据库,它只能被授予在admin用户下。
超级用户:
root,这个不需要过多解释。
用户只能在admin数据库中配置这个权限,拥有这个角色的用户可以对所有数据库进行任何操作。
内部角色:
__system仅仅用于MongoDB内部的管理,不建议将这个权限分配个用户,防止用户对内部系统进行操作。
MongoDB中的角色特点
- 在MongoDB中,授予用户某个角色的权限时,默认授予当前数据库
- 角色授权可以授予集合级别的粒度
- 角色授权分成系统集合以及非系统集合的访问权限
- 每个数据库中的角色都可以分成一般角色和管理角色
- 管理数据库可以使用所有的内建角色
NO.2 创建自定义角色
上面的内容,更多的是讲述怎样使用内建角色,这里我们来看创建自定义角色的,
自定义角色有如下三个特点:
1、在一般数据库上创建的角色,只适用于当前数据库
2、在admin数据库上创建的角色,可适用于所有数据库
3、创建角色时,角色名字不能重复,否则报错alread exist
例如我们想给一个账号分配insert,update、select、而不给delete权限。
语法:
db.createRole( { role:"<name>", privileges:[ {resource:{<resource>},actions:["action",...]} ], roles:[ {role:"<role>",db:"<database>"}|"<role>" ], authenticationRestrictions:[ {clientSource:["<IP 地址>"|"<CIDR range>",...], {serverAddress:["<IP 地址>"|"<CIDR range>",...]} ] } )
其中,resource为指定数据库或者集合,若设置为空,则默认当前数据库的全部集合。
相关阅读 >>
mongodb入门教程(包含安装、常用命令、相关概念、使用技巧、常见操作等)
更多相关阅读请进入《mongodb》频道 >>
数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » 详解MongoDB的角色管理
相关推荐
评论
管理员已关闭评论功能...