01 什么是DevSecOps?
DevSecOps从单词上来看可以分为Dev(开发)、Sec(安全)、Ops(运维)三个部分,DevSecOps是在软件开发生命周期(SDLC)的早期引入安全性,意味着安全防护要贯穿应用开发的整个过程,通过固化流程、加强不同人员协作,通过工具、技术手段将可以自动化、重复性的安全工作融入到研发体系内,让安全属性嵌入到整条流水线。
02 从DevOps到DevSecOps
从字面上看,DevSecOps在DevOps的基础上增加了Sec,可以理解成在遵循DevOps的理念下,将安全融入其中,是DevOps的升级版。
从前,安全防护只是特定团队的责任,在开发的最后阶段才会介入。当开发周期长达数月、甚至数年时,这样做并无问题;但现在,采用DevOps可以有效推进快速频繁的开发周期(有时全程只有数周或数天),过时的安全措施则可能会拖累整个流程,即使最高效的DevOps计划也可能会放慢速度。
DevSecOps意味着从一开始就要考虑应用和基础架构的安全性,同时还要让某些安全网关实现自动化,以防止DevOps工作流程变慢,选择合适的工具来持续集成安全防护有助于实现这些目标。
03 DevSecOps工具
DevSecOps工具是整个DevSecOps的核心。它通过扫描开发代码、模拟攻击行为,从而帮助开发团队发现开发过程中潜在的安全漏洞。
从安全的角度来看,DevSecOps工具可以划分为以下四类:
静态应用安全检测工具(SAST)
静态应用程序安全测试技术通常在编码阶段分析应用程序的源代码或二进制文件的语法、结构、过程、接口等来发现程序代码存在的安全漏洞。SAST主要用于白盒测试,检测问题类型丰富,可精准定位安全漏洞代码,比较容易被程序员接受。但是其误报多,耗费的人工成本高,扫描时间随着代码量的增多显著增长。相关的工具有:Checkmarx,Fortify,WuKong软件代码安全检测修复系统等。
动态应用安全检测工具(DAST)
动态应用程序安全测试技术在测试或运行阶段分析应用程序的动态运行状态。它模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应,从而确定该Web应用是否易受攻击。这种工具不区分测试对象的实现语言,采用攻击特征库来做漏洞发现与验证,能发现大部分的高风险问题,因此是业界Web安全测试使用非常普遍的一种安全测试方案。但是由于该类工具对测试人员有一定的专业要求,大部分不能被自动化,在测试过程中产生的脏数据会污染业务测试数据,且无法定位漏洞的具体位置等特点,不适合DevSecOps环境使用。相关工具有:AWVS、Burpsuite、OWASP ZAP等。
交互式应用安全检测工具(IAST)
交互式应用程序安全测试是2012年Gartner公司提出的一种新的应用程序安全测试方案,通过在服务端部署Agent程序,收集、监控Web应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,高效、准确的识别安全缺陷及漏洞,同时可准确确定漏洞所在的代码文件、行数、函数及参数。IAST相当于是DAST和SAST结合的一种互相关联运行时安全检测技术。IAST的检测效率、精准度较高,并且能准确定位漏洞位置、漏洞信息详细度较高。但是其部署成本略高、且其无法测试业务逻辑漏洞。相关的工具有:Contrast Security、默安IAST、悬镜等。
开源软件安全工具(FOSS)
现在很多开源软件安全工具已经比较成熟了,比较著名的有:X-ray、Sonatype IQ Server、Dependencies Check等。
一般情况下,选用功能齐全的IAST或DAST即可解决大部分安全问题,想要进一步左移,可继续推进SAST和FOSS的建设,将漏洞发现提前到开发阶段。
04 DevSecOps的优势
DevSecOps的两个主要优势是速度和安全性。DevSecOps的快速安全交付可节省时间并减少成本,最大程度减少在事后重复执行流程以解决安全问题的需要。
了解更多安全资讯,请关注 中科天齐软件安全中心



