首页主机资讯Linux上MongoDB权限设置有哪些要点

Linux上MongoDB权限设置有哪些要点

时间2025-11-17 16:34:03发布访客分类主机资讯浏览1490
导读:Linux上MongoDB权限设置要点 一 启用身份验证与最小权限原则 在配置文件 /etc/mongod.conf 中开启基于角色的访问控制(RBAC): security: authorization: enabled 重...

Linux上MongoDB权限设置要点

一 启用身份验证与最小权限原则

  • 在配置文件 /etc/mongod.conf 中开启基于角色的访问控制(RBAC):
    • security:
      • authorization: enabled
  • 重启使配置生效:
    • sudo systemctl restart mongod
  • 原则:遵循最小权限,避免使用 root 日常操作;仅在 admin 库创建高权限账户,应用账户限定在目标业务库。
  • 关键内置角色速览:
    • read / readWrite:对指定库的读/读写
    • dbAdmin:索引、统计等库级管理
    • userAdmin:用户与角色管理(库级)
    • dbOwner:库级“全权”(含读写+dbAdmin+userAdmin)
    • clusterAdmin:复制集/分片集群管理
    • readAnyDatabase / readWriteAnyDatabase / userAdminAnyDatabase / dbAdminAnyDatabase:跨库权限(仅 admin 可用)
    • root:超级用户(仅 admin 可用)

二 创建管理员与业务用户的正确姿势

  • 连接 Shell:mongo(未启用 auth 时)或 mongo -u -p --authenticationDatabase
  • admin 创建管理员(示例为最小化的用户管理员,便于后续分权):
    • use admin
    • db.createUser({ user: “adminUser”, pwd: “StrongPass!23”, roles: [“userAdminAnyDatabase”] } )
  • 在业务库创建最小权限用户(示例为仅读写):
    • use myDatabase
    • db.createUser({ user: “appUser”, pwd: “AppPass!45”, roles: [{ role: “readWrite”, db: “myDatabase” } ] } )
  • 登录指定库的身份验证:
    • mongo -u appUser -p AppPass!45 --authenticationDatabase myDatabase
  • 变更与维护:
    • 修改角色:db.updateUser(“appUser”, { roles: [{ role: “read”, db: “myDatabase” } ] } )
    • 修改密码:db.changeUserPassword(“appUser”, “NewPass!67”)
    • 删除用户:db.dropUser(“appUser”)

三 网络与传输安全配合权限控制

  • 限制来源 IP(示例):
    • ufw:sudo ufw allow from 127.0.0.1 to any port 27017
    • 或仅本地监听:net.bindIp: 127.0.0.1(在 mongod.conf 的 net 段)
  • 启用 SSL/TLS 加密传输:
    • 生成证书(示例):
      • openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout mongodb-key.pem -out mongodb-cert.pem
    • 配置:
      • net:
        • ssl:
          • mode: requireSSL
          • PEMKeyFile: /path/to/mongodb-key.pem
          • CAFile: /path/to/mongodb-cert.pem
  • 说明:网络与传输加密能显著降低凭证泄露与中间人攻击风险,与 RBAC 共同构成纵深防御。

四 常见坑与排查清单

  • 忘记启用 authorization 或未重启服务,导致创建的用户不生效。
  • 连接时未指定 –authenticationDatabase,默认在 test 库认证而失败;应为创建该用户的库(如 admin 或业务库)。
  • 直接给应用 rootreadWriteAnyDatabase,违背最小权限;应按库、按职责分配角色。
  • 复制集/分片环境需要 clusterAdmin 等集群级角色,仅授予库级角色会导致运维失败。
  • 排查路径:
    • 查看服务状态:sudo systemctl status mongod
    • 核查配置:grep -n “authorization” /etc/mongod.conf
    • 验证登录与权限:mongo -u -p --authenticationDatabase 后执行 db.runCommand({ connectionStatus: 1} ) 与 show users。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux上MongoDB权限设置有哪些要点
本文地址: https://pptw.com/jishu/749066.html
MongoDB复制集在Linux上如何搭建 MongoDB数据持久化在Linux上如何实现

游客 回复需填写必要信息