第10章 MongoDB 安全入门:用户认证与权限控制实操指南

MongoDB 默认情况下不启用安全模式,这意味着数据库可以在没有账号和密码的情况下直接访问。虽然这对于开发和测试环境来说非常方便,但在生产环境中,这种默认设置可能会带来严重的安全隐患。本文将详细介绍如何配置 MongoDB 的安全机制,包括创建用户、设置密码、分配权限等关键步骤。此外,我们还将探讨如何处理忘记密码的情况以及如何进行密码重置,确保数据库的安全性和管理的便捷性。

用户管理

创建专属用户:mongodb_admin

    use admin;
    db.createUser(
      {
        user: "mongodb_admin",
        pwd: "Budaos_9808653!@",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
      }
    );
  1. 注意事项:建议使用密码生成器生成随机且复杂的安全密码,以增加数据库的安全性。
  • 密码由大写字母、小写字母、数字、特殊字符中的至少三种组成,特殊字符为:!#$%^&*()_+=

  • 密码长度为8~32位。

  1. 角色说明:userAdminAnyDatabase 角色授予了 mongodb_admin 用户管理其他数据库用户的权限;readWriteAnyDatabase 则允许用户在任何数据库中进行读写操作。MongoDB 角色分为多种类型,包括但不限于:
  • 数据库用户角色:如 read 和 readWrite。
  • 数据库管理角色:如 dbAdmin 和 dbOwner。
  • 集群管理角色:如 clusterAdmin 和 clusterMonitor。
  • 备份恢复角色:如 backup 和 restore。
  • 所有数据库角色:如 readAnyDatabase 和 readWriteAnyDatabase。
  • 超级用户角色:如 root。

查看当前数据库下的用户

show users;

删除用户

db.dropUser("username");
例如:db.dropUser("mongodb_admin");

修改用户密码

db.changeUserPassword("username", "newpassword");

密码认证

db.auth("username", "password");

用户权限控制

查看用户权限

use admin
show users
或
db.getUser("AI2301")

查看权限能执行的操作

db.getRole("read",{showPrivileges:true})

授权(为账户分配角色)

创建数据库student并创建用户AI2301和数据库读取和写入数据权限。

     use student;
     db.createUser(
      {
        user: "AI2301",
        pwd: "AI2301",
        roles:[{role:"readWrite",db:"student"}]
      }
    );
     db.grantRolesToUser("AI2301",);
  • user: 用户名
  • pwd: 用户密码
  • roles: 角色数组,定义用户在数据库中的权限。在这个例子中,readWrite 角色允许用户在 student 数据库中读取和写入数据。

授权/取消权限

 db.grantRolesToUser("AI2301",[{role:"readWrite",db:"student"}]);
 db.revokeRolesFromUser("AI2301",[{role:"readWrite",db:"student"}]);

全局配置开启数据库身份校验

编辑mongodb的配置文件,加入安全相关配置,如果要立即生效,必须重启mongodb服务

security: authorization: enabled

image.png
重启 MongoDB 服务使更改生效。

开启远程访问

指定允许访问的 IP
MongoDB可以通过在启动参数或配置文件中添加–bind_ip来设置允许访问的ip 特别注意:bindIp的值只能为127.0.0.1或0.0.0.0以及当前主机的具体地址。例如:
bind_ip: 127.0.0.1
image.png
bind_ip: 0.0.0.0 表示所有远程客户端都可以访问,需要结合防火墙端口和并限制远程IP等确保访问安全。

以上步骤可以帮助您有效地配置 MongoDB 的用户管理,并确保数据的安全性。通过合理的权限分配和有效的安全措施,可以大大提高 MongoDB 在生产环境中的安全性。

其他场景

忘记密码

找到mongodb的配置文件mongod.conf,编辑配置文件将用户验证的配置项屏蔽

重启mongod,并 登录mongo

这时候登录就不需要密码认证了,然后删除以前设置的用户

use admin 
db.system.users.find()
db.system.users.remove({})

重置密码

db.createUser({user:'userName',pwd:'passWord',roles:[{"role":"root","db":"admin"}]});
db.auth('userName', 'passWord');

将配置文件的验证还原,重启mongod就可以了

“在掌握了如何配置用户认证与权限之后,接下来我们将继续深入探讨 MongoDB 的另一项关键运维技能——数据库的备份与恢复,这对于确保数据的安全性和业务连续性至关重要。”

阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=20931,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?