linux

Linux环境下MongoDB的权限管理策略

小樊
36
2025-09-14 18:45:54
栏目: 云计算

Linux环境下MongoDB权限管理策略基于**角色(Role)-用户(User)-认证(Authentication)**体系,核心要点如下:

一、基础权限配置

  1. 启用认证

    • 修改配置文件 /etc/mongod.conf,设置 security.authorization: enabled,重启服务生效。
    • 通过命令行参数 --auth 启动服务(临时测试可用)。
  2. 创建管理员账户

    • 切换至 admin 数据库,使用 db.createUser() 创建超级管理员(角色 root),需在认证后操作。
    use admin  
    db.createUser({  
      user: "admin",  
      pwd: "强密码",  
      roles: ["root"]  
    })  
    
  3. 普通用户权限分配

    • 按“最小权限原则”创建用户,指定数据库及角色(如 readWritedbAdmin)。
    use mydb  
    db.createUser({  
      user: "app_user",  
      pwd: "业务密码",  
      roles: [{ role: "readWrite", db: "mydb" }]  
    })  
    

二、角色类型与权限控制

角色类型 典型场景 核心权限
内置角色
root 超级管理员(管理所有库、用户、集群) 所有操作权限
dbOwner 数据库管理员(增删改查+用户管理) dbAdmin+userAdmin+readWrite
readWrite 普通业务用户(增删改查数据) 数据读写权限
read 只读用户(查询数据) find 操作权限
集群角色
clusterAdmin 集群管理(节点启停、复制集配置) 集群级操作权限
backup/restore 备份与恢复 备份/恢复操作权限

三、高级权限管理

  1. 自定义角色

    • 通过 db.createRole() 定义细粒度权限,组合 privileges(资源+操作)和 roles(继承其他角色)。
    db.createRole({  
      role: "customRole",  
      privileges: [  
        { resource: { db: "finance", collection: "transactions" }, actions: ["find", "insert"] }  
      ],  
      roles: ["read"]  
    })  
    
  2. 权限验证与审计

    • 使用 db.auth() 验证用户权限,db.getUser() 查看用户角色。
    • 启用审计日志(systemLog.destination: file)记录操作行为,便于追溯。
  3. 访问控制优化

    • 限制IP访问:配置 net.bindIp 仅允许受信任IP连接。
    • 禁用非必要接口:关闭HTTP REST接口(net.http.RESTInterfaceEnabled: false)。

四、安全最佳实践

参考来源

0
看了该问题的人还看了