【云审计】刨根问底“黑科技” EP模块的演进---基础功能

举报
云审计团队 发表于 2017/11/19 12:21:03 2017/11/19
【摘要】 云审计EP模块的演进---基础功能上接《云审计服务“黑科技”讲解之架构初探篇》,本文继续解构EP模块(event process),EP模块随着服务的特性一直在演进中,一开始的基础功能,一句话总结:就是将一段时间内的操作记录整理成一个对象实时同步保存至OBS 用户桶中。考虑到操作记录是由用户触发产生,带有很强的随机性,我们采用定时拉去操作记录,整理上传OBS的方式。这样对于EP模块主要的功能点就是

云审计EP模块的演进---基础功能



上接《云审计服务黑科技讲解之架构初探篇》,本文继续解构EP模块(event process)EP模块随着服务的特性一直在演进中,本文首先分析基础功能:将一段时间内的操作记录整理成一个对象实时同步保存至OBS 用户桶中。


考虑到操作记录是由用户触发产生带有很强的随机性,我们采用定时拉取操作记录,整理上传OBS的方式。这样对于EP模块主要的功能点就是两点:

1、定时获取操作记录。

2、操作记录上传OBS桶。


定时获取操作记录,要考虑一个问题:EP集群部署下多个EP节点之间如何分配任务。保证在定时触发的任务中由一个节点处理一个租户的所有操作记录。这里的实现细节及EP集群如何做到高可用,我们下回分解。    


操作记录上传OBS桶没什么复杂的难点,利用OBS服务的SDK做集成就好了。不过要考虑的一个问题就是:如果出现任务失败,怎么保证多次上传操作记录文件对象时不出现多个对象文件。因为重试上传的对象文件内容必然有重复的地方,如果出现多个对象文件对于租户来说体验不好,且还存在重复计费,这是我们不能接受的。

 

ep.png


理清楚上面的问题,我们的模块设计就如上图所示。开发语言是JAVA

利用Springschedule模块做定时任务调度,每5分钟触发一次拉取操纵记录然后放入一个内存队列中。


程序启动的时候启动了一个线程池,其中每个线程都在阻塞在获取内存队列中获取操作记录,一旦有操作记录进入队列中,线程抢到任务之后就会完成操作记录合并到一个文件,上传到OBS桶。至于上文提到的重试任务保证上传同一对象的问题,我们利用OBS 对象key一样就会覆盖的特性保证每次重试时生成同一个对象key来解决。


以上就是整个EP模块的处理逻辑。下篇文章我们将继续探讨,EP模块的高可用是如何实现的。


PS:云审计服务(Cloud Trace Service)为您提供云账户下资源的操作记录,通过操作记录您可以实现安全分析,资源变更,合规审计,问题定位等场景。您可以通过配置OBS对象存储服务,将操作记录实时同步保存至OBS, 以便保存更长时间的操作记录。

欢迎体验


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。