温馨提示×

如何确保Linux下MongoDB的数据安全

小樊
31
2025-12-28 06:29:53
栏目: 云计算

Linux下MongoDB数据安全实践清单

一 身份与访问控制

  • 启用认证:在配置文件 /etc/mongod.conf 中设置 security.authorization: enabled,或使用启动参数 –auth,强制所有客户端先认证再访问。首次启用前可利用 localhost exceptionadmin 库创建首个管理账户。
  • 建立管理员与业务账户:在 admin 库创建具备 userAdminAnyDatabase 的用户用于用户与角色管理;为各业务库按需创建最小权限账户(如 readWritedbOwner 等)。
  • 最小权限与细粒度控制:遵循最小权限原则,谨慎授予 readAnyDatabase / readWriteAnyDatabase / userAdminAnyDatabase / root 等跨库或超级权限;必要时使用 authenticationRestrictions 限制来源网段。
  • 副本集/分片内部认证:启用访问控制后,成员间需要 内部身份验证(keyFile/内部机制),确保集群通信安全。

二 网络与传输安全

  • 限制监听地址:配置 net.bindIp 仅监听受信任接口(如 127.0.0.1,10.0.1.10),避免 0.0.0.0 暴露到公网。
  • 主机与云安全组防火墙:仅放行必要来源 IP 与端口(默认 27017/TCP),例如 firewalld:
    sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp && sudo firewall-cmd --reload
  • 强制加密传输:启用 TLS/SSL,示例配置:
    net:
    ssl:
    mode: requireSSL
    PEMKeyFile: /etc/ssl/private/mongodb-key.pem
    CAFile: /etc/ssl/certs/mongodb-cert.pem
    生产环境建议强制 TLS 1.2+,客户端连接串增加 ?ssl=true

三 数据静态加密与密钥管理

  • 存储引擎加密(企业版):使用 WiredTiger 加密存储引擎 对数据文件透明加密,需 MongoDB Enterprise 并配置 encryption.mode: requireEncryptionkeyFile(密钥文件权限 400,妥善保管)。
  • 传输层加密(TLS/SSL):见上节,防止数据在网络中被窃听或篡改。
  • 操作系统级加密:对数据盘使用 LUKS 整盘/分区加密,将 dbPath 置于加密卷上,作为纵深防御。
  • 客户端字段级加密:对高度敏感字段在应用侧加密,密钥由 KMS 或外部密钥管理服务托管。

四 审计、日志与运行安全

  • 审计日志(企业版):启用审计以追溯关键操作,可输出到 file/syslog/console,并按需配置过滤器;示例:
    security:
    auditLog:
    destination: file
    format: JSON
    path: /var/log/mongodb/audit.json
    社区版可通过 systemLog 与操作分析进行辅助审计。
  • 系统日志与追加:开启 systemLog.logAppend: true,避免日志轮转时被覆盖;集中收集与长期留存审计/运行日志。
  • 禁用不必要接口:关闭 HTTP 接口、REST 接口、JSONP,减少攻击面。
  • 以非特权用户运行:创建专用系统用户(如 mongodb),数据/日志目录属主设为 mongodb:mongodb,禁止以 root 运行。
  • 安全更新与补丁:定期升级 MongoDB 至稳定/受支持版本,及时修复已知漏洞。

五 备份恢复与持续运营

  • 定期备份与校验:使用 mongodump/mongorestore 执行定时备份(如每日),保留 多份异地副本 并定期做恢复演练与校验,确保可恢复性与完整性。
  • 监控与告警:监控 连接数、慢查询、复制延迟、磁盘 IO 等关键指标,设置异常告警,结合审计日志进行溯源。
  • 安全配置基线:对照 CIS MongoDB Benchmark 与等保要求定期审查加固项(认证、网络、加密、审计、权限等),形成闭环改进。

0