CentOS 上保障 MongoDB 数据安全的可落地清单
一 身份与访问控制
- 启用访问控制:在配置文件 /etc/mongod.conf 中设置 security.authorization: enabled,重启服务后所有客户端必须认证。
- 创建管理员:在 admin 库创建具备 userAdminAnyDatabase 或 root 角色的管理员,用于后续用户与角色管理。
- 最小权限原则:为业务库创建专属用户,仅授予所需角色(如 readWrite、read),避免使用高权限账户直连业务。
- 安全连接参数:客户端连接时显式指定 –authenticationDatabase admin,避免凭据泄露与误用。
- 关键配置与命令示例:
- 配置:
- security: authorization: enabled
- 创建管理员:
- use admin
db.createUser({ user: “admin”, pwd: passwordPrompt(), roles: [“userAdminAnyDatabase”] })
- 重启:
- sudo systemctl restart mongod
- 业务用户:
- use mydb
db.createUser({ user: “app”, pwd: passwordPrompt(), roles: [“readWrite”] })
- 连接:
- mongo -u app -p --authenticationDatabase mydb
以上步骤可有效落实 MongoDB 的认证与基于角色的访问控制(RBAC)。
二 网络安全与加密传输
- 限制监听地址:在 /etc/mongod.conf 设置 net.bindIp 仅绑定必要地址(如 127.0.0.1 或内网网段),避免暴露在公网。
- 防火墙隔离:使用 firewalld 仅放行受控来源访问 27017/TCP。
- 强制加密传输:启用 TLS/SSL,配置 net.ssl.mode: requireSSL 与证书路径,确保客户端与服务端通信全程加密。
- 操作要点:
- 仅本地:bindIp: 127.0.0.1
- 指定网段:bindIp: 127.0.0.1,192.168.1.10
- 防火墙:
- sudo firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.0/24” port port=“27017” protocol=“tcp” accept’
- sudo firewall-cmd --reload
- TLS 配置:
- net:
- ssl:
- mode: requireSSL
- PEMKeyFile: /path/to/mongodb.pem
- CAFile: /path/to/ca.pem
这些措施显著降低未授权访问与流量嗅探风险。
三 加密与审计
- 加密选型:
- 传输加密:启用 TLS/SSL(见上节)。
- 静态加密:
- MongoDB Enterprise 支持 Encrypted Storage Engine(WiredTiger 静态加密)。
- 社区版可采用 LUKS/dm-crypt 对数据目录所在磁盘做卷级加密。
- 字段级加密(FLE):
- 客户端字段级加密(CSFLE) 可在驱动侧对敏感字段加密,支持 AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic/Random 算法;自动加密需 mongocryptd 或 CRYPT_SHARED,显式加密可直接使用 ClientEncryption。
- 服务器端可用 $jsonSchema 的 encrypt 关键字对指定字段实施强制加密策略。
- 审计日志:在 /etc/mongod.conf 启用审计,记录关键操作以便合规与溯源。
- 配置示例:
- 审计:
- systemLog: destination: file; logAppend: true; path: /var/log/mongodb/mongod.log
- auditLog: destination: file; format: BSON; path: /var/log/mongodb/audit.log
- FLE(显式加密示例思路):
- 准备 KMS 提供者(如本地密钥或云 KMS)、密钥保管库集合(如 encryption.__keyVault),使用 ClientEncryption 生成数据密钥并据此执行显式加密/解密。
通过传输加密、静态加密与 FLE 的组合,可覆盖数据在传输、落盘与字段级的多维安全需求。
四 备份恢复与高可用
- 定时备份:使用 mongodump 脚本化导出并按保留策略轮转归档,建议每日至少一次全量备份。
- 恢复验证:定期执行 mongorestore --drop 到隔离环境验证备份可用性与完整性。
- 自动化示例(要点):
- 脚本化导出到时间戳目录,压缩归档,find 清理 N 天 前备份。
- 通过 crontab 定时执行,确保备份任务持续稳定运行。
- 高可用:生产环境建议部署 副本集(Replica Set)以获得自动故障切换与数据冗余,降低单点风险。
完善的备份与高可用策略是数据安全的最后防线。
五 补丁运维与合规监控
- 安全更新:定期升级 MongoDB 至包含最新安全修复的版本,及时修补已知漏洞。
- 合规审计:启用并定期审查 审计日志,对异常登录、权限变更、批量导出等行为设置告警。
- 主机加固:启用 SELinux(或 AppArmor)、最小权限运行服务、限制系统账户与端口、开启系统日志与入侵检测。
- 监控告警:对 连接数、慢查询、复制延迟、磁盘/内存 等关键指标设置阈值告警,联动故障响应流程。
持续运维与监控可显著提升风险发现与处置效率。