SaaS多租户自动化渗透平台 - 架构笔记

- 2 mins

0x01. 简介

在 2022 年初,我写了一篇 “云化分布式自动化渗透测试平台 - 架构笔记” ,介绍了我与团队师傅在 SaaS 自动化渗透平台架构设计方面的一些想法和初步实践,距今已过去两年多的时间。在这段时间里,遇到了很多新的问题和挑战,同时也有很多新的想法。在 23 年底,经过内部讨论,并结合业务发展情况,我们对整个平台进行了一次完全的重构,这篇笔记介绍了重构背后的一些思考、新架构的设计思路,以及架构的整体情况

PS:🔥 公司正在广纳人才,详见 “0x06. 招聘” 或 复制访问下方链接在线查看职位详情和投递简历

https://app.mokahr.com/su/5wsls



原文链接 SaaS多租户自动化渗透平台-架构笔记

欢迎关注

mp-weixin

0x02. 问题和挑战

在平台建设过程中,会不断产生新的需求,和更复杂的业务场景需要满足,但平台架构很难在短时间内进行频繁改动。因此对于大多数情况,只能进行“修修补补”的操作,经过两年多的日积月累,历史架构设计和技术选型的问题逐步暴露,无法很好地满足业务发展的需求。

关于平台架构设计和技术选型部分的问题,可总结为:

另一方面,平台在设计之初的定位是支撑内部渗透项目和攻防演练。而随着业务和平台的发展,内部也在考虑商业化的可行性,从而给平台带了新的需求和挑战

0x03. 解决思路

对于上述问题和挑战,解决思路如下

0x04. 平台架构

新平台架构示意图如下

图片

如上图所示,平台由四大部分组成

  1. SaaS 自动化渗透平台:图中蓝色部分,多租户架构设计,由业务层、存储层、基础服务、监控层等十余个服务组成,也是用户与平台交互的主要入口
  2. 外部扫描节点:图中右下角黄色部分,部署在不同云、环境下的扫描节点,通过 HTTPS + 双向证书校验进行通信和身份认证
  3. SaaS 安全中台:图中最上方绿色部分,通过 HTTPS 接口为内外部自动化渗透平台提供安全原子能力支撑
  4. 外部云基础设施:图中左下方橙色部分,通过云厂商 API 管理外部云资源,提供机器管理、代理服务、端口转发等功能

这里对平台中关键服务和新增模块的功能进行进一步的介绍

对于扫描子任务的运行过程,如下图所示

图片

图中包括 8 个步骤

  1. 扫描任务通常包含多个步骤,每个步骤会将任务拆分成更小的单元,即子任务,发送到消息队列,进行并发执行
  2. 扫描节点定时请求节点连接器,获取要执行的子任务
  3. 节点连接器内部会根据节点所属的租户,查询对应的队列是否有消息,然后返回
  4. 扫描节点收到任务后,根据参数执行对应的操作
  5. 扫描节点执行完成后,会将执行情况回传给节点连接器,包括任务执行状态,任务结果等
  6. 节点连接器收到任务回传数据后,会进行
    1. 缓解队列消息状态,用于队列监控服务检查消息状态
    2. 将结果存入消息队列,等待异步处理
  7. 结果处理服务定时从消息队列中获取要处理的任务数据
  8. 结果处理服务首先会统一更新业务层任务状态,然后根据不同的任务状态进行不同的操作
    1. 任务成功:结果入库、ACK 队列消息
    2. 任务失败:请求队列接口对消息进行 Delay 重试
    3. 任务中止:ACK 队列消息

0x05. 总结

本文介绍了为满足商业化需求,同时解决历史架构设计和技术选型问题的背景下,我和团队师傅在 SaaS 自动化渗透平台架构设计的又一次探索和实践,重点解决了扫描节点私有化部署、多租户服务改造、多租户数据隔离等问题。目前新平台已基本成型,并投入使用,我们计划在后续推动旧版向新平台迁移,完成内外部版本的统一

另外后续会不定期地分享关于 SaaS 自动化渗透平台建设和安全研发的一些实践经验和想法,感兴趣的朋友可以微信扫码、或搜索 “b1ngz的笔记本”,关注一波!

0x06. 招聘

🔥 目前公司正在广纳人才,包括研发、安服、产品、销售、售前等多种类型数十个岗位,复制访问下方链接可看到在招职位详情和在线简历投递

https://app.mokahr.com/su/5wsls

🔥 另外团队目前急招后端研发,工作地点北京,团队介绍和 JD 如下,感兴趣的师傅可通过以下方式咨询和投递简历,同时也欢迎技术交流

团队介绍:我们是长亭科技-产品研发中心-协同创新团队,团队直线汇报给公司创始人

团队职责:深入协同安服,将一线安全攻防经验,转换为自动化平台和工具,通过实战反馈,不断打磨优化,赋能公司业务,构筑公司核心竞争力。同时我们也在积极探索商业化,并取得不错的进展

团队项目:

🔥 后端研发 JD:

注:可同时参与上述多个项目的后端开发

  1. 具有扎实的计算机基础、网络基础和编程基础
  2. 掌握如 Python、Golang 等任意一门开发语言和相关 Web 框架,追求良好的代码风格和质量
  3. 掌握如 PostgreSQL、Redis、Elasticsearch、MongoDB 等任意一种数据库的使用
  4. 熟悉 Linux 环境操作,掌握 Git、Docker 等工具的使用
  5. 具备较强的逻辑思维分析能力,对解决具有挑战性问题充满激情
  6. 具有良好的沟通和团队协作能力、热爱技术、责任心强

0x07. 参考

1 云化分布式自动化渗透测试平台 - 架构笔记 https://mp.weixin.qq.com/s/HmPLUNDbasuzGHS4K1IG5Q
2 自动化安全工具平台 - 架构笔记 https://mp.weixin.qq.com/s/OMhS9yFlcpI9KOQduSxq9g
3 RabbitMQ Consumer Acknowledgements and Publisher Confirms https://www.rabbitmq.com/docs/confirms
4 Flask-RESTful https://flask-restful.readthedocs.io/en/latest/
5 Django ORM vs SQLAlchemy https://ebs-integrator.com/en/blog/django-orm-vs-sql-alchemy
6 Example of what SQLAlchemy can do, and Django ORM cannot https://stackoverflow.com/a/18207001
7 SQLAlchemy - The Database Toolkit for Python https://www.sqlalchemy.org/
8 What is multi-tenancy (multi-tenant architecture)? https://www.techtarget.com/whatis/definition/multi-tenancy
9 Redis Stream https://redis.io/docs/latest/develop/data-types/streams/
10 Low-latency message queue & broker software https://redis.io/solutions/messaging/
11 Two-way SSL Authentication for REST https://docs.solace.com/Security/Two-Way-SSL-Authentication.htm
b1ngz
rss facebook twitter github weibo youtube mail spotify instagram linkedin google pinterest medium vimeo