文章总结: 本文详细介绍了DevSecOps实施中的研发安全流程体系,包括安全卡点设计、流程缺陷补偿、安全提测作业流程及相关子流程。文章强调安全流程必须结合公司实际研发模式,不能脱离现有流程。通过在域名申请、公网访问权限等节点设置安全卡点,建立产线自检、提单和安全团队测试的三阶段流程,以及设计插队和带病上线等特殊流程,有效支撑研发安全工作在公司层面的全线开展。
综合评分: 88
文章分类: 安全建设,DevSecOps,应用安全,安全运营,解决方案
DevSecOps实施关键:研发安全流程
原创
aerfa21
我的安全视界观
2024年7月19日 06:06
北京
很久以前,就想写一篇关于SDL与DevSecOps的文章,但疏于实践一直未能动笔。想写的原因很简单,因为总是听到有人说SDL落后、DevSecOps相关技术更高超。一提到研发安全建设,不分研发模式都在赶时髦一样地说DevSecOps。从我的观察来看,不结合研发模式来做研发安全,都是不成功的。
在数字化浪潮的推动下,一些公司已经完全步入DevOps模式,有的则出现瀑布、敏捷或DevOps并存,且后者是居多的。所以如何在多种研发模式下进行有效的研发安全建设,成为一个必须解决的难题。经过近十年的实践,终于在探索解法上有一点点收获与经验,于是有了“深耕研发安全”这一系列文章。
本文是第五篇,DevSecOps实施的第二个关键准备(2/4)。主要介绍研发安全流程体系,从卡点的选取、安全提测主流程的设计到流程的缺陷补偿,全方位支撑研发安全工作在公司层面的全线开展。
01 研发安全卡点设计
——————————
关于研发安全落地,最强有效的方式是在研发流程中设置检查卡点,产品通过安全测试后才放行。卡点选取一般会在申请域名、申请公网访问权限等IT的流程中,故需要想办法和相关团队建立革命友谊,嵌入安全测试结果检查。
如上图所示的安全卡点,基本上能够管住面向互联网或内网的新系统发版。若是已上线系统的功能新增、改bug等迭代场景,在没有统一发布系统的情况下,很难对其安全质量把关。
此外对于软件/硬件交付客户侧的产品,由于不需要申请公司资源上线提供服务,所以上述流程也就被bypass了。但是按照上述思路,找到产品的管理流程(IPD),想办法把安全卡点设计到合适的节点,于是就有了IPD-Sec:
在IPD的技术评审(TR)流程中,将各项安全测试结果嵌入其中进行检查,最后安全工程师会到产品管理的页面进行检查结果填写,确保在流程中的产品均经过安全测试并达标。但对于未纳入流程管控的产品,收效甚微,有时仅凭产品线的自觉性与责任心。
02 安全流程缺陷补偿
——————————
先解决主要问题,是研发安全建设,乃至做所有事情的主要思想。但也不能对非主流程之外的置之不理,尤其是在安全相关的工作中。如果达不到100分、那至少要平衡资源尽可能做到80分,以降低问题带来的安全风险。
在没有统一发布系统的大前提下,信息系统与产品的增量(功能变更,新增、资源替换等场景)安全测试,基本上是依赖于产品线,这对研发安全工作埋下了极大的安全隐患。于是需要重新审视整个研发环境和流程,换个视角寻找方法,重点在于找“汇聚点”统一检测及治理。比如公司的代码是统管的、都使用内部gitlab,于是可将代码安全扫描作为补偿措施,常态化去做静态代码扫描及推动漏洞修复。
03 安全提测作业流程
——————————
这是研发安全的主流程,是研发团队与研发安全团队联系的纽带。研发安全团队通常会出于规范和流程化安全测试,制定出相应的流程,在公司内部发布并组织培训赋能。
在安全提测作业流程中,为了解决安全人手不够的问题、出于公司内部研发流程不统一、产品形态多种多样、产品安全是产线的主责等多方面考虑,分为产品线自主进行安全测试、提交安全提测工单和安全团队检查及测试三个部分:
- 产线自检:产品线使用安全团队提供的安全测试工具或能力(静态代码扫描、开源组件安全扫描、交互式安全测试或被动黑盒漏扫或客户端安全扫描),对即将发布的产品进行安全测试,按要求对不同级别漏洞进行确认并修复。自动化程度取决于团队的能力,比如大产线可以将代码层面的安全测试工具(SAST和SCA的安全检测能力接入到自己的流水线);能力强的安全团队可以在公司层面统一实现自动化代码安全扫描(基于gitlab,在开发提交代码时进行触发,扫描结果推送给对应的开发),也可以自建研发安全平台,将所有的安全测试工具进行整合,提供一个统一的平台给各产线使用。
- 产线提单:产品线完成安全自测并将必修漏洞完成修复后,可提交安全测试工单。此时需要提供待测产品的仓库、测试环境、账号、变更说明、历史提测工单等基础信息,看似非常多的信息实则可以在研发安全平台上进行统管,积累起来后直接选择就行。提交完成后平台会进行校验,关注仓库地址是否合规、扫描结果是否合规等,若是均符合标准则会按照提测类型选择自动通过,或分配给安全测试工程师进行手工测试。
- 安全测试:针对全新或大版本迭代的产品,安全测试工程师会进行手工测试。在此之前需要关注各类自检报告,并进行抽检,内容包括自动校验环节结果是否正常、已修复漏洞是否真的修复、已修复漏洞是否引入新的安全风险等。如符合则进行安全测试,重点关注业务逻辑漏洞、数据安全方面的隐患及深入业务场景的漏洞。在测试过程中若发现漏洞或隐患,则提交漏洞工单给提测人并督促进行修复。
04 其他相关流程介绍
——————————
与主流程配套的,还有一些子流程,基本上都来自于:在主流程落地过程中,遇到的问题,从而提出的解法。最常见的有:
- 安全提测插队流程:对于新产品紧急发版、已上线产品大功能迭代紧急上线等情况,专门设计了安全提测插队流程,发起人需在提交安全测试工单后,提交加急提测申请,由部门负责人和产品安全负责人共同批准后,可立即分配安全测试工程师进行作业。在每个月的安全质量考核中,也会将插队次数(不好的评价指标)进行统计与展示,以督促产品线不能滥用这个特权流程;
- 安全提测带病上线流程:在日常的安全测试场景中,极少数情况会遇到产品修复漏洞不达标而要求上线发布。因此就诞生了该流程,要求产品线明确修复时间、漏洞危害缓解措施和未修复原因,上报产品管理委员会主任并征求其同意。此时,安全团队也要全力配合,在攻击检测、系统加固方面提供专业建议及采取必要的举措。该流程从设置至今,基本上没有产品线走过,这都归功于公司整体对安全的重视,由此也彰显出高层安全组织的作用。
研发安全流程,简单来说要谨记一条准则:安全不能自己造流程,必须结合公司的研发流程。无论它是否健全,都应该在此基础上设计出研发安全流程。能做自动化固然好,但这并非是安全所能一厢情愿的,因为这与实际的研发基础设施及管控情况息息相关。
长按识别二维码,和我交流
More…
— 深耕研发安全 —
— SDL 100问 —
- SDL100问:我与SDL的故事
- SDL 1/100问:SDL与DevSecOps有何异同?
- SDL 2/100问:如何在不同企业实施SDL?
- SDL 3/100问:SAST误报太高,如何解决?
- SDL 4/100问:SDL需要哪些人参与?
- SDL 5/100问:在devops中做开发安全,会遇到哪些问题?
- SDL 6/100问:如何实施安全需求?
- SDL 7/100问:安全需求,有哪些来源?
- SDL 8/100问:安全需求怎么实现自动化?
- SDL 9/100问:实施安全需求,会遇到哪些难题?
- SDL 10/100问:安全需求和安全设计有何异同及关联?
- SDL 11/100问:设计阶段应开展哪些安全活动?
- SDL 12/100问:有哪些不错的安全设计参考资料?
- SDL 13/100问:安全设计要求怎么做才能落地?
- SDL 14/100问:有哪些威胁建模方法论?
- SDL 15/100问:有哪些威胁建模工具?
- SDL 16/100问:如何开始或实施威胁建模?
- SDL 17/100问:威胁建模和架构安全评审,有何异同?
- SDL 18/100问:编码阶段,开展哪些安全活动?
- SDL 19/100问:如何选择静态代码扫描(SAST)工具?
- SDL 20/100问:如何选择开源组件安全扫描(SCA)工具?
- SDL 21/100问:SCA工具扫描出很多漏洞,如何处理?
- SDL 22/100问:SCA工具识别出高风险协议,如何处理?
- SDL 23/100问:如何制定一份有用的开发安全规范?
- SDL 24/100问:如何做到开发安全规范的有效实施?
- SDL 25/100问:应该如何选型代码安全扫描工具?
- SDL 26/100问:代码安全扫描应该设置哪些指标?
- SDL 27/100问:如何提升开发人员的安全意识?
- SDL 28/100问:在编码阶段加入安全检查后,如何处理带来的时间压力?
- SDL 29/100问:白盒检测工具存在局限性,如何进行补偿?
— 软件供应链对抗探索 —
——— 实战演习 ———
- 1 何为多维度的视角
- 2 关于对演习的期望
- 3 公司层面统筹布局
- 4 实战攻防演习下的产品安全保障
- 5 产品安全事件定级评分方法
- 6 演习前红队暗泉涌动投毒
- 7 面向情报公司付费信息的应急
- 8 面向互联网侧情报信息的应急
- 9 客户侧产品推送样本事件处置
- 10 某邮箱被攻击情报的自我检查
- 11 办公网出口地址攻击客户蜜罐
- 12 SRC白帽子突破边界进业务网
- 13 某部门下发零日漏洞确认函处置
- 14 公司溯源团队查到团队内部成员
- 15 演习后对工作技能的复盘总结
- 16 演习后认知外的见微知著
——— 安全运营 ———
- 安全事件运营SOP:软件供应链投毒事件
- 安全事件运营SOP:接收漏洞事件
- 安全事件运营SOP:webshell事件
- 安全事件运营SOP:蜜罐告警
- 安全事件运营SOP:网络攻击
- 安全事件运营SOP:钓鱼邮件
- 安全事件运营SOP:基于实践的安全事件简述
- 企业级供应链投毒应急安全能力建设
- 应急能力提升:实战应急困境与突破
- 应急能力提升:挖矿权限维持攻击模拟
- 应急能力提升:内网横向移动攻击模拟
- 应急能力提升:实战应急响应经验
- 应急能力提升:应急响应报告点评
- 应急能力提升:应急响应专题总结会
- 应急响应:redis挖矿(防御篇)
- 应急响应:redis挖矿(攻击篇)
- 应急响应:redis挖矿(完结篇)
——— 软件安全 ———****
——— 企业安全 ———****
- 企业安全建设需求
- 企业安全威胁简述
- 企业安全架构建设
- 企业安全项目-测试环境内网化
- 企业安全项目-Github信息泄露
- 企业安全项目-短信验证码安全
- 企业安全项目-前端绕过专项整改
- 业务安全之另类隐患
- 应用发布之安全隐患
- 甲方眼里的安全测试
- 基于堡垒机的自动化功能实践1****
- 基于堡垒机的自动化功能实践2
- 基于堡垒机的自动化功能实践3
- 基于堡垒机的自动化功能实践4
- Nmap操作系统探测技术浅析
- 漏洞情报调研
- 漏洞调研报告(非完整版)
- 从漏洞视角看敏捷安全
——— 渗透测试 ———****
——— 安全开发 ———****
——— 个人体验 ———****
- 如何学习这么多的安全文章(实践篇)
- 如何学习这么多的安全文章(理论篇)
- 漫谈在安全公司做内部安全的体验
- C3安全峰会参后感
- 提高认知效率秘籍
- 向上型技术人的职业素养
- 关于勇气的一次突破
- 推荐:探索精神和财富自由之路
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:我的安全视界观 aerfa21《DevSecOps实施关键:研发安全流程》