首页主机资讯MongoDB在CentOS上的权限配置指南

MongoDB在CentOS上的权限配置指南

时间2025-11-18 17:58:03发布访客分类主机资讯浏览216
导读: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 拒绝日志。
  • 权限不足:使用具备 userAdminuserAdminAnyDatabase 的账户检查并授予所需角色;撤销多余权限避免权限叠加导致越权。
  • 远程连不通:核对 bindIp、云安全组/本机防火墙、以及是否启用 TLS 且客户端正确配置证书。

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


若转载请注明出处: MongoDB在CentOS上的权限配置指南
本文地址: https://pptw.com/jishu/750335.html
centos上oracle故障如何排查 CentOS环境下MongoDB的复制配置步骤

游客 回复需填写必要信息