首页主机资讯Ubuntu MongoDB如何进行权限控制

Ubuntu MongoDB如何进行权限控制

时间2025-11-19 11:37:03发布访客分类主机资讯浏览1352
导读: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),避免使用 rootAnyDatabase 类角色
    • 运维/管理账号在 admin 库授予所需的管理角色,严格分离业务与运维权限。

五 安全加固与运维建议

  • 启用 TLS/SSL 加密通信(示例):
    • net:
      • ssl:
        • mode: requireSSL
        • PEMKeyFile: /path/to/mongodb-key.pem
        • CAFile: /path/to/mongodb-cert.pem
  • 以非特权系统用户运行 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
  • 禁用不必要的接口(旧版本可能存在 http/REST 接口):
    • net:
      • http:
        • enabled: false
      • RESTInterfaceEnabled: false
  • 定期备份与恢复:使用 mongodump/mongorestore 制定周期备份策略。

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


若转载请注明出处: Ubuntu MongoDB如何进行权限控制
本文地址: https://pptw.com/jishu/751004.html
MongoDB数据迁移在Ubuntu上怎么弄 debian分区能自定义名称吗

游客 回复需填写必要信息