我有一个使用doctrine的大型多租户Symfony2应用程序,以及MySQL中大约40到50个数据库表。
是否有人有过设置审核日志记录流程的经验,至少要跟踪在大型应用程序中创建,编辑或删除数据的所有Doctrine操作?
理想情况下它应该“恰好发生”,以便其他开发人员不必担心使他们的新实体或代码“可记录”。
我没有具体的要求(HIPAA等),但是尽可能接近任何ISO27000最佳实践是很好的。
我的初步计划是查看使用一些Doctrine生命周期回调来获取信息并将其推送到没有DELETE或UPDATE权限的独立MySQL数据库中。我担心这种方法可能会对性能产生很大的影响。
有没有人在此之前做过这样的事情,或者有任何类似的事情,我的计划方法有任何提示或警告的话?
如果重要的是整个堆栈在AWS上运行,我可以在EU-WEST-1区域使用他们的任何服务。我已经在使用像RDS,Elasticache和SQS这样的东西了。
谢谢!
答案 0 :(得分:2)
OroPlatform是在Symfony 2.8中构建的,它有一个名为OroDataAuditBundle的包,可以在两个表中深入审核所有Doctrine实体操作(创建,更新,删除):oro_audit
和oro_audit_field
。
在UI中看起来像这样:
您可能无法在项目中使用此捆绑包 - 因为它是为OroPlatform构建的 - 但是,您至少可以从他们的架构中获得灵感。
如果您想检查此审核系统是否有效,他们会在https://demo.orocrm.com中进行在线演示。只需以管理员身份登录并参与创建条目,然后您就可以检查https://demo.orocrm.com/audit中的所有审核条目。