以下是CentOS下MongoDB权限管理核心策略及操作要点:
- 启用认证
编辑配置文件/etc/mongod.conf,设置security.authorization: enabled,重启服务生效。 - 创建管理员账户
切换至admin数据库,使用db.createUser()创建管理员用户,分配root或userAdminAnyDatabase等角色,例如:use admin db.createUser({ user: "admin", pwd: "强密码", roles: [{ role: "root", db: "admin" }] }) - 用户角色与权限分配
- 内置角色:根据需求分配
read(只读)、readWrite(可编辑)、dbAdmin(数据库管理)、userAdmin(用户管理)等角色。 - 自定义角色:通过
db.createRole()定义特定权限集合,如限制对特定集合的操作。 - 权限操作:使用
db.grantRolesToUser()授予权限,db.revokeRolesFromUser()回收权限。
- 内置角色:根据需求分配
- 访问控制
- 限制IP访问:在配置文件中通过
net.bindIp指定允许连接的IP地址。 - 启用SSL/TLS加密:配置证书路径,设置
net.ssl.mode: requireSSL,确保数据传输安全。
- 限制IP访问:在配置文件中通过
- 审计与监控
- 启用审计日志:在配置文件中添加
security.auditLog配置,记录用户操作。 - 定期审查权限:通过
db.getUser()查看用户权限,清理冗余或过期权限。
- 启用审计日志:在配置文件中添加
- 安全加固
- 配置防火墙限制MongoDB端口(默认27017)的访问。
- 定期更新MongoDB版本,修复安全漏洞。
关键命令参考:
- 创建用户:
db.createUser({ user: "用户名", pwd: "密码", roles: [角色定义] }) - 查看权限:
db.getUser("用户名") - 授权/回收权限:
db.grantRolesToUser()/db.revokeRolesFromUser()
以上策略结合了最小权限原则与最小化攻击面设计,可根据实际业务需求调整。