Login
网站首页 > 文章中心 > 其它

浅析MongoDB之安全认证

作者:小编 更新时间:2023-09-17 11:57:26 浏览量:104人看过

MongoDB是一款非关系型数据库,具有高性能、高可扩展性和易于开发等优点,在应用开发中得到了广泛应用.然而,由于MongoDB默认没有开启安全认证,使得安全性问题暴露出来,容易受到攻击.为了保证数据库安全,必须对MongoDB进行安全认证.本文就着重介绍了MongoDB的安全认证方案,以及如何实现安全认证、如何在不同类型的MongoDB集群中实现安全认证.

安全认证方案

MongoDB提供了两种安全认证方案:基于角色的访问控制(RBAC)和Kerberos认证.其中,RBAC方案适用于大多数应用场景,包括验证用户的用户名和密码.而Kerberos方案是适用于企业环境下的高安全性认证.

实现安全认证

创建管理员用户

MongoDB默认没有管理员用户,需要创建管理员用户.创建管理员用户的代码如下:


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


其中,admin是管理员用户,password是管理员用户的密码,userAdminAnyDatabase是用来管理所有数据库的角色.

创建普通用户

需要创建普通用户来对指定的数据库集合进行读写操作.创建普通用户的代码如下:


use test
db.createUser({
  user: "test",
  pwd: "testpasswd",
  roles:[{role: "readWrite", db: "test"}]
})


其中,test是普通用户,testpasswd是普通用户的密码,readWrite是用来对数据库读写操作的角色.

开启安全认证

在配置文件中将security.authorization设置为enabled,并重启MongoDB服务器即可开启安全认证.

针对不同类型的MongoDB集群实现安全认证

单节点MongoDB

在单节点MongoDB上配置安全认证,将security.authorization设置为enabled即可.

副本集MongoDB

在MongoDB副本集中,如果任意一个节点关闭了安全认证,那么就可能受到攻击.所以呢,在副本集MongoDB中,必须确认所有节点都已经开启安全认证.在每个节点上,使security.authorization设置为enabled,并重启MongoDB服务器.

分片集群MongoDB

在分片集群MongoDB中,每个分片都必须开启安全认证.在启动MongoDB时,使用mongos --auth选项来启用安全认证.每个分片上必须创建管理员用户和普通用户,并将这些用户配置到mongos的配置文件中.

示例说明

示例一

假设我们有一个MongoDB数据库,数据库名为testdb.我们需要对该数据库进行安全认证,具体步骤如下:

创建管理员用户


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


创建普通用户


use testdb
db.createUser({
  user: "testuser",
  pwd: "testpasswd",
  roles:[{role: "readWrite", db: "testdb"}]
})


开启安全认证

将mongod的配置文件中的security.authorization设置为enabled,并重启MongoDB服务器.

示例二

假设我们有一个分片集群MongoDB,具有三个分片.我们需要对这个分片集群进行安全认证,具体步骤如下:

在每个分片上创建管理员用户和普通用户


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

use testdb
db.createUser({
  user: "testuser",
  pwd: "testpasswd",
  roles:[{role: "readWrite", db: "testdb"}]
})


将这些用户配置到mongos的配置文件中,并使mongos开启安全认证


sharding:
  configDB: configdb/localhost:27017
  clusterRole: shardsvr
security:
  authorization: enabled
internalSecurity:
  clusterAuthMode: keyFile


在security中设置authorization为enabled,在internalSecurity中设置对MongoDB集群的安全认证方式为keyFile.

重启MongoDB集群


sudo service mongod stop
sudo service mongod start
sudo service mongos stop
sudo service mongos start


以上就是土嘎嘎小编为大家整理的浅析MongoDB之安全认证相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章