温馨提示×

Debian MongoDB权限管理方法

小樊
43
2025-12-21 03:15:39
栏目: 云计算

Debian 上 MongoDB 权限管理实操指南

一 启用认证与基础安全

  • 启用认证有两种等效方式:在命令行启动时使用参数,或在配置文件中开启。推荐在 /etc/mongod.conf 中持久化配置:
    • 配置文件方式:
      • security:
        • authorization: enabled
      • 重启服务:sudo systemctl restart mongod
    • 命令行方式:mongod --auth
  • 认证机制采用 SCRAM-SHA-256(推荐),也支持 SCRAM-SHA-1、MONGODB-CR、X.509。生产环境建议始终启用认证并优先使用 SCRAM-SHA-256。

二 创建管理员与数据库用户

  • 连接到 MongoDB:mongo(未启用认证时)或 mongo -u -p --authenticationDatabase (启用认证后)。
  • admin 数据库创建超级管理员(用于后续用户与权限管理):
    • use admin
    • db.createUser({ user: “admin”, pwd: “StrongPass!23”, roles: [“root”] })
  • 为业务数据库创建最小权限用户(示例为 mydb):
    • use mydb
    • db.createUser({ user: “appUser”, pwd: “AppPass!45”, roles: [{ role: “readWrite”, db: “mydb” }] })
  • 连接与认证要点:
    • 管理员登录:mongo -u admin -p StrongPass!23 --authenticationDatabase admin
    • 应用用户登录:mongo -u appUser -p AppPass!45 --authenticationDatabase mydb
    • 注意:用户的“认证数据库”是其被创建时所在的数据库(如 admin、mydb),登录时必须通过 --authenticationDatabase 指定该库。

三 角色授予与回收

  • 为用户追加角色(示例为给 appUser 增加 mydb 的 dbAdmin 能力):
    • use mydb
    • db.grantRolesToUser(“appUser”, [{ role: “dbAdmin”, db: “mydb” }])
  • 回收角色:
    • db.revokeRolesFromUser(“appUser”, [{ role: “dbAdmin”, db: “mydb” }])
  • 常用内置角色及用途:
    • read:只读
    • readWrite:读写
    • dbAdmin:数据库管理(索引、统计等)
    • userAdmin:用户管理
    • readWriteAnyDatabase / dbAdminAnyDatabase / userAdminAnyDatabase:跨库权限(谨慎授予)
    • root:超级用户(仅在 admin 上使用)

四 验证权限与连接

  • 登录后验证身份与权限:
    • db.auth(“appUser”, “AppPass!45”)
    • db.runCommand({ connectionStatus: 1 })
  • 以应用用户身份连接并做最小化操作验证(如插入/查询),确保权限符合预期。

五 安全加固与运维要点

  • 网络与访问控制:
    • 仅在内网开放 27017,如使用防火墙限制来源,例如:sudo ufw allow from 192.168.1.0/24 to any port 27017;如需公网访问,务必配合 TLS/SSL 与强认证。
  • 认证与加密:
    • 启用 SCRAM-SHA-256,必要时使用 X.509 证书认证;为客户端连接启用加密传输。
  • 审计与监控:
    • 启用审计日志以追踪关键操作,结合监控告警识别异常行为。
  • 版本与补丁:
    • 定期更新 MongoDB 至稳定版本,及时获取安全修复。

0