基于领域模型准备审计事件
Posted
技术标签:
【中文标题】基于领域模型准备审计事件【英文标题】:Prepare audit events based on domain models 【发布时间】:2021-11-20 13:38:24 【问题描述】:我有一个应用程序,它在没有自己的数据库的不同系统之间充当代理。应用程序涵盖的可能用例很少:
-
显示来自特定系统的数据
将数据存储到特定系统或系统
实际上这个应用程序有自己的前端和后端(带有 sping boot 和 angular stack)。后端负责从外部系统获取/放入数据,前端与后端通信,它对外部系统一无所知。此外,后端遵循六边形架构,并有自己定义的领域模型。
目前有一些要求涵盖与应用程序相关的业务用例的审计。例如,如果用户访问与应用程序相关的某些功能并在那里进行一些更改,则应该对其进行审核。
我在互联网上搜索了这个主题,但我只找到了像 https://docs.spring.io/spring-data/jpa/docs/1.7.0.DATAJPA-580-SNAPSHOT/reference/html/auditing.html 这样的基于实体的审计。对于我的情况,我需要类似的东西,但基于域模型而不是实体。
您能否推荐一些方向来解决这个问题?实际上,对于这样的用例,可以使用哪个库来使用域模型的状态来准备审计事件。我找到了类似https://logging.apache.org/log4j-audit/latest/gettingStarted.html 的东西,但我真的不确定这是否正确
【问题讨论】:
【参考方案1】:我想说您可以根据事件构建自己的审计策略。 让我们以您给出的示例为例:“如果用户访问与应用程序相关的某些功能并在那里进行一些更改,则应该对其进行审核。”。
我假设您有一个服务可以处理来自 REST API 或类似的请求的这些请求。同一个服务不仅会与外部系统通信,还会发布一个事件,比如关于用户的信息以及执行的更改或更新(例如,您可以依赖 Redis,但还有其他选项,例如 RabbitMQ 甚至Kafka,取决于您希望您的审计功能有多可靠)。
然后,您将让应用程序的另一个组件侦听这些事件,以便您可以将它们存储在数据库中(我想这就是目的)。或者,您甚至可以只为此目的使用单独的微服务,具体取决于该审计系统的复杂程度。
如果您想要更“神奇”和自动化的东西,您可以尝试查看 Spring Boot Data Audit 代码以了解它是如何实现的,但您最终可能会构建一个过度设计的解决方案。
【讨论】:
以上是关于基于领域模型准备审计事件的主要内容,如果未能解决你的问题,请参考以下文章