在提笔写文章的时候,忽然发现6月已经过了大半了,时光总是匆匆的感觉。6月其实花了很多时间去研究一个叫做潮汐平台的东西,其实知道这个平台是无意中收到了一封邮件。
安定坊Cybersec开发了一个很有意思的平台,为了宣传这个平台,所以举办了这个潮汐安全应用开发大赛,看到邀请之后呢,我就去了解了一下这个平台,仔细了解了一下感觉还有点儿意思。
比起之前见过的很多那种寄托于云服务商的自动化平台来说,他很有趣的引入了一个任务以及编排的概念。每个项目都提供了已经预设好的运行模式,也提供了非常便于使用的web界面入口。简单来说,就是给了你一个可以很简单的通过web界面快速使用的方案。而这种方案在面对一些比较复杂的项目,尤其是很多开源项目的时候,实话讲,可以省去大部分的前置时间。
而且很有意思的是,比起以前的大多数基于云服务商的运行方案,他很有意思的基于docker做了一个私有化serverless的概念,在第一次使用的时候,你可以通过在server端运行命令。
他会在本地下载并部署一个完整的server端中控环境
通过这个环境,平台可以链接到你的server端,如果不开发的话,这个server端可以部署在服务器上,这样就比较自由了(目前还不支持开发端和server端分离,所以如果要开发新的工具环境的话,那就必须装在自己的电脑上了)。
每次你在平台端执行任务的时候,如果是第一次执行,那么你会pull下来相应的docker image
然后,server端会自动启动这个docker,然后再启动一个runtime用来和他交互。
通过代码中定义好的交互方案,在docker中执行相应的操作,目前来说都是通过python来实现的,感觉使用上还是很简单,而且还二次封装了docker的源生接口,包括文件映射、端口映射等等。
然后通过内置的定义好的接口,我们可以配合定义好的docker环境来执行相应设定好的命令,并且传入定义好的参数,这里我做的kunlun-M的环境就是用接口传入文件映射来完成了代码扫描。
整个东西其实说白了还挺有意思的,因为这个东西基于dockerfile做的,但是比dockerfile这种使用门槛比较高的东西更上一层,一个是解决了大型工具和开源工具的使用门槛问题,不用每次想了解一个新工具就必须翻文档,很多文档也写不明白,可能也不及时更新,甚至很多用法可能不符合开发者的初衷。利用这个平台可以快速的运行和使用,并且图形化的使用界面呢也大大的降低了使用的门槛。
从开发者的角度来说呢,serverless化意味着开发者想要制作工具demo不用费尽心思去准备服务器,写文档。从平台运营者的角度来说,私有化serverless也大大降低了平台的运营成本。对于使用者来说,私有化的serverless也意味着更隐私化的运行方案。总的来说是个很有意思的东西。
不过比较可惜的是,潮汐平台这个平台的性质更接近于即插即用的使用惯性,目前来说,KunLun-M的使用方案更接近持久化的部署,所以无论是我之前开发的侧重还是后续使用方案的侧重呢,主要的两种使用方案,一个是console的交互模式,可以长时间的使用以及内容存档。另一个是client和server的分离部署方案,web模式是之前花了不小精力搞得,主要是web界面的内容更好看,也便于统计。
很可惜的是,潮汐平台的部署模式与这两种预期的使用方案不太吻合,所以我尝试在潮汐平台上构建了一个client和server分离化的部署方案,我在github的项目代码中内置了一个公开的server,然后如果在潮汐平台上使用远程扫描,就会在扫描结束之后将结果上传到远程,你可以使用web界面查看结果,算是一个有趣的尝试。
还有一个比较可惜的问题是,目前的潮汐平台,使用端和server端这两个概念分的不是很开,就比如这里的文件上传功能,目前的方案是,直接链接localhost对应的server端的端口来实现的,但实际上这种方案在使用上会有很大的瓶颈,不过也给了平台一些建议,估计后续就会修改。
总得来说其实这个平台还是不错,是那种我觉得很有趣的一个东西,而且目前看来做出来的平台成品空间也很大,目前主要是集中在安全领域比较小众,后续的话如果能接入很多种类型的开源项目,我感觉会是不错的东西。
由于参加了这个大赛,所以周六的晚上,我也会在比赛的公开宣讲上介绍我针对KunLun-M配和潮汐平台制作的一些方案,大家也可以点原文链接去体验一下,到时候欢迎大家来看。直播会议ID更改为476428785