MongoDB内建角色包括哪些?优点是什么?
发布时间:2022-03-05 03:36:33 所属栏目:系统 来源:互联网
导读:MongoDB内建角色包括哪些?特点是什么?刚接触MongoDB的朋友可能对于MongoDB内建角色不太了解,对此这篇文章就主要给大家介绍一下MongoDB内建角色,感兴趣的朋友就继续往下看吧。 想要了解内建角色,还是少不了下面这张图,在MongoDB中,用户的权限是通过角
MongoDB内建角色包括哪些?特点是什么?刚接触MongoDB的朋友可能对于MongoDB内建角色不太了解,对此这篇文章就主要给大家介绍一下MongoDB内建角色,感兴趣的朋友就继续往下看吧。 想要了解内建角色,还是少不了下面这张图,在MongoDB中,用户的权限是通过角色绑定的方法来分配的。把某个角色绑定在某个用户上,那么这个用户就有这个角色对应的权限了。 这里对上面的内建角色所拥有的权限做以说明: 数据库用户角色: read:用于读取所有非系统集合,以及下面三个系统集合: system.indexes、system.js以及system.namesp readWrite:拥有read角色的所有权限,并且可以修改所有非系统集合和system.js集合上的数据 clusterAdmin:提供最高的集群管理访问权限,这个角色拥有clusterManager、clusterMonitor和hostManager角色授予的权限,除此之外,它还具有dropDatabase()权限 备份和恢复角色: 此类角色只能在admin数据库中备份和恢复。 backup:提供备份数据的权限,使用mongodump备份整个mongod实例 restore:提供还原数据库所需的权限,使用户可以通过mongorestore恢复数据 全数据库角色 全数据库角色用于管理所有自定义数据库,但是不包含local和config数据库,它只能被授予在admin用户下。 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为指定数据库或者集合,若设置为空,则默认当前数据库的全部集合。 actions:指定权限 范例: 1、首先我们创建一个角色: use admin db.createRole( { role:"role_yeyz", privileges:[ {resource:{db:"yeyz",collection:"test"}, actions:["find","insert","update"] } ], roles:[ {role:"read",db:"yeyz1"} ] } ) 这个角色的名字叫做role_yeyz,它具有yeyz这个数据库下面的test集合的查找、插入、更新权限。同时它集成了系统的内建权限read,内建权限的生效数据库是yeyz1 2、使用show roles查看当前角色的创建情况 use admin show roles { "role" : "role_yeyz", "db" : "admin", "isBuiltin" : false, "roles" : [ { "role" : "read", "db" : "yeyz1" } ], "inheritedRoles" : [ { "role" : "read", "db" : "yeyz1" } ] } 这里它只显示了内建角色的信息,注意,这个角色所在的db是admin 3、此时我们将这个角色,授予给一个新的用户,yeyz_1 > db.createUser( ... { ... user: "yeyz_1", ... pwd: "123456", ... roles: [ { role: "role_yeyz", db: "admin" }] ... } ... ) Successfully added user: { "user" : "yeyz_1", "roles" : [ { "role" : "role_yeyz", "db" : "admin" } ] } 我们创建了一个新的用户yeyz_1,这个用户继承了我们第一步的自定义角色role_yeyz 4、开始认证并执行相关操作。 [root@VM-0-14-centos ~]# mongo MongoDB shell version v4.0.6 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("b9daecb8-ffd8-44a7-8af0-d1115057539a") } MongoDB server version: 4.0.6 > use admin switched to db admin > db.auth("yeyz_1","123456") 1 > use yeyz switched to db yeyz ### 测试查找,成功 > db.test.find() { "_id" : ObjectId("5fa7eae2515b814f18f2d474"), "name" : "aaa" } ### 测试插入,成功 > db.test.insert({"name":"bbb"}) WriteResult({ "nInserted" : 1 }) > db.test.find() { "_id" : ObjectId("5fa7eae2515b814f18f2d474"), "name" : "aaa" } { "_id" : ObjectId("5fa7f00e523d80402cdfa326"), "name" : "bbb" } (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |