位置: 编程技术 - 正文

关于Mongodb 认证鉴权你需要知道的一些事(mongo认证失败)

编辑:rootadmin

推荐整理分享关于Mongodb 认证鉴权你需要知道的一些事(mongo认证失败),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mongodb dba认证,mongodb dba认证,关于mongodb的全面总结,mongodb dba认证,关于mongodb的全面总结,mongodb的认识,mongodb的认识,mongodb考试认证,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

本文主要给大家介绍了Mongodb认证鉴权的一些相关内容,通过设置认证鉴权会对大家的mongodb安全进一步的保障,下面话不多说了,来一起看看详细的介绍吧。

一、Mongodb 的权限管理

认识权限管理,说明主要概念及关系

与大多数数据库一样,Mongodb同样提供了一套权限管理机制。 为了体验Mongodb 的权限管理,我们找一台已经安装好的Mongodb,可以参照这里搭建一个单节点的Mongodb。

直接打开mongo shell:

尝试执行stats命令以查看appdb数据库的状态:

此时的提示正是说明你当前的操作没有获得许可,使用appdb预创建的用户进行鉴权:

可以发现,在通过验明身份之后,stats操作的鉴权获得了许可。

以上例子可能让你对数据库鉴权有了点浅显认识,那么接下来开始说点概念了,大致是叫基于角色的权限控制

[图-角色权限控制]

先解释下图中的几个实体:

Resource,资源 一个资源可以是一个数据库、集合、或者一个集群..往大了说,任何可能被操作的事物都可以被当做资源。 Action,动作 动作是指对资源的一个执行行为,比如读取表、读取数据库,其中读取便是一个动作。 Privilege,权限 权限指的是对某类或某一些资源执行某些动作的允许,与Permission的意义一致。 Role,角色 系统中的角色,通常是代表了一种权力等级的象征,比如论坛中的管理员、版主、游客等等,就是角色; 系统定义中,角色往往代表一组权限的集合。 User,用户 可登录系统的实体,一个用户通常可被赋予多个角色。

噢,关于图的简单解释: 权限定义了对某些资源的某些操作,角色则可以拥有多个权限; 用户User可以被赋予多个角色,从而获得这些角色所拥有的权限以操作某些资源。

对于Mongodb来说,只要开启鉴权,所有的DB访问操作都需要通过权限检查。而大致的操作流程跟下图类似

[图-mongo鉴权]

Mongodb 的用户归属于某个数据库,用户需要在所属的数据库中进行鉴权;一旦通过鉴权,当前的会话(连接)中所有操作将按照用户被赋予的角色权限执行检查。

二、鉴权方式

阐述Mongodb支持的几种鉴权方式 鉴权方式是指Mongodb如何识别接入用户,如何检查权限是否合法的一系列校验机制。

SCRAM-SHA-1 SCRAM-SHA-1 是默认的鉴权机制,定义于 IETF standard, RFC 是一种安全性较高的"挑战-应答"鉴权机制。关于"挑战-应答"可以参考维基百科 MongoDB Challenge and Response (MONGODB-CR) 3.0 以前采用的机制,已经废弃 x. Certificate Authentication. 基于证书的鉴权,采用该方式可建立 SSL/TLS 加密连接 LDAP proxy authentication 基于LDAP 系统的鉴权,仅企业版支持 Kerberos authentication 基于Kerberos 的鉴权,仅企业版支持

SCRAM-SHA-1 是当前推荐使用的鉴权方式,既然如此,有必要上图继续解释:

步骤解读

客户端发起一个SCRAM鉴权请求; 鉴权参数中带上用户名、客户端随机字符串(防止重放攻击); 服务端发出一个挑战响应; 服务侧先检查用户名,通过后生成一个salt因子、迭代数、合并字符串(包含客户端随机串和服务端随机串) 客户端响应一个proof(证明数据)和合并字符串; 响应的 proof数据根据服务所给的随机参数以及客户端密钥生成,是一个客户端签名与密钥异或计算后的结果; 服务端将存储的密钥结合随机参数,使用同样的算法生成签名并校验客户端 proof数据; 若校验通过,服务端采用类似方式发送自己的签名; 客户端校验服务端签名数据。

可以看到,SCRAM鉴权时也类似SSL/TLS 的握手过程,但相比之下简单许多,同时在性能方面也要具备优势; 然后我们看看安全性的部分:

信息窃听,传输过程中全部采用动态签名,保证密码不会被传输; 重放攻击,由于使用了随机数,每次生成的数据都不一样,可避免重复数据攻击; 服务假冒,鉴权过程是双向的,即客户端会校验服务端身份,而服务端密钥也根据密码生成,中间人无法仿造; 存储安全,密码在数据库中均没有明文存储,都通过不可逆的算法加密存储。

另外SCRAM-SHA-1 相比MONGODB-CR的优势还有:

A tunable work factor (iterationCount), 可灵活调整的安全系数 Per-user random salts rather than server-wide salts 每个用户有独立的随机系数 A cryptographically stronger hash function (SHA-1 rather than MD5), 更安全的hash函数 Authentication of the server to the client as well as the client to the server. 支持双向认证

对 SCRAM-SHA-1的实现感兴趣?戳这里

三、内部鉴权

关于Mongodb 认证鉴权你需要知道的一些事(mongo认证失败)

副本集、分片集群内鉴权方式

内部鉴权是指 Mongo集群内部节点之间进行访问的鉴权方式,比如副本集内主备之间的访问、分片集群内Mongos 与Mongod之间的访问。 内部鉴权目前支持两种方式:

KeyFiles 密钥文件方式,采用SCAM-SHA-1 的鉴权机制,文件内包含了一个共享密钥,由集群内所有成员共同持有。 通常,密钥的长度在6-字符内,采用Base编码。如何使用&#; X. 证书 证书鉴权,用于SSL/TLS加密连接通道。 如何使用&#;

四、数据库角色

针对Mongodb数据库中的各种角色进行说明

数据库访问

角色名称 拥有权限 read 允许读取指定数据库的角色 readWrite 允许读写指定数据库的角色

数据库管理

角色名称 拥有权限 dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile userAdmin 允许管理当前数据库的用户,如创建用户、为用户授权 dbOwner 数据库拥有者(最高),集合了dbAdmin/userAdmin/readWrite角色权限

集群管理

角色名称 拥有权限 clusterAdmin 集群最高管理员,集合clusterManager/clusterMonitor/hostManager角色权限 clusterManager 集群管理角色,允许对分片和副本集集群执行管理操作,如addShard,resync等 clusterMonitor 集群监控角色,允许对分片和副本集集群进行监控,如查看serverStatus hostManager 节点管理角色,允许监控和管理节点,比如killOp、shutdown操作

备份恢复

角色名称 拥有权限 backup 备份权限,允许执行mongodump操作 restore 恢复权限,允许执行mongoresotre操作

数据库通用角色

角色名称 拥有权限 readAnyDatabase 允许读取所有数据库 readWriteAnyDatabase 允许读写所有数据库 userAdminAnyDatabase 允许管理所有数据库的用户 dbAdminAnyDatabase 允许管理所有数据库

特殊角色

角色名称 拥有权限 root 超级管理员,拥有所有权限 __system 内部角色,用于集群间节点通讯

基本是这些,有兴趣可看看官方的内置角色 Mongodb 的用户及角色数据一般位于当前实例的 admin数据库,system.users存放了所有数据; 存在例外的情况是分片集群,应用接入mongos节点,鉴权数据则存放于config节点。因此有时候为了方便分片集群管理,会单独为分片内部节点创建独立的管理操作用户;

五、相关操作

简单列举用户权限相关的常用操作

授权启动

默认为非授权启动 也可以通过security.authorization配置指定

创建管理员用户

创建用户

授予权限

删除权限

更多操作

六、常见问题

shell 操作提示错误

原因:当前连接未鉴权或用户没有操作权限 解决:为用户分配适当权限,并执行auth操作,如下:

无法执行 eval 操作

db.eval() 是一个全局操作,可执行任意数据库脚本; 执行该命令需要拥有anyAction或anyResource的权限,通常不建议为数据库用户赋予这样的权限。 该命令存在安全风险,已不建议使用(mongodb 3.0之后已经过期)。

总结

标签: mongo认证失败

本文链接地址:https://www.jiuchutong.com/biancheng/312692.html 转载请保留说明!

上一篇:windows7下使用MongoDB实现仓储设计(windows7基本使用教程)

下一篇:MongoDB TTL索引的实例详解(mongodb 全文索引)

  • 一般纳税人做账流程图
  • 计提企业所得税会计科目
  • 计提环境保护税怎么计算
  • 资产负债表利润表和现金流量表之间的关系
  • 小规模免税销售额是含税还是不含税
  • 企业实际发生的公益性捐赠支出
  • 预收货款存入银行分录
  • 包装材料报废后如何做会计核算?
  • 食堂开支计入什么科目
  • 建筑行业会计如何合理避税
  • 月结发票与实缴发票可以一起报销吗
  • 小规模纳税人可以抵扣进项税吗
  • 退以前年度所得税会计分录
  • 单独估价作为固定资产入账的土地为什么不计提折旧
  • 损益表现金流量表资产负债表
  • 增值税的销项税额和进项税额的区别
  • 小规模企业增值税税收优惠政策2023
  • 分支机构企业所得税是否必须跟总公司分摊吗
  • 城镇土地使用税税率
  • 收到财政补贴收入贷记科目是
  • 建筑物拆除物资包括哪些
  • 无线路由器1200m覆盖范围
  • win10用户头像错误 设置用户头像失败,请再试一次
  • 个人所得税计算方法及抵扣方法
  • 清除cookies有什么用
  • 二手固定资产使用年限
  • 笔记本电池的正负极区分
  • 小米mini路由器mesh
  • 金融企业会计计提贷款呆账准备金主要贯彻了
  • 包工队人员受伤该由谁负责
  • PHP:checkdate()的用法_Date Time函数
  • 海恩斯科普简介
  • php tr td
  • php单例模式的简写是什么
  • 工程项目会计怎么样
  • php数据的提交与采集实验报告
  • 【C#+JavaScript+SQL Server】实现Web端考试系统 六:后台管理模块设计(附源码和资源)
  • 数学建模 比赛
  • 售后租回交易的资产销售价低于市场价承租人作为
  • 金蝶软件账套备份在哪里
  • 公司基本户可以异地开户吗
  • mongodb的安装配置
  • 分公司可以单独上市吗
  • 不抵扣勾选的发票在哪里查看
  • 每月企业所得税怎么征收
  • sql函数coalesce
  • 存货和固定资产一经计提减值以后期间不得转回
  • mysql数据库简单介绍
  • 清洁费用属于哪个会计科目
  • 营业执照作废声明
  • 无法收回的应收账款可以税前扣除吗
  • 账上的进项税额比申报多了怎么调账
  • 报销人跟领款人有什么区别
  • 股东借款可以直接转为实缴出资吗
  • 水利建设基金一直没缴纳
  • 服务佣金最高可以收多少
  • 医药企业研发费用构成
  • 房地产企业收入确认条件税法
  • 会计总账怎么登账
  • mysql5.7版本的服务的名字是
  • mysql使用入门教程视频
  • win8磁盘占用率100%如何解决
  • windows8开机启动项在哪里设置
  • pdf在电脑上打开
  • windows下用CMD调用COM口
  • 简述javascript中的函数
  • 如何旋转图片30度
  • Node.js中的全局变量有哪些
  • js控制display属性
  • javascriptz
  • Python3.6正式版新特性预览
  • 调试动态加载的js
  • javascript scrollLeft,scrollWidth,clientWidth,offsetWidth 完全详解
  • jq cookie
  • javascript面向对象编程指南第三版
  • 海关跟税务关系的区别
  • 山东威海文登宋村镇有哪些村
  • 广东省社保缴费基数
  • 自来水公司服务热线电话
  • 2020年个税截止时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设