首页主机资讯centos mongodb权限设置技巧

centos mongodb权限设置技巧

时间2025-11-06 01:05:04发布访客分类主机资讯浏览231
导读:CentOS MongoDB权限设置技巧 1. 前置准备:启用MongoDB认证 权限控制的核心是开启认证,需修改MongoDB配置文件并重启服务。 编辑配置文件:sudo vi /etc/mongod.conf,找到security部分,...

CentOS MongoDB权限设置技巧

1. 前置准备:启用MongoDB认证

权限控制的核心是开启认证,需修改MongoDB配置文件并重启服务。
编辑配置文件:sudo vi /etc/mongod.conf,找到security部分,添加或修改为:

security:
  authorization: enabled

保存后重启MongoDB使配置生效:sudo systemctl restart mongod

2. 创建管理员账户(必需)

管理员账户用于管理所有数据库和用户权限,需分配root角色(拥有最高权限)。
连接到MongoDB(默认无认证):mongo,切换到admin数据库:use admin,执行:

db.createUser({

  user: "admin",
  pwd: "StrongAdminPassword123!",  // 使用强密码
  roles: ["root"]                  // root角色拥有所有权限
}
    );
    

退出:exit

3. 遵循“最小权限原则”创建普通用户

根据用户需求分配最小必要权限,避免过度授权。常见场景及角色示例:

  • 只读用户(适用于数据查询场景):
    use target_database;
      // 切换到目标数据库
    db.createUser({
    
      user: "readonly_user",
      pwd: "ReadOnlyPass456!",
      roles: [{
     role: "read", db: "target_database" }
    ]  // 仅读取权限
    }
        );
        
    
  • 读写用户(适用于数据增删改查场景):
    use target_database;
    
    db.createUser({
    
      user: "readwrite_user",
      pwd: "ReadWritePass789!",
      roles: [{
     role: "readWrite", db: "target_database" }
    ]  // 读写权限
    }
        );
        
    
  • 数据库管理员(适用于数据库维护,如创建索引、删除集合):
    use target_database;
    
    db.createUser({
    
      user: "dbadmin_user",
      pwd: "DBAdminPass101!",
      roles: [{
     role: "dbAdmin", db: "target_database" }
    ]  // 数据库管理权限
    }
        );
        
    
  • 自定义集合权限(适用于限制用户仅能访问特定集合):
    use target_database;
    
    db.createUser({
    
      user: "specific_collection_user",
      pwd: "SpecificPass112!",
      roles: [{
     role: "read", db: "target_database", collection: "specific_collection" }
    ]  // 仅能读取指定集合
    }
        );
        
    

4. 动态管理用户权限

添加角色

若需为用户扩展权限,使用grantRolesToUser命令。例如,为用户readwrite_user添加dbAdmin角色:

use target_database;

db.grantRolesToUser("readwrite_user", [{
 role: "dbAdmin", db: "target_database" }
    ]);
    

撤销角色

若需限制用户权限,使用revokeRolesFromUser命令。例如,撤销用户readwrite_userreadWrite角色:

use target_database;

db.revokeRolesFromUser("readwrite_user", [{
 role: "readWrite", db: "target_database" }
    ]);
    

修改密码

定期更新用户密码以提升安全性,使用changeUserPassword命令:

use target_database;
    
db.changeUserPassword("readonly_user", "NewReadOnlyPass123!");
    

删除用户

若用户不再需要,使用dropUser命令彻底删除:

use target_database;
    
db.dropUser("specific_collection_user");
    

5. 验证用户权限

查看用户信息及角色

使用getUser命令查看用户的角色和权限详情:

use target_database;
    
db.getUser("readonly_user");

输出结果中的roles字段会显示用户拥有的角色。

测试连接权限

使用新创建的用户连接MongoDB,验证权限是否生效。例如,用readonly_user连接:

mongo -u readonly_user -p ReadOnlyPass456 --authenticationDatabase target_database

连接后尝试执行写操作(如db.test.insert({ name: "test"} )),应提示“无权限”。

6. 生产环境安全增强技巧

  • 使用强密码:密码需包含大小写字母、数字和特殊字符,长度不少于12位。
  • 限制网络访问:修改MongoDB配置文件/etc/mongod.conf,绑定IP到本地或特定服务器:
    net:
      bindIp: 127.0.0.1,192.168.1.100  # 仅允许本地和指定IP访问
      port: 27017
    
  • 启用SSL/TLS加密:通过配置net.ssl部分启用加密,保护数据传输安全。
  • 定期审计权限:使用db.system.users.find()查看所有用户,定期清理闲置账户。

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


若转载请注明出处: centos mongodb权限设置技巧
本文地址: https://pptw.com/jishu/743557.html
centos mongodb集群搭建方法 centos redis如何处理慢查询

游客 回复需填写必要信息