Ubuntu MongoDB如何进行权限控制
导读:Ubuntu 上 MongoDB 权限控制实操指南 一 启用认证与网络访问控制 编辑配置文件 /etc/mongod.conf,开启基于角色的访问控制,并限制监听地址与端口: 启用授权:在 security 段设置 authorizat...
Ubuntu 上 MongoDB 权限控制实操指南
一 启用认证与网络访问控制
- 编辑配置文件 /etc/mongod.conf,开启基于角色的访问控制,并限制监听地址与端口:
- 启用授权:在 security 段设置 authorization: enabled
- 绑定地址:在 net 段设置 bindIp: 127.0.0.1(仅本地),如需远程仅放通内网网段,如 127.0.0.1,10.0.0.0/8
- 端口:port: 27017
- 重启服务使配置生效:
- sudo systemctl restart mongod
- 如存在公网暴露风险,建议同时用 UFW/iptables 限制对 27017 的访问,仅允许受信任来源。
二 创建管理员与数据库用户
- 使用 mongosh 连接本机实例(未启用 auth 时可直连;若已启用 auth,需先以具有权限的账户登录或临时从本地无鉴权方式进入):
- mongosh --host 127.0.0.1 --port 27017
- 在 admin 库创建具备用户管理能力的账户(示例为超级管理员):
- use admin
- db.createUser({ user: “admin”, pwd: “StrongPass!2025”, roles: [{ role: “root”, db: “admin” } ] } )
- 为业务库创建最小权限用户(示例对 mydb 赋予读写):
- use mydb
- db.createUser({ user: “mydb_rw”, pwd: “AnotherStrongPass!2025”, roles: [{ role: “readWrite”, db: “mydb” } ] } )
- 说明:具有跨库管理能力的角色(如 userAdminAnyDatabase、readWriteAnyDatabase 等)需在 admin 数据库下创建。
三 连接与验证权限
- 管理员登录验证:
- mongosh --host 127.0.0.1 --port 27017 -u admin -p ‘StrongPass!2025’ --authenticationDatabase admin
- 业务用户登录与权限验证(应仅能对 mydb 读写):
- mongosh --host 127.0.0.1 --port 27017 -u mydb_rw -p ‘AnotherStrongPass!2025’ --authenticationDatabase mydb
- 在 mydb 中执行写入与查询,确认无越权访问其他库
- 如需在 shell 内认证:use ; db.auth(“username”,“password”)。
四 常见角色与最小权限实践
- 常用内置角色与作用域
- 数据库只读:read
- 数据库读写:readWrite
- 数据库管理:dbAdmin、dbOwner、userAdmin
- 集群管理:clusterAdmin、clusterManager、clusterMonitor、hostManager
- 备份恢复:backup、restore
- 所有数据库:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户:root
- 最小权限建议
- 应用连接账号仅授予目标库的 readWrite(必要时加 dbAdmin),避免使用 root 或 AnyDatabase 类角色
- 运维/管理账号在 admin 库授予所需的管理角色,严格分离业务与运维权限。
五 安全加固与运维建议
- 启用 TLS/SSL 加密通信(示例):
- net:
- ssl:
- mode: requireSSL
- PEMKeyFile: /path/to/mongodb-key.pem
- CAFile: /path/to/mongodb-cert.pem
- ssl:
- net:
- 以非特权系统用户运行 MongoDB(如 mongodb),并修正数据/日志目录属主:
- sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb
- 启用审计日志(记录关键操作):
- security:
- auditLog:
- destination: file
- format: JSON
- path: /var/log/mongodb/audit.json
- auditLog:
- security:
- 禁用不必要的接口(旧版本可能存在 http/REST 接口):
- net:
- http:
- enabled: false
- RESTInterfaceEnabled: false
- http:
- net:
- 定期备份与恢复:使用 mongodump/mongorestore 制定周期备份策略。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MongoDB如何进行权限控制
本文地址: https://pptw.com/jishu/751004.html
