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_user的readWrite角色:
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()查看所有用户,定期清理闲置账户。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1447123.html