首页 > 数据库 >MongoDB创建只读用户并授权指定集合的查询权限

MongoDB创建只读用户并授权指定集合的查询权限

时间:2024-11-14 23:18:46浏览次数:1  
标签:name 只读 MongoDB db find testdb test 权限 id

MongoDB创建只读用户并授权指定集合的查询权限

创建测试数据

use testdb
db.test_t.insertOne({id:1,name:'zhangsan'});
db.test_t.insertOne({id:2,name:'lisi'});
db.test_t1.insertOne({id:1,name:'zhangsan'});
db.test_t1.insertOne({id:2,name:'lisi'});
db.test_t2.insertOne({id:1,name:'zhangsan'});

创建一个自定义角色,只允许在 testdb 数据库的 test_t1test_t2 集合上执行查询操作。

use testdb

db.createRole({
  role: "read_testdb",  // 角色名称
  privileges: [
    {
      resource: { db: "testdb", collection: "test_t1" },  // 对testdb数据库下的test_t1集合授予权限
      actions: [ "find" ]  // 允许查询操作(find)
    },
    {
      resource: { db: "testdb", collection: "test_t2" },  // 对testdb数据库下的test_t2集合授予权限
      actions: [ "find" ]
    }
  ],
  roles: []  // 没有继承其他角色
})

创建用户并分配角色

use testdb

db.createUser({
  user: "test_user",  // 用户名
  pwd: "test_user",  // 用户密码
  roles: [
    { role: "read_testdb", db: "testdb" }  // 分配刚才创建的角色
  ]
})

验证权限

[mongodb@mongo190 ~]$ mongosh -u test_user -p test_user 192.168.1.190:27017/testdb
Current Mongosh Log ID: 6736122884c4113b2f1bd68d
Connecting to:          mongodb://<credentials>@192.168.1.190:27017/testdb?directConnection=true&appName=mongosh+1.10.1
Using MongoDB:          6.0.6
Using Mongosh:          1.10.1

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

 
Enterprise testdb> db.test_t1.find()
[
  {
    _id: ObjectId("67360308cd77db51ff44f83a"),
    id: 1,
    name: 'zhangsan'
  },
  { _id: ObjectId("67360308cd77db51ff44f83b"), id: 2, name: 'lisi' }
]
Enterprise testdb> db.test_t2.find()
[
  {
    _id: ObjectId("67360371cd77db51ff44f83c"),
    id: 1,
    name: 'zhangsan'
  }
]
Enterprise testdb> db.test_t.find()
MongoServerError: not authorized on testdb to execute command { find: "test_t", filter: {}, lsid: { id: UUID("89d7523d-ce34-41f7-bb6e-d304e3ccf66a") }, $db: "testdb" }
Enterprise testdb> 

标签:name,只读,MongoDB,db,find,testdb,test,权限,id
From: https://www.cnblogs.com/knlbase/p/18547132

相关文章

  • 揭秘黑客手法:如何通过密码搜寻在 Linux 系统中实现权限提升
    文章目录前言1、密码搜寻–文件名和文件内容1.1、寻找有趣的文件名1.2、寻找有趣的字符串2、密码搜寻–Web文件/Config文件2.1、Config文件中的密码2.2、Web文件中的密码2.2.1、使用Hashcat破解密码3、密码搜寻–隐藏文件/文件夹3.1、隐藏文件/文件夹中的......
  • 解决 uniapp打包app 使用uview的图片上传导致的 您的应用在运行时,未同步告知权限申请
    该问题主要原因是因为u-upload的组件在点击上传组件就直接触发了权限获取而华为的要求是点击拍摄提示获取相机权限并提示点击从相册选择获取存储权限并提示本文主要解决uview的u-upload导致的问题解决思路为修改u-upload组件在u-upload组件添加以下代码//自定义......
  • 权限系统:权限应用服务设计Tu
    大家好,我是汤师爷~今天聊聊权限系统的应用服务设计。从业务需求的角度来看,权限系统需要解决两个核心问题:1、菜单渲染与动态展示当用户成功登录并接入系统后,系统需要动态获取并展示该用户有权限访问的菜单项。这一过程涉及前端系统与权限系统的交互。前端系统会向权限系统发......
  • 精准管理特定访客的所有权限,构建高效知识库系统
    企业管理中,精准控制访客的内容权限历来是一项复杂而关键的挑战。传统方法因其操作繁琐,往往难以实现对不同访客访问权限的细致管理。为此,HelpLook在近期功能升级中,特别推出了更精细化的访客内容权限管理功能。以人员为核心维度,实现了对特定人员文章及栏目访问权限的精细化......
  • Linux12位权限管理体
    1.Linux12位权限管理体1.1权限管理概述Linux通过rwx3种权限控制系统与保护系统,组成9位权限.Linux权限体系中还有3位特殊权限,组合起来就是12位权限体系.Linux这简单的rwx控制整个Linux系统的安全,权限与用户共同组成Linux系统的安全防护体系.1.2Linux权限计算2.0rwx......
  • 权限系统:权限应用服务设计
    大家好,我是汤师爷~今天聊聊权限系统的应用服务设计。从业务需求的角度来看,权限系统需要解决两个核心问题:1、菜单渲染与动态展示当用户成功登录并接入系统后,系统需要动态获取并展示该用户有权限访问的菜单项。这一过程涉及前端系统与权限系统的交互。前端系统会向权限系统发......
  • Android运行时请求权限封装
    @目录1介绍2测试用例设计3实现4用例测试5总结本文目的:“借助透明Activity封装一个易于调用的权限请求模块”1介绍Android权限的校验和申请比较简单,但在实际项目中使用时还要进行系统版本的适配,最不友好的是权限的申请结果需要在onRequestPermissionsResult中进行判断,如......
  • [ Linux 命令基础 ] Linux 命令大全-命令前置知识-系统管理-文件和目录管理-文本处理
    ......
  • Privilege Escalation(权限提升)
    PrivilegeEscalation(权限提升)WhattheShell?Whatisashellshell是我们与命令行环境(CLI)交互时使用的工具。换句话说,Linux中常见的bash或sh程序都是shell的例子,Windows上的cmd.exe和Powershell也是如此。简而言之,我们可以强制远程服务器向我们发送对服务......
  • fastadmin 数据记录行上添加操作按钮并设置权限
    1.一键curd以及配置菜单编写控制器方法-业务逻辑再次一键生成菜单-生成刚刚写审核通过方法的控制器。 2.自定义控制器中方法。3.查看角色组的权限,并授予该角色权限。4.前端修改index页面,因为需要权限所以需要加上一句话data-operate-log="{:$auth->check('......