Symfony 2.7应用程序审计跟踪-最佳实践

5

我有一个大型的Symfony2应用程序,使用Doctrine和约40到50个MySQL数据库表。

有没有人在一个大型应用程序中设置过审计日志记录过程,至少要跟踪创建、编辑或删除数据的所有Doctrine操作?

理想情况下,它应该“自动发生”,这样其他开发人员就不需要担心使他们的新实体或代码“可记录”。

我没有特定的要求要满足(HIPAA等),但尽可能接近任何ISO27000最佳实践将是很好的。

我的初始计划是查看使用一些Doctrine生命周期回调来获取信息并将其推送到没有DELETE或UPDATE权限的单独的MySQL数据库中。我担心这种方法可能会有很大的性能影响。

有人以前做过这个或类似的事情,有没有任何关于我的计划方法的提示或警告?

如果有影响的话,整个堆栈都在AWS上运行,我可以使用他们在EU-WEST-1区域的任何服务。我已经在使用诸如RDS、Elasticache和SQS之类的东西了。

谢谢!


1
Doctrine 2具有内置的日志记录功能http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/advanced-configuration.html#sql-logger-optional。Symfony 2提供了一个日志选项http://symfony.com/doc/current/reference/configuration/doctrine.html。我会从那里开始,也许安装自己的自定义记录器。但是您不应该对Doctrine本身进行太多操作。 - Cerad
1
你可以使用EntityAudit包 https://github.com/simplethings/entityaudit - Tomas Votruba
谢谢大家。Doctrine日志记录器只提供最终的SQL语句,虽然这很好,但我需要更结构化的信息和一种识别执行操作的用户等方式。我以前见过EntityAudit,但它似乎需要您指定要审计的表,并且还需要将表的数量加倍并使用相同的数据库,而我真的想避免这种情况。 - JimBlizz
1个回答

2
OroPlatform是基于Symfony 2.8构建的,具有一个称为OroDataAuditBundle的bundle,可以在仅使用两个表oro_auditoro_audit_field的情况下深度审计所有Doctrine实体操作(创建、更新、删除)。

enter image description here

“在用户界面上看起来是这样的:”

enter image description here

您可能无法在自己的项目中使用这个bundle,因为它是为OroPlatform构建的,但是您至少可以从他们的架构中获取一些灵感。
如果您想检查此审计系统的工作情况,他们在https://demo.orocrm.com上提供了在线演示。只需以管理员身份登录并创建条目,然后您就可以在https://demo.orocrm.com/audit中查看所有审计条目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接