Linux上MongoDB权限设置有哪些要点
导读:Linux上MongoDB权限设置要点 一 启用身份验证与最小权限原则 在配置文件 /etc/mongod.conf 中开启基于角色的访问控制(RBAC): security: authorization: enabled 重...
Linux上MongoDB权限设置要点
一 启用身份验证与最小权限原则
- 在配置文件 /etc/mongod.conf 中开启基于角色的访问控制(RBAC):
- security:
- authorization: enabled
- security:
- 重启使配置生效:
- 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
- ssl:
- net:
- 生成证书(示例):
- 说明:网络与传输加密能显著降低凭证泄露与中间人攻击风险,与 RBAC 共同构成纵深防御。
四 常见坑与排查清单
- 忘记启用 authorization 或未重启服务,导致创建的用户不生效。
- 连接时未指定 –authenticationDatabase,默认在 test 库认证而失败;应为创建该用户的库(如 admin 或业务库)。
- 直接给应用 root 或 readWriteAnyDatabase,违背最小权限;应按库、按职责分配角色。
- 复制集/分片环境需要 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
