MongoDB的审计功能是提升数据库安全性和合规性的关键工具。通过详细记录数据操作,特别是数据删除事件,审计日志可以帮助管理员快速识别潜在的安全威胁,并在必要时采取相应的问责措施。


为什么选择 Percona MongoDB 企业版?

虽然MongoDB社区版不支持审计功能,但Percona MongoDB企业版(免费开源)提供了这一强大的特性。Percona版本不仅保留了MongoDB的核心功能,还增加了审计等企业版特性,使其成为需要更高安全标准的组织的理想选择。

更多信息可参考:https://www.percona.com/blog/mongodb-audit-log-why-and-how/


实施审计功能

要启用审计功能,可以使用以下命令启动MongoDB服务:

shell> mongod -f /etc/mongodb5.cnf \
--auditDestination file \
--auditFormat JSON \
--setParameter auditAuthorizationSuccess=true \
--auditPath /data/mongodb/mongodb5_0/logs/audit.json \
--auditFilter '{ "atype" : { $in: [/^drop.*/, /^delete.*/, /^remove.*/] } }'

参数解析

  1. --auditDestination file
  • 将审计日志输出到文件系统,便于长期存储和后续分析。
  1. --auditFormat JSON
  • 使用JSON格式记录审计日志,提高日志的可读性和与其他系统的兼容性。
  1. --setParameter auditAuthorizationSuccess=true
  • 记录成功的授权事件,全面捕获数据库的访问情况。
  1. --auditPath /data/mongodb/mongodb5_0/logs/audit.json
  • 指定审计日志的存储路径,集中管理所有审计信息。
  1. --auditFilter '{ "atype" : { $in: [/^drop.*/, /^delete.*/, /^remove.*/] } }'
  • 设置审计过滤器,专注记录与数据删除相关的操作:
  • /^drop.*/: 捕获所有以"drop"开头的操作,如删除集合或数据库。
  • /^delete.*/: 记录以"delete"开头的操作,通常是删除文档。
  • /^remove.*/: 跟踪以"remove"开头的操作,也用于删除文档。

通过这种配置,审计系统将重点关注可能影响数据完整性的关键操作,帮助管理员及时发现并响应潜在的数据安全问题。


mongo.cnf配置文件

# 增加审计日志

auditLog:

   destination: file

   format: JSON

   path: /data/mongodb/mongodb5_0/logs/audit.json

   filter: '{  "atype" : { $in: [/^drop.*/, /^delete.*/, /^remove.*/] }  }'

setParameter: { auditAuthorizationSuccess: true }


注意事项

  • 定期检查审计日志,确保其正常运行并及时发现异常活动。
  • 根据组织的安全策略,考虑扩展审计范围以包括其他类型的数据库操作。
  • 确保审计日志的存储位置有足够的空间,并考虑实施日志轮换策略。
  • 定期备份审计日志,以防数据丢失。
  • 考虑将审计日志集成到中央日志管理系统,以便更全面地监控和分析。

通过精心配置和管理MongoDB的审计功能,组织可以显著提升其数据库环境的安全性和合规性,为敏感数据提供更强有力的保护。