MongoDB 基于角色的访问控制

news2024/11/17 23:56:33

一、概述

MongoDB采用基于角色的访问控制(RBAC)来管理对 MongoDB系统。向用户授予一个或多个角色那 确定用户对数据库资源和操作的访问权限。外面 在角色分配中,用户无权访问系统。

1、启用访问控制

MongoDB默认情况下不启用访问控制。您可以使用--auth或security.authorization设置启用授权。启用内部身份验证还可以启用客户端授权。
一旦启用了访问控制,用户就必须对自己进行身份验证。
角色
角色授予对资源执行指定操作的权限。每个特权要么在角色中明确指定,要么从另一个角色继承,或者两者兼而有之。

访问
角色从不限制特权。若一个用户有两个角色,那个么具有较大访问权限的角色优先。
例如,如果将数据库上的读取角色授予已具有readWriteAnyDatabase角色的用户,则读取授予不会撤消对该数据库的写入访问权限。
要撤消用户的角色,请使用revokeRolesFromUser命令。

身份验证限制
角色可以对用户施加身份验证限制,要求他们从指定的源和目标IP地址范围进行连接。
有关详细信息,请参阅身份验证限制。
权限
权限由指定的资源和对该资源允许的操作组成。
资源是数据库、集合、集合集或集群。如果资源是集群,则附属操作会影响系统的状态,而不是特定的数据库或集合。有关资源文档的信息,请参见资源文档。
操作指定对资源允许的操作。有关可用操作,请参阅特权操作。

继承的权限
一个角色可以在其定义中包含一个或多个现有角色,在这种情况下,该角色将继承所包含角色的所有权限。
角色可以从其数据库中的其他角色继承特权。在管理数据库上创建的角色可以从任何数据库中的角色继承权限。
查看角色的权限
您可以通过在showPrivileges和showBuiltinRoles字段均设置为true的情况下发出rolesInfo命令来查看角色的权限。

用户和角色
您可以在创建用户期间为用户分配角色。您还可以更新现有用户以授予或撤销角色。有关用户管理方法的完整列表,请参阅用户管理
分配了角色的用户将获得该角色的所有权限。一个用户可以具有多个角色。通过分配给各种数据库中的用户角色,在一个数据库中创建的用户可以拥有对其他数据库执行操作的权限。

内置角色和用户定义的角色
MongoDB提供了内置的角色,这些角色提供了数据库系统中通常需要的一组权限。
如果这些内置角色无法提供所需的权限集,MongoDB将提供创建和修改用户定义角色的方法。
LDAP授权
MongoDB Enterprise支持在LDAP服务器上查询经过身份验证的用户所属的LDAP组。MongoDB将每个返回组的可分辨名称(DN)映射到管理数据库上的角色。MongoDB根据映射的角色及其相关特权对用户进行授权。有关详细信息,请参阅LDAP授权。

二、内置角色

MongoDB通过基于角色的授权授予对数据和命令的访问权限,并提供内置角色,提供数据库系统中通常需要的不同级别的访问权限。您还可以创建用户定义的角色。
角色授予对定义的资源执行一组操作的权限。给定的角色应用于在其上定义它的数据库,并且可以授予向下到粒度集合级别的访问权限。
MongoDB的每个内置角色都定义了在数据库级别访问角色数据库中的所有非系统集合,以及在集合级别访问所有系统集合。
MongoDB提供了内置的数据库用户和数据库管理每个数据库上的角色。MongoDB仅在管理数据库上提供所有其他内置角色。
本节介绍每个内置角色的权限。您还可以随时通过发出rolesInfo命令查看内置角色的权限,其中showPrivileges和showBuiltinRoles字段均设置为true。

1、数据库用户角色

每个数据库都包括以下客户端角色:
read
提供读取所有非系统集合和system.js集合上的数据的功能。

该角色通过授予以下操作来提供读取访问权限:

  • changeStream
  • collStats
  • dbHash
  • dbStats
  • find
  • killCursors
  • listIndexes
  • listCollections

如果用户没有listDatabases权限操作,则如果在authorizedDatabases选项未指定或设置为true的情况下运行该命令,则用户可以运行listDatabases命令以返回用户具有权限的数据库列表(包括用户在特定集合上具有特权的数据库)。

readWrite

提供读取角色的所有权限,以及修改所有非系统集合和system.js集合上的数据的能力。
该角色对这些集合提供以下操作:

  • changeStream
  • collStats
  • convertToCapped
  • createCollection
  • dbHash
  • dbStats
  • dropCollection
  • createIndex
  • dropIndex
  • find
  • insert
  • killCursors
  • listIndexes
  • listCollections
  • remove
  • renameCollectionSameDB
  • update

2、数据库管理角色

每个数据库都包括以下数据库管理角色:

dbAdmin

提供执行管理任务的能力,例如与架构相关的任务、索引和收集统计信息。此角色不授予用户和角色管理权限。
具体而言,该角色提供以下特权:

 

 dbOwner

数据库所有者可以对数据库执行任何管理操作。此角色结合了readWrite、dbAdmin和userAdmin角色授予的权限。

userAdmin

提供在当前数据库中创建和修改角色和用户的功能。由于userAdmin角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接地为超级用户提供对数据库的访问权限,或者如果作用域为admin数据库,则为集群提供访问权限。
userAdmin角色明确提供以下操作:

  • changeCustomData
  • changePassword
  • createRole
  • createUser
  • dropRole
  • dropUser
  • grantRole
  • revokeRole
  • setAuthenticationRestriction
  • viewRole
  • viewUser

三、用户定义角色

四、管理用户和角色 

五、更改密码和自定义数据

📢文章下方有交流学习区!一起学习进步!也可以前往官网,加入官方微信交流群💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗ 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/682119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Facebook Insights分析工具解读,掌握关键数据指标

什么是Facebook Insights? Facebook Insights是Facebook平台上的一项内置分析工具,旨在帮助企业和品牌了解其在Facebook上的表现和受众互动情况。该工具提供了丰富的数据和指标,可以帮助用户洞察粉丝群体、了解发布内容的表现,并…

闭门造轮(LVGL_2)

例程1_// 组件(widgets): 标签(label)的用法 static void label_event_cb(lv_event_t * e) {lv_obj_t * obj lv_event_get_target(e); // 获取触发事件的部件(对象)lv_event_code_t code lv_event_get_code(e); // 获取当前部件(对象)触发的事件代码sw…

Golang每日一练(leetDay0105) 最小高度树、戳气球

目录 310. 最小高度树 Minimum Height Trees 🌟🌟 312. 戳气球 Burst Balloons 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一…

用自定义域名访问Tailscale节点

需求 tailscale 是好东西,在任何地方都可以和在局域网访问一样,但是也有着 IP 访问的不便,一方面 IP 是 tailscale 分配的(非子网路由模式),另一方面还要记住各种端口 tailscale 也考虑到了这些问题&…

SpringBoot 使用 TestRestTemplate 进行 RESTful API 集成测试

SpringBoot 使用 TestRestTemplate 进行 RESTful API 集成测试 RESTful API 集成测试是测试应用程序与其外部依赖项之间的集成。SpringBoot提供了TestRestTemplate来测试RESTful API,本文将介绍如何使用TestRestTemplate进行RESTful API集成测试。 1. 什么是 TestR…

java File类 和 IO流

File类 文件和文件夹(文件路径)的抽象表示,是专门来出来磁盘上面的文件或文件夹的 构造方法 方法 返回boolean creatNewFile() 生成一个文件,当且仅当具有该名称的文件尚不存在时 public class Demo02 {public static void main(String[] args) th…

知了汇智网安项目实训助力高校实战型人才培养

当前,随着信息技术的高速发展和网络的普及应用,网络安全面临着日益复杂和严峻的挑战。恶意黑客、网络病毒、数据泄露等安全威胁不断涌现,给个人、企业和国家的信息资产和社会稳定带来了巨大风险。新形势之下,培养网络安全实战型人…

深眸科技受邀参加昆山元宇宙装备展与产业论坛,为工业视觉注智赋能

为落实《“十四五”数字经济发展规划》,进一步夯实元宇宙在终端装备领域的落地与拓展,江苏昆山将于6月27至29日,举办“2023元宇宙装备展”。本届展会由昆山市人民政府主办,昆山市工业和信息化局、赛迪工业和信息化研究院集团&…

力扣题库刷题笔记8--字符串转换正数(atoi)

1、题目如下: 2、个人Python代码实现如下: 这里可以看到,解答错误很多次,实际上就是对于题目的条件读的不够细,导致很多边界值的用例跑不过。而且个人习惯极其不好,没有输入各种可能的输入进行调试&#xf…

【计算机网络自顶向下】计算机网络期末自测题(一)答案

2019-2020 学年第 2 学期自测题答案及评分标准 (卷 1) 计算机网络 一、 填空题: 参考答案: 1 、 01000101 、11100111 3 、 100Mbps、双绞线、基带、全双工 [10Mbps 要求单位] 4 、 报文 5 、 ICMP 6 、 虚电路 7 、 距离矢量、链路状态 …

考虑充电负荷空间可调度特性的分布式电源与电动汽车充电站联合配置方法(matlab代码)

目录 1 主要内容 目标函数 电动汽车负荷建模 算例系统图 程序亮点 2 部分代码 3 程序结果 ​4 下载链接 1 主要内容 该程序复现博士文章《互动环境下分布式电源与电动汽车充电站的优化配置方法研究》第四章《考虑充电负荷空间可调度特性的分布式电源与电动汽车充电站联…

【抗扰PID控制】干扰抑制PID控制器研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Excel管理工具简陋但强大 vs 雷军为何说“没有设计是最好的设计

解密:雷军为何说“没有设计是最好的设计” 雷军洗白:没有刻意的设计才是最好的设计! 有的人开发了10个到50个,甚至几百个Excel管理工具。每个工具里面有VBA代码几千行。 还有个高手,趁过年一个月左右时间完成一个公司用…

SAP ABAP DIALOG 表格控件的简单例子<转载>

本文是一个很见到的ALV表格控件例子,但是原文作者写的很详细,所以借过来一用,很适合新手练手用。在这里感谢原文作者大大! 原文链接:https://mp.weixin.qq.com/s/bhP3w5DIADdf9P624C5kpw 表格控件是ABAP编程中最常用的…

0基础学习VR全景平台篇第48篇:高级功能-密码访问

功能位置示意 一、本功能将用在哪里? 密码访问功能,常用于暂未交付的项目,使用密码访问保护作品数据的私密性; 或为满足不同情境下的推广需求使用。 二、如何使用本功能? 1、选择-密码访问功能; 2、输入…

nvm使用大全nvm如何动态切换node版本

注意: nvm use node版本时,要使用管理员权限打开cmd输入命令,否则报错 常用命令 nvm ls :列出所有已安装的 node 版本 nvm list :列出所有已安装的 node 版本 nvm list available :显示所有可下载的版本 …

较旧系统的轻量级的LINUX发行版—FATDOG64

导读我们回顾FatDog64 Linux,这个轻量级的Linux发行版可能不是现代的,但它非常适合于老化的计算机,fatdog64 Linux是一个小而灵活的64位多用户Linux发行版。 有一个Linux发行版几乎每一个都需要,有Linux分布的黑客,天…

【NLP】Word2vec概念和演进史

一、说明 “万物都有一种模式,它是我们宇宙的一部分。它具有对称、优雅和优雅——这些品质你总能在真正的艺术家捕捉到的作品中找到。” ~ 沙丘 (1965) 对于word2vec,它不是一个或一种算法,而是一系列思想和算法的综合。本文通过有限篇幅&…

信创优选,国产开源,Solon v2.3.6 发布

Solon 是什么开源项目? 一个,Java 新的生态型应用开发框架。它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态)。与其他框架相比,它解决了两个重要的痛点&#xff…

uniapp中小程序的生命周期

一、uni-app应用生命周期 函数名说明onLuaunch当uni-app 初始化完成时触发(全局只触发一次)onShow当 uni-app 启动,或从后台进入前台显示onHide当 uni-app 从前台进入后台onError当 uni-app 报错时触发onUniNViewMessage对 nvue 页面发送的数…