【云审计】刨根问底“黑科技” EP模块的演进---基础功能
云审计EP模块的演进---基础功能
上接《云审计服务“黑科技”讲解之架构初探篇》,本文继续解构EP模块(event process)。EP模块随着服务的特性一直在演进中,本文首先分析基础功能:将一段时间内的操作记录整理成一个对象实时同步保存至OBS 用户桶中。
考虑到操作记录是由用户触发产生带有很强的随机性,我们采用定时拉取操作记录,整理上传OBS的方式。这样对于EP模块主要的功能点就是两点:
1、定时获取操作记录。
2、操作记录上传OBS桶。
定时获取操作记录,要考虑一个问题:EP集群部署下多个EP节点之间如何分配任务。保证在定时触发的任务中由一个节点处理一个租户的所有操作记录。这里的实现细节及EP集群如何做到高可用,我们下回分解。
操作记录上传OBS桶没什么复杂的难点,利用OBS服务的SDK做集成就好了。不过要考虑的一个问题就是:如果出现任务失败,怎么保证多次上传操作记录文件对象时不出现多个对象文件。因为重试上传的对象文件内容必然有重复的地方,如果出现多个对象文件对于租户来说体验不好,且还存在重复计费,这是我们不能接受的。
理清楚上面的问题,我们的模块设计就如上图所示。开发语言是JAVA。
利用Spring的schedule模块做定时任务调度,每5分钟触发一次拉取操纵记录然后放入一个内存队列中。
程序启动的时候启动了一个线程池,其中每个线程都在阻塞在获取内存队列中获取操作记录,一旦有操作记录进入队列中,线程抢到任务之后就会完成操作记录合并到一个文件,上传到OBS桶。至于上文提到的重试任务保证上传同一对象的问题,我们利用OBS 对象key一样就会覆盖的特性保证每次重试时生成同一个对象key来解决。
以上就是整个EP模块的处理逻辑。下篇文章我们将继续探讨,EP模块的高可用是如何实现的。
PS:云审计服务(Cloud Trace Service)为您提供云账户下资源的操作记录,通过操作记录您可以实现安全分析,资源变更,合规审计,问题定位等场景。您可以通过配置OBS对象存储服务,将操作记录实时同步保存至OBS, 以便保存更长时间的操作记录。
- 点赞
- 收藏
- 关注作者
评论(0)