安全工单流系统(一)
什么是工单
简单来说,就是一个办事流程的凭据。假设你要请假,在学生时代可能要写一个书面的请假条,然后你要亲自拿着请假条找到老师、级长在上面签字同意;在你工作之后,就变成了在oa系统上提交一个申请即可,你的各个上级都会收到通知,然后直接在oa系统上审批。后者其实就是工单的自动化流转,可以极大地提升事情的处理效率,你不需要跑来跑去找上级签字同意,行政在每个月发薪水的时候也不用找出一沓请假条来统计每个人究竟要扣多少钱。
什么是安全工单
所谓安全工单就是专门用来处理企业安全事件(这里只针对网络安全相关)的凭据,想象这样一个场景,作为安全人员的你在公司内部发现了一个安全漏洞,如果没有工单流程,一般的做法是这样的:
- 确认漏洞:先拉群确认漏洞的存在并找到漏洞的负责人
- 发送邮件:找出漏洞处理的邮件模板,填充对应的信息后发送给漏洞的负责人,并抄送双方的leader
- 跟踪处理:邮件发送完之后,在excel表格里记录下这个漏洞的情况,并用各种颜色标注进度;并且由于修复的时间跨度比较长,你得在日历上设置提醒
- 确认修复:在漏洞修复的到期日,重新测试漏洞是否已经修复。如果漏洞还没有修复,你只好在那个沉默已久的群里和漏洞负责人battle
这样的做法存在什么问题吗?
- 沟通成本高:1. 要找到漏洞的负责人,你得查询各种系统才知道当前的业务负责人;2. 很多都是历史悠久的业务,你甚至不知道该找谁处理;3. 拉群沟通的效率非常低,碰到忙碌的业务开发时,可能隔天才会回复你消息
- 运维成本高:如果只是处理一个漏洞,你可以在日历上设置提醒,但如果要你处理100个漏洞呢,你能保证不会在日历上漏掉任何一个漏洞吗;最要命的是,复测漏洞是一个很机械化的重复劳动,你一定不想耗费很多时间去跑脚本
- 统计成本高:每年要做年终汇报的时候,你要统计处理过多少个漏洞,哪个部门的漏洞比较多,哪种类型的漏洞出现得多,这个时候你只能通宵加班去处理excel表格和所有相关的邮件了
安全工单流系统就是为了处理上面提到的这些问题,核心解决方案就是:自动化流转
-
定制流程:从自身的业务逻辑出发,人工设计好整个处理逻辑,如下图所示为我们定义好的工单流程,后面会详细介绍整个流程:
-
自动通知:新增了工单之后,在各种重要的时间节点自动给漏洞负责人发送通知
-
实时统计:实时生成各种统计报表
-
自动复测:自动复测用户工单,不再需要人工跑脚本
-
最重要的是,工单流系统是整个安全自动化闭环的基石:扫描器发现了漏洞->自动发送修复工单、依赖检测发现了漏洞->自动发送修复工单、白帽子发现了漏洞->自动发送修复工单等等等。所有安全服务都可以跟工单流系统联动
市场上有相关的东西吗
当然有,网上有很多出色的工单流系统,这里重点推荐github上的项目:lanyulei/ferry
简单描述一下整个系统设计
下图是一个创建工单的过程,通过时序图来描述系统的交互过程:
整个系统采用的是微服务架构,由以下的服务组成:
- gateway-service:动态网关服务,由spring cloud gateway和nacos共同组成,实现方式可以参考这里
- iam-service:权限服务,处理所有与用户身份、权限相关的逻辑。权限模型是RBAC(基于角色的访问控制),每个用户都有一个默认的基本角色,由管理员给不同的用户赋予更多不同的角色。另一个作用是管理API调用的认证token,外部服务要调用本地提供的接口时都需要提供正确的token进行验证。
- soc-service:安全工单服务,用于管理各种安全工单,发送用户通知等。
- flowable-service:流程引擎服务,采用了开源的flowable流程引擎,概念及使用流程参考这里
后续会更详细地介绍整个系统的细节。