你的位置:首页 > 软件开发 > Java > MongoDB安全及身份认证

MongoDB安全及身份认证

发布时间:2017-07-20 00:00:11
前面的话  本文将详细介绍MongoDB安全相关的内容 概述  MongoDB安全主要包括以下4个方面  1、物理隔离  系统不论设计的多么完善,在实施过程中,总会存在一些漏洞。如果能够把不安全的使用方与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安全及身份认证

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

 

角色管理

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

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

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

【内建角色】

  MongoDB内建角色包括以下几类

  1、数据库用户角色

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

 

用户管理

【创建用户】

  使用createUser命令来创建用户

  user: 用户名  pwd: 密码

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

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

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

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

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

db.auth()

  3、添加普通用户

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

MongoDB安全及身份认证

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

MongoDB安全及身份认证

【查看用户】

db.system.users.find()

【添加用户权限】

db.grantRolesToUser()

【修改密码】

db.changeUserPassword()

 


 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:MongoDB安全及身份认证

关键词:MongoDB

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录