一、背景
蜻蜓内测版在五一前夕上线了,很快就积攒的很多工具,用户数也逐步增多,但我也逐步发现这种沉积式的平台没太多技术含量;我在想是否能够做一些有挑战的事件,正好这几年低代码平台比拟炽热,我在想是否能在平安场景做一个低代码平台。
1.1 需要出发点
在平安行业中,咱们能够想到两类群体,开发大佬,和脚本小子;
开发大佬能力强,能够写出很厉害的工具,但一个人或者一个团队的精力究竟是无限的的,性能绝对繁多,很难做出相似想 AWVS 相似综合型工具;
每个团队开发进去的工具都在某一方面比拟好用,很难做到全方面,而且不会思考太多外置接口用于集成上下游;
而脚本的次要精力在于应用工具扫描到破绽,它们会收集各类型的工具,不过对一做红队或者 SRC 挖洞场景来说,一款工具根本不太可能满足本人的需要;
于是这天我突发奇想,能不能做一个平台,将各种工具连接起来,这样各种工具就不会零散,把大神开发的工具封装一个接口,让这些工具的数据流能串起来,并且尽可能适宜每一个人场景。
1.2 蜻蜓与 Soar
在市面上咱们能够看到很多平安相干的 soar 平台,soar 平台的重点是在于编排,蜻蜓也是编排,方向是统一的;
但蜻蜓和 soar 也有不一样的中央,是在于蜻蜓的组件反对在用户机器上运行,而惯例的 soar 平台利用场景大多是云平台运行,反对的场景根本是运维和经营场景;
为什么蜻蜓反对重度扫描呢?和蜻蜓的架构模式无关,惯例的 soar 平台根本是 saas 平台,蜻蜓除了 saas 外还须要增加工作节点;
蜻蜓的 SaaS 平台仅用于利用编排和控制台,节点作为工作真正执行的中央,因而无需思考用户规模大性能跟不上,执行节点和不在用户网络空间等诸多问题。
二、低代码平台的意义是什么?
2.1 打造本人的工作流
场景一:破绽检测
从指定网页中取得一批 URL(每次申请返回内容不同),检测 URL 是否存在 SQL 注入破绽,并将检测的破绽信息钉钉告诉到群里。
对于有开发教训的工程师来说,这个流程绝对简略,无非是写一个脚本,一直申请地址取得 URL,而后去除反复数据,再调用 SQLmap 进行检测,最初再写一个钉钉告诉事件;
然而实现起来其实还是要费不少工夫的,但他如果晓得蜻蜓平安平台能够这样来实现,心中预计会忍不住吐槽WC,还能这样实现!
在上图中能够看到,只须要拖动几个组件按钮,将必要的参数往上面填写即可;这个图的流程是先 获取 URL 内容
-> 对数据做过滤
-> 扫描器扫描
-> 钉钉告诉
;
前后可能不会超过五分钟工夫,就能够把需要做完。而且会发现这个图中,并不需要多少代码却能够让打造适宜本人的平安工具;
场景二:情报告诉
每天从一个网页中获取平安情报信息,并将信息中蕴含 反序列化
的信息发送到你的服务器。
那么编排的流程能够是这个样子,如下图所示
你须要提供破绽情报的 URL
,大量筛选数据的Python 脚本
, 你服务器的URL
地址,从图里在这里对于普通用户不便的是还是须要写 Python 脚本;
不过也不必太放心,咱们会将热门的数据过滤脚本间接封装成组件,这样用户能够间接拖动组件就行,那么只须要填写情报 URL 和服务器 URL 就能够实现了。
场景三:代码批量扫描
给你一批 Git 代码仓库地址,须要你对代码进行平安剖析,并将后果推送到指定地址
你能够构建这样一个流程图
首先应用 读取文件内容
组件读取仓库地址列表,应用 运行 Python 脚本
组件将代码拉取到本地,而后应用 墨菲代码扫描
组件进行扫描,最初应用 webhook
组件将后果进行告诉
这个外面的 Python 脚本,其实在晚一点工夫我会封装成一个组件,这样你会发现你并不需要编写代码,轻松构建了一个业务场景。
2.2 精力放在构建场景中
借助低代码平台,还有一个心愿是能帮忙开发者站在伟人的肩膀上,疾速的实现本人的需要,防止重复造轮子;
三、平台开发难点
蜻蜓低代码平台开发中会遇到一些和惯例利用开发所不同的难点,比如说各流程节点的通信问题、节点间的数据传递、数据传递;
3.1 组件间的通信
在蜻蜓低代码平台中,即心愿各组件节点之间互相隔离,又心愿它们可能通信;隔离是为了让每个组件节点可能更自在的编排,而通信的需要在于 B 节点须要在 A 节点执行结束之后才执行;
需要是有些矛盾的,然而却必须要做,因而在设计的时候我做了一个公共组件,所有的组件都能够与公共组件通信,来告知以后的执行状态,再由公共组件调度下一个组件的执行状态。
3.2 数据共享
蜻蜓的各节点数据是互相独立的,但一些场景下须要共享数据,比方代码审计场景下,节点 A 负责拉取代码到本地,节点 B 负责对代码进行扫描;
这些文件须要存储在文件系统中,蜻蜓各节点运行其实是基于 docker 容器,所以蜻蜓的解决方案是将宿主机某一个目录挂载到所有容器中,数据都存储在容器指定目录。
3.3 调试链路长
在开发的阶段咱们须要对每个组件进行单元测试,调试结束之后还须要进行组件间的联结调试,因为组件间的环境是隔离,所以调试程序过程十分繁琐
比如说咱们有一个场景用到了 A、B、C、D 四个节点,当运行后果没有达到预期的时候,你或者一下子就定位到是哪一个节点出现异常、但异样很有可能不是此节点自身造成的,而是上游节点数据自身所造成;
平台的组件可能来自于团队其他人,也有可能来自于社区,你可能没有方法一人独立解决,这就极大的消耗了开发工夫;
这里须要留神的是,每个组件的单元测试肯定要重复验证,在接管参数的时候也要严格验证,否则极其容易呈现此问题。
四、开发历程
低代码平台最重要的是让用户易懂,可能疾速上手,否则低代码平台的价值简直是不存在的。
为了让普通用户可能疾速上手,前端的交互体验显得分外重要,为了让用户了解数据的传递过程,低代码平台通常会应用流程图来展现数据流转,蜻蜓平安平台的流程图组件抉择的是 antv 的 Xflow
xflow 用的 typescript 语言开发,另外应用了 react,之前我的前端技能次要用 bootstrap 和 jQuery 实现,前端技术栈的跨度对我来说是最大的技术危险点
花了一周把 typescript 和 react 的根底教学学完了,第二周尝试本人独立用 react 写一个 todolist,再接着尝试写了一个订单评估性能,再逐步将后端数据管理性能搭了一个架子,再回过头来看 Xflow 根本能看懂大抵要怎么做了。
五、最初
蜻蜓的低代码平台目前还是一个雏形,性能组件还不够全面,随着工夫的推移和咱们的疾速开发,组件肯定会越加全面,总有一天会笼罩到你的应用场景。
蜻蜓平安平台地址:http://qingting.starcross.cn/
蜻蜓 GitHub 仓库地址:https://github.com/StarCrossP…
日期:2022 年 06 月 23 日
微信:songboy8888
作者:汤青松