MongoDB在CentOS上的权限配置指南
导读:MongoDB 在 CentOS 上的权限配置指南 一 启用访问控制与创建管理员 编辑配置文件 /etc/mongod.conf,开启授权:security: authorization: enabled 重启服务使配置生效:su...
MongoDB 在 CentOS 上的权限配置指南
一 启用访问控制与创建管理员
- 编辑配置文件 /etc/mongod.conf,开启授权:
security: authorization: enabled - 重启服务使配置生效:
sudo systemctl restart mongod - 连接 Shell 并创建管理员(首次在未开启授权前操作,或临时以无鉴权方式连接):
mongo use admin db.createUser({ user: "admin", pwd: "StrongPass!23", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) - 之后使用账号连接:
mongo -u admin -p StrongPass!23 --authenticationDatabase admin - 说明:MongoDB 默认不启用授权,需通过命令行参数 –auth 或配置文件 security.authorization 开启;启用后所有客户端必须先进行身份验证。优先在 admin 数据库创建具备用户管理能力的账户,再为业务库创建受限用户。
二 基于角色的访问控制与最小权限实践
- 常用内置角色及适用场景:
- read:只读指定数据库
- readWrite:读写指定数据库
- dbAdmin:索引/统计/配置等库级管理
- userAdmin:用户与角色管理(库级)
- clusterAdmin / clusterManager / clusterMonitor / hostManager:集群/主机层面管理或监控
- readAnyDatabase / readWriteAnyDatabase / userAdminAnyDatabase / dbAdminAnyDatabase:跨库权限(谨慎授予)
- root:超级用户(仅在 admin 数据库)
- 示例:为业务库 sales 创建仅读写用户
use sales db.createUser({ user: "sales_rw", pwd: "SalesRw@2025", roles: [ { role: "readWrite", db: "sales" } ] } ) - 示例:创建具备跨库用户管理能力的账户(谨慎)
use admin db.createUser({ user: "useradmin", pwd: "UaPass!23", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) - 细粒度控制与撤销:
- 为用户添加/撤销角色:
use admin db.grantRolesToUser("sales_rw", [ { role: "dbAdmin", db: "sales" } ]) db.revokeRolesFromUser("sales_rw", [ { role: "dbAdmin", db: "sales" } ]) - 查看角色权限细节:
use admin db.runCommand({ rolesInfo: 1, showPrivileges: true, showBuiltinRoles: true } ) - 基于来源/目标 IP 的连接限制(示例仅允许 10.0.0.0/24):
use admin db.createUser({ user: "ops", pwd: "OpsPass!23", roles: [ { role: "clusterMonitor", db: "admin" } ], authenticationRestrictions: [ { clientSource: ["10.0.0.0/24"] } ] } )
- 为用户添加/撤销角色:
- 原则:遵循最小权限,优先授予具体库级角色;跨库或超级权限仅授予受控账户。
三 网络与加密访问控制
- 绑定地址与端口:仅监听内网或管理网接口
net: bindIp: 127.0.0.1,10.0.1.10 port: 27017 - 防火墙放行(firewalld):
sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp sudo firewall-cmd --reload - 传输加密(TLS/SSL):生成或获取证书后启用
# 生成自签名证书(示例) sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 \ -keyout /etc/ssl/private/mongodb-key.pem \ -out /etc/ssl/certs/mongodb-cert.pem # mongod.conf net: ssl: mode: requireSSL PEMKeyFile: /etc/ssl/private/mongodb-key.pem CAFile: /etc/ssl/certs/mongodb-cert.pem - 应用变更:
sudo systemctl restart mongod - 建议:生产环境强制启用 TLS,并限制 bindIp 仅内网网段。
四 运维与审计要点
- 审计日志(记录关键操作,便于合规与追溯):
setParameter: auditAuthorizationSuccess: true systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log - 备份与恢复:定期执行备份并校验可恢复性(如 mongodump/mongorestore 或企业级备份方案),保留多份异地副本。
- 安全更新与补丁:及时升级 MongoDB 版本,修复已知漏洞。
- 监控与告警:监控连接数、慢查询、复制延迟、磁盘 IO 等,设置异常告警。
- SELinux:若启用 SELinux 且遇到权限问题,按需调整策略或临时设为 permissive 排查,再恢复为 enforcing 并固化策略。
五 常见问题与快速排查
- 启用授权后无法登录:确认连接串包含 –authenticationDatabase admin,并使用具备相应角色的用户。
- 服务无法启动:检查 /var/log/mongodb/mongod.log 中配置语法、目录权限(如 /var/lib/mongo、/var/log/mongodb 归属 mongod)、端口占用与 SELinux 拒绝日志。
- 权限不足:使用具备 userAdmin 或 userAdminAnyDatabase 的账户检查并授予所需角色;撤销多余权限避免权限叠加导致越权。
- 远程连不通:核对 bindIp、云安全组/本机防火墙、以及是否启用 TLS 且客户端正确配置证书。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB在CentOS上的权限配置指南
本文地址: https://pptw.com/jishu/750335.html
