请求管理 | 洞态 IAST 在好大夫 SDL 中的最佳实践
好大夫在线
好大夫在线创立于 2006 年,是中国领先的互联网医疗平台。好大夫在线通过智慧医疗技术,合理分配医疗资源,帮助患者找到好大夫,是中国最可信赖的院外医疗服务平台。基于对患者的需求分析,好大夫在线创建了国内首个实时更新的互联网医生数据库 、首个专业的网上分诊系统、互联网院后疾病管理和线上复诊服务等。截至 2021 年 4 月,好大夫在线平台拥有 23 万实名注册的医生 ,其中 73%来自三甲医院,已服务全国患者 7000 余万人,每日医患沟通次数超过 20 万次。
背景
某天,我司的洞态 Server 变得比较卡,CPU 一直处于高负荷的运行中。经过仔细排查,我们发现洞态的消息队列堆积了大量的未处理消息。
经推敲,此问题主要由两大原因导致:
1. 性能测试
测试的同学在测试环境中进行性能测试时,导致单个 Agent 发出上百万的数据包。
2. 服务健康检查
业务服务中存在心跳检测机制,单个系统对应多个 Agent,且心跳包发送频率为几秒钟一次。倘若公司内部有 15 个系统,每个系统平均部署 2 个 Agent。那么 Server 每天便需要额外处理心跳包 200 多万次。
分析可得:性能测试时产生的请求包和业务的心跳检测包都是不需要进行漏洞检测的,只有正常的 QA 功能测试才需要进行安全检测。
解决方案:请求管理
基于上述分析,我们决定对洞态 Java Agent 进行更新,增加请求管理的 Feature:针对性能测试和健康检查的 API 请求,业务方配置特定的 URL 或 Header 头,Java Agent 对这些请求进行 Bypass,避免这类请求带来的性能损耗和洞态 Server 端计算的资源消耗。
相关 PR:
https://github.com/HXSecurity/DongTai-agent-java/pull/158
https://github.com/HXSecurity/DongTai-agent-java/pull/177
如何配置
1. 业务侧
分析心跳的 URL,配置 URL 黑名单进行 Bypass;针对性能测试,由业务方配置特殊的 HTTP 请求头,用于在 Java Agent 中进行 Bypass。
2. Java Agent
在 iast-core 模块的 resources 目录中增加 blackurl.txt 文件,在其中配置上对应的规则,规则格式:<Keyword> <type>,如图:
▷ type 值为 1:代表 URL 规则,keyword 填写完整的 URI(PATH)
▷ type 值为 2:代表 HTTP 请求头规则,keyword 填写 header 头
效果展示
在业务心跳数据包正常发送的情况下,没有增加 blackurl 时 Agent 端的消息队列,如图:
在业务心跳数据包正常发送的情况下,增加 blackurl 时 Agent 端的消息队列,如图:
通过对比可以发现,解决了业务心跳带来的大量数据堆积问题。
功能解读
请求管理是一个足以让人眼前一亮的 Feature,既解决了 Agent 对业务需求的影响,也避免了业务需求对 Agent 检测能力的影响。请求管理功能极大地便利了 IAST 在企业中的落地使用,感谢伍雄师傅。
关于洞态 IAST
洞态 IAST 是全球首个开源 IAST,于 2021 年 9 月 1 日正式开源发布。洞态 IAST 专注于 DevSecOps,具备高检出率、低误报率、无脏数据的特点,帮助企业在应用上线前发现并解决安全风险。自开源发布以来,洞态 IAST 备受开源社区人员和企业的关注,包括去哪儿、同程旅行、轻松筹、好大夫在线等在内的上百家企业均已成为洞态用户。
官网地址:http://dongtai.io
版权声明: 本文为 InfoQ 作者【火线安全】的原创文章。
原文链接:【http://xie.infoq.cn/article/2cc3619562522dec5564c44e2】。文章转载请联系作者。
评论