【发布时间】:2016-02-23 23:24:54
【问题描述】:
我有一个大型的多租户 Symfony2 应用程序,它使用理论和 MySQL 中大约 40 到 50 个数据库表。
有没有人有过设置审计日志记录流程以至少跟踪在大型应用程序中创建、编辑或删除数据的所有 Doctrine 操作的经验?
理想情况下,它应该“刚刚发生”,这样其他开发人员就不必担心让他们的新实体或代码“可记录”。
我没有要满足的特定要求(HIPAA 等),但如果我能尽可能地接近任何 ISO27000 最佳实践,那就太好了。
我最初的计划是考虑使用一些 Doctrine 生命周期回调来获取信息并将其推送到没有 DELETE 或 UPDATE 权限的单独 MySQL 数据库中。我担心这种方法可能会对性能产生很大影响。
之前有没有人这样做过或类似的事情对我计划的方法有任何提示或警告?
如果重要的话,整个堆栈都在 AWS 上运行,我可以在 EU-WEST-1 区域使用他们的任何服务。我已经在使用诸如 RDS、Elasticache 和 SQS 之类的东西。
谢谢!
【问题讨论】:
-
Doctrine 2 内置了日志记录功能doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/…。 Symfony 2 提供了一个日志选项symfony.com/doc/current/reference/configuration/doctrine.html。我会从那里开始,也许会安装我自己的自定义记录器。但是您不必在教义本身上胡闹。
-
可以使用EntityAudit包github.com/simplethings/entityaudit
-
谢谢大家。 Doctrine 记录器只给我最终的 SQL 语句,虽然这很好,但我需要更有条理的信息和一种识别采取行动的用户的方法等等。 EntityAudit 我以前见过,但它似乎需要您指定要审核的表,并且还需要将表的数量增加一倍并使用相同的数据库,而我确实试图避免这种情况。
标签: symfony doctrine-orm doctrine audit audit-trail