返回顶部
首页 > 资讯 > 数据库 >MongoDB安全及身份认证的示例分析
  • 772
分享到

MongoDB安全及身份认证的示例分析

2024-04-02 19:04:59 772人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“mongoDB安全及身份认证的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MonGoDB安全及身份认证的示例分析”这篇文章吧

这篇文章主要为大家展示了“mongoDB安全及身份认证的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MonGoDB安全及身份认证的示例分析”这篇文章吧。

概述

MongoDB安全主要包括以下4个方面

1、物理隔离

系统不论设计的多么完善,在实施过程中,总会存在一些漏洞。如果能够把不安全的使用方与MongoDB数据库做物理上的隔离,即通过任何手段都不能连接到数据库,这是最安全的防护。但,通常这是不现实的。一些重要的数据可能会保存下来,放置到物理隔离的机房中

2、网络隔离

许多公司的开发机处于内网环境中。即使数据库存在漏洞,外部环境也没有机会利用,因为根本无法访问内网

3、防火墙隔离

可以利用防火墙配置IP白名单,只允许某些IP访问数据库,也可以从一定程度上增加MongoDB的安全性

4、用户名密码鉴权

相对于以上3种方式,用户名密码鉴权机制是最常见的MongoDB安全措施。如果密码设置的比较简单,或者连接环境不是加密环境,很可能被第三方获取到用户名和密码,从而造成MongoDB数据库的危险

权限认证

mongodb存储所有的用户信息在admin数据库的集合system.users中,保存用户名、密码和数据库信息。mongodb默认不启用权限认证,只要能连接到该服务器,就可连接到mongod。若要启用安全认证,需要更改配置文件参数authorization,也可以简写为auth。

MongoDB安全及身份认证的示例分析

然后,重启mongod。查看日志文件,发现权限认证已经开启

MongoDB安全及身份认证的示例分析

但是,不使用用户名和密码依然可以连接到数据库。这是因为,我们还没有创建用户。在用户创建,并且开启权限认证之后,如果不使用用户名和密码将不能够连接到数据库

角色管理

在进行用户管理之前,首先要先了解角色管理

MongoDB支持基于角色的访问控制(RBAC)来管理对MongoDB系统的访问。一个用户可以被授权一个或者多个:ref:角色 <roles>以决定该用户对数据库资源和操作的访问权限。在权限以外,用户是无法访问系统的

数据库角色在创建用户中的role参数中设置。角色分为内建角色和自定义角色

【内建角色】

MongoDB内建角色包括以下几类

1、数据库用户角色

read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库

2、数据库管理员角色

dbAdmin:允许用户进行索引创建、删除,查看统计或访问system.profile,但没有角色和用户管理的权限
userAdmin:提供了在当前数据库中创建和修改角色和用户的能力
dbOwner: 提供对数据库执行任何管理操作的能力。这个角色组合了readWrite、dbAdmin和userAdmin角色授予的特权。

3、集群管理角色

clusterAdmin : 提供最强大的集群管理访问。组合clusterManager、clusterMonitor和hostManager角色的能力。还提供了dropDatabase操作
clusterManager : 在集群上提供管理和监视操作。可以访问配置和本地数据库,这些数据库分别用于分片和复制
clusterMonitor : 提供对监控工具的只读访问,例如MongoDB云管理器和Ops管理器监控代理。
hostManager : 提供监视和管理服务器的能力。

4、备份恢复角色

backup : 提供备份数据所需的能力,使用MongoDB云管理器备份代理、Ops管理器备份代理或使用mongodump
restore : 提供使用mongorestore恢复数据所需的能力

5、所有数据库角色

readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

6、超级用户角色

root:提供对readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin、restore和backup的所有资源的访问

7、内部角色

__system : 提供对数据库中任何对象的任何操作的特权

【自定义角色】

除了使用内建的角色之外,MongoDB还支持使用db.createRole()方法来自定义角色

[注意]只能在admin数据库中创建角色,否则会失败

role: 自定义角色的名称

privileges: 权限操作 

roles:继承的角色。如果没有继承的角色,可以设置为空数组 

use admin
db.createRole(
  {
   role: "myClusterwideadmin",
   privileges: [
    { resource: { cluster: true }, actions: [ "addShard" ] },
    { resource: { db: "config", collection: "" }, actions: [ "find", "update", "insert", "remove" ] },
    { resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert", "remove" ] },
    { resource: { db: "", collection: "" }, actions: [ "find" ] }
   ],
   roles: [
    { role: "read", db: "admin" }
   ]
  },
  { w: "majority" , wtimeout: 5000 }
)

MongoDB安全及身份认证的示例分析

用户管理

【创建用户】

使用createUser命令来创建用户

user: 用户名 pwd: 密码

customData: 对用户名密码的说明(可选项)

roles: {role:继承自什么角色类型,db:数据库名称}

db.createUser({user: "...",pwd: "...",customDate:"...",roles:[{role: "...",db: "..."}]})

1、创建管理员用户

MongoDB没有默认管理员账号,所以要先添加管理员账号。切换到admin数据库,添加的账号才是管理员账号

在admin数据库中,添加一个用户并赋予userAdminAnyDatabase角色

db.createUser({user: "admin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})

MongoDB安全及身份认证的示例分析 

2、重新登录数据库,并验证权限

如果auth()方法返回0则代表授权失败,返回1代表授权成功

db.auth()

MongoDB安全及身份认证的示例分析

3、添加普通用户

一旦经过认证的用户管理员,可以使用db.createUser()去创建额外的用户。 可以分配mongodb内置的角色或用户自定义的角色给用户

MongoDB安全及身份认证的示例分析

[注意]需要在admin数据库下进行认证,否则认证不成功

MongoDB安全及身份认证的示例分析

由于该用户只有读权限,所以会写入数据失败

MongoDB安全及身份认证的示例分析

4、创建超级用户

MongoDB安全及身份认证的示例分析

【查看用户】

db.system.users.find()

MongoDB安全及身份认证的示例分析

【删除用户】

db.dropUser()

MongoDB安全及身份认证的示例分析

【添加用户权限】

db.grantRolesToUser()

给在db1数据库中只读的x用户,添加写权限

MongoDB安全及身份认证的示例分析

【修改密码】

db.changeUserPassword()

MongoDB安全及身份认证的示例分析

以上是“MongoDB安全及身份认证的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: MongoDB安全及身份认证的示例分析

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

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

猜你喜欢
  • MongoDB安全及身份认证的示例分析
    这篇文章主要为大家展示了“MongoDB安全及身份认证的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MongoDB安全及身份认证的示例分析”这篇文章吧...
    99+
    2024-04-02
  • 启用skywalking身份安全认证
    目录 1.  Nginx部署 1.1更新系统软件包 1.2安装EPEL存储库 1.3安装Nginx 2.  修改 Nginx 配置文件 2.1.     字段解释 3. 创建存储用户名和密码的文件 3.1 安装htpasswd工具 3.2...
    99+
    2023-09-06
    nginx 运维 服务器
  • node.js实现身份认证的示例代码
    请问昨天结束的早是对堆积在了今天吗,今天还来加个班更博,看在这个毅力的份上能否给亿点点推荐。 有个好消息有个坏消息,先说坏消息吧,就是在这么学下去我急需急支糖浆,来回顾回顾前面的知识...
    99+
    2024-04-02
  • 浅析MongoDB之安全认证
    目录一、MongoDB的用户和角色权限简介1.1、查看所有内置角色1.2、常见的内置角色二、单实例环境2.1、创建用户2.2、服务端开启认证2.3、客户端登录认证三、副本集环境3.1...
    99+
    2024-04-02
  • Express实现Session身份认证的示例代码
    目录CookieHTTPCookieSessionSession VS CookieExpress 实现 Session 身份认证获取配置登录主页退出登录代码总汇Cookie HTT...
    99+
    2023-01-31
    Express Session身份认证 Express 身份认证
  • 分布式服务Dubbo+Zookeeper安全认证的示例分析
    这篇文章给大家分享的是有关分布式服务Dubbo+Zookeeper安全认证的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题Zookeeper+dubbo,如何设置安全认证?不想让其他服务连接Zooke...
    99+
    2023-05-30
    dubbo zookeeper
  • Node.js 安全强化:身份验证与授权的全面分析
    身份验证 身份验证是在用户尝试访问受保护资源之前验证其身份的过程。Node.js 提供多种身份验证机制,包括: 基于会话的 cookie:会话 cookie 在用户登录时创建,并包含有关其身份的加密信息。 JSON Web 令牌 (JW...
    99+
    2024-04-02
  • 将15位身份证补全为18位身份证的算法示例详解
    前言最近在参与一个银行项目-某银行安防系统-反洗钱需求的开发,银行项目的离不开身份证号码,身份证号码作为我国公民的唯一标识,有这非同寻常的意义,由于业务的要求15位的身份证号码无法命中,所以需要补全为18位,一开始自己想着加个年份的前两位,...
    99+
    2023-05-31
    15位身份证 18位身份证 算法
  • k8s实现身份认证策略及过程解析
    目录身份认证策略API Server启用的身份认证机制kubelet启用的身份认证机制X.509数字证书认证静态令牌文件Service Account令牌OpenID Connect...
    99+
    2023-02-13
    k8s 身份认证策略 k8s 身份认证
  • docker中k8s认证及serviceaccount、RBAC的示例分析
    这篇文章给大家分享的是有关docker中k8s认证及serviceaccount、RBAC的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。    目前RBAC是k8s授权方式最常用的一...
    99+
    2023-06-04
  • MySQL安装及MySQL8.0新密码认证方式的示例分析
    小编给大家分享一下MySQL安装及MySQL8.0新密码认证方式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、前言...
    99+
    2024-04-02
  • Web登录认证类漏洞分析和安全验证机制设计的示例分析
    本篇文章为大家展示了Web登录认证类漏洞分析防御总结和安全验证机制设计的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。web登录认证方面,从子功能上可以划分为登录框登录、忘记密码(密码重置)...
    99+
    2023-06-17
  • go语言beego框架jwt身份认证实现示例
    目录一 引入jwt二 框架中引入jwt三 使用一 引入jwt jwt用户身份验证 go get github.com/dgrijalva/jwt-go 二 框架中引入jwt imp...
    99+
    2024-04-02
  • 微信小程序官方人脸核身认证的示例分析
    这篇文章主要介绍微信小程序官方人脸核身认证的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!小程序收集了下用户个人信息上传被打回来说:你好,小程序页面功能涉及:采集用户生物特征(人脸照片或视频)及其他敏感信息,...
    99+
    2023-06-15
  • Linux认证考试的示例分析
    这篇文章主要为大家展示了“Linux认证考试的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux认证考试的示例分析”这篇文章吧。Linux认证评估一个人在Linux的各个领域里的专...
    99+
    2023-06-27
  • Asp.net Core中实现自定义身份认证的示例代码
    Asp.Net Core中虽然集成了许多常用的身份认证,但很多时候,我们还是需要实现自己的身份认证接口,本文这里就简单的介绍下如何实现自定义身份认证接口。 首先写一个简单的接口...
    99+
    2022-06-07
    自定义 ASP.NET net 示例 core ASP
  • kubernetes中安全机制API Server认证之Service Account Token的示例分析
    这篇文章主要介绍了kubernetes中安全机制API Server认证之Service Account Token的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一...
    99+
    2023-06-04
  • thinkphp中Auth类认证的示例分析
    这篇文章主要介绍了thinkphp中Auth类认证的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了,...
    99+
    2023-06-15
  • C#实现身份证验证功能的示例代码
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-20
    C#身份证验证 C# 验证 C#身份证
  • Python HTTP请求与身份认证:让你的网络应用更加安全
    Python是一种广泛使用的编程语言,它具有丰富的库和框架,可以帮助您轻松构建网络应用。HTTP请求是网络应用与服务器之间进行通信的主要手段,身份认证则是保护网络应用安全的重要措施。 在Python中,可以使用多种库来发送HTTP请求,...
    99+
    2024-02-23
    Python HTTP请求 身份认证 安全
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作