广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >详解MongoDB的角色管理
  • 906
分享到

详解MongoDB的角色管理

2024-04-02 19:04:59 906人浏览 八月长安
摘要

目录NO.1 mongoDB内建角色内建角色的种类和特点?数据库用户角色:数据库管理角色:集群管理角色:备份和恢复角色:全数据库角色超级用户:内部角色:MonGoDB中的角色特点NO

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为指定数据库或者集合,若设置为空,则默认当前数据库的全部集合。

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" }

### 测试更新,成功
> db.test.update({"name":"aaa"},{$set:{"name":"ccc"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> 
> db.test.find()
{ "_id" : ObjectId("5fa7eae2515b814f18f2d474"), "name" : "ccc" }
{ "_id" : ObjectId("5fa7f00e523d80402cdfa326"), "name" : "bbb" }

### 测试删除,失败,和我们预期一致,因为role_yeyz这个角色,没有删除权限。
> db.test.remove({"name":"bbb"})
WriteCommandError({
    "ok" : 0,
    "errmsg" : "not authorized on yeyz to execute command { delete: \"test\", ordered: true, lsid: { id: UUID(\"b9daecb8-ffd8-44a7-8af0-d1115057539a\") }, $db: \"yeyz\" }",
    "code" : 13,
    "codeName" : "Unauthorized"
})

以上就是详解MongoDB的角色管理的详细内容,更多关于MongoDB的角色管理的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解MongoDB的角色管理

本文链接: https://www.lsjlt.com/news/122350.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解MongoDB的角色管理
    目录NO.1 MongoDB内建角色内建角色的种类和特点?数据库用户角色:数据库管理角色:集群管理角色:备份和恢复角色:全数据库角色超级用户:内部角色:MongoDB中的角色特点NO...
    99+
    2022-11-11
  • MongoDB复制集角色类型详解
                          MongoDB复制集角色类型Mo...
    99+
    2022-10-18
  • MySQL 8.0用户和角色管理原理与用法详解
    本文实例讲述了MySQL 8.0用户和角色管理。分享给大家供大家参考,具体如下: MySQL8.0新加了很多功能,其中在用户管理中增加了角色的管理, 默认的密码加密方式也做了调整,由之前的sha1改为了sha2,同时...
    99+
    2022-05-31
    MySQL 8.0 用户 角色管理
  • MySQL8功能详解——角色
    角色功能对于Oracle的DBA来说,不是什么特殊功能,但对于MySQL而言,这是一个人心所盼的功能。 MySQL的DBA现在可以创建角色、对其赋予权限,并将它们授予用户。使用角色可以大量减轻DBA的工作,可以轻松管理每个团队、用户的各种...
    99+
    2014-07-08
    MySQL8功能详解——角色
  • MongoDB用户及权限管理之角色说明的示例分析
    这篇文章给大家分享的是有关MongoDB用户及权限管理之角色说明的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mongodb安装完后默认是不开启auth模块的,普通用户...
    99+
    2022-10-19
  • jspXCMS角色管理怎么配置
    本篇内容介绍了“jspXCMS角色管理怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!角色是系统管理用户权限的核心功能。用户所拥有的权...
    99+
    2023-06-26
  • 如何使用MySQL角色管理
    这篇文章主要讲解了“如何使用MySQL角色管理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用MySQL角色管理”吧!1 配置 proxymysql&...
    99+
    2022-10-18
  • 4、Ora_Sec_创建和管理角色
    创建和管理角色角色是一组系统权限或对象权限,可以作为一个单元来授予或撤销,可以在会话中临时激活或禁用已经授予的权限。1、创建角色并授予权限CREATEROLE rolename; 案例:SQL&g...
    99+
    2022-10-18
  • mysql8.0 用户管理(角色、授权)
    我是傲骄鹿先生,沉淀、学习、分享、成长。 如果你觉得文章内容还可以的话,希望不吝您的「一键三连」,文章里面有不足的地方希望各位在评论区补充疑惑、见解以及面试中遇到的奇葩问法 一、用户管理 1.1 用户授权 MySQL8.0的用户授权...
    99+
    2023-09-06
    服务器 数据库 mysql 用户 权限
  • 怎么理解oracle角色
    本篇内容介绍了“怎么理解oracle角色”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!角色:创建角色:cr...
    99+
    2022-10-18
  • 详解如何使用Vuex实现Vue后台管理中的角色鉴权
    目录前言功能分析实现思路代码实现vuex中定义user模块,存储用户信息以及用户侧边导航数据router中路由meta中新增roles 定义当前路由可以访问的所有的角色ro...
    99+
    2022-11-13
  • MongoDB数据库角色的示例分析
    这篇文章给大家分享的是有关MongoDB数据库角色的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 Database User Roles ...
    99+
    2022-10-19
  • vue后台系统管理项目之角色权限分配管理功能(示例详解)
    目录角色权限分配管理功能role.vue模块1.查询重置搜索2.table列表3.分页4.新建/编辑角色弹窗5.接口引入6.data定义7.methods方法8.created加载角...
    99+
    2022-11-13
  • windows server2008 R2 角色迁移问题详解
    目录操作背景:环境:林级别域级别转移操作主机角色:占用操作主机角色:占用操作主机权限成功注意:操作背景: 在Master和slave节点都存活的状态下,将Master的五个角色转移给...
    99+
    2022-11-13
  • MongoDB数据库权限管理详解
    前几天网友问MongoDB数据库权限方面的问题。当时大致的了解了一下,这周仔细了解了一下。对于一个数据库不可能随意的访问,肯定要有写访问限制。 在了解这个之前首先熟悉下shell客户端。打开shell客户端的方法:mon...
    99+
    2022-07-07
    MongoDB数据库 权限管理
  • 如何管理数据库权限与角色
    下面一起来了解下如何管理数据库权限与角色,相信大家看完肯定会受益匪浅,文字在精不在多,希望如何管理数据库权限与角色这篇短内容是你想要的。          ...
    99+
    2022-10-18
  • Oracle12C多租户管理用户、角色、权限
    在Oracle12C中,用户权限的管理相对传统的 Oracle 单数据库环境稍有不同。在多租户环境中有两种类型的用户。①:共同用户(Common User): 该用户存在所有容器 (根和所有的 Pdb) 中...
    99+
    2022-10-18
  • Postgresql数据库角色创建登录详解
    目录角色创建可登录角色创建组角色角色 PG中使用角色(role)机制来解决用户身份认证。拥有登陆数据库权限的角色称之为可登录角色(login role)。一个角色可以继承其他角色的...
    99+
    2023-02-21
    Postgresql角色创建登录 Postgresql数据库
  • fastadmin框架,如何获取管理员的角色组
    在FastAdmin框架中,可以使用getGroups()方法来获取当前管理员所属的角色组。以下是获取当前管理员角色组的示例代码: php // 获取当前管理员的ID$adminId = Admin:...
    99+
    2023-09-27
    php
  • 如何使用MySQL 8.0用户和角色管理
    这篇文章主要为大家展示了如何使用MySQL 8.0用户和角色管理,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。MySQL8.0新加了很多功能,其中在用户管理中...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作