DevSecOps
新思 synopsys
https://www.synopsys.com/zh-cn/glossary/what-is-devsecops.html
要实施 DevSecOps,组织应考虑在其 CI/CD 流程中集成各种应用安全测试 (AST) 工具。以下是一些常用的 AST 工具:
静态应用安全测试 (SAST)
软件组件分析 (SCA)
交互式应用安全测试 (IAST)
动态分析测试 (DAST)
SAST
SAST 工具扫描专有代码或自定义代码,查找编码错误和设计缺陷,避免产生可利用的弱点。SAST 工具主要用于 SDLC 的编码、构建和开发阶段。Coverity 就是一种这样的 SAST 工具。
SCA
Black Duck 等 SCA 工具可扫描源代码和二进制文件,以识别开源和第三方组件中的已知漏洞。它们还可提供对安全和许可证风险的洞见,以加快确定优先级和开展补救工作。此外,它们还可无缝集成到 CI/CD 流程中,从构建集成直至生产前的发布,持续检测新的开源漏洞。
IAST
IAST 工具在手动或自动功能测试期间在后台工作,分析 Web 应用的运行时行为。例如,Seeker IAST 工具使用插装来观察应用请求/响应交互、行为和数据流。它可检测运行时漏洞并自动重现和测试结果,为开发人员提供详细洞见,内容具体到发生漏洞的代码行。这可让开发人员将时间和精力集中在解决关键漏洞上。
DAST
DAST 是一种自动黑盒测试技术,它模仿黑客与您的 Web 应用或 API 交互的方式。它通过网络连接和检查应用的客户端渲染来测试应用,就像渗透测试工具一样。[5] DAST 工具不需要访问您的源代码或自定义来扫描堆栈。它们与您的网站交互,从而以较低的误报率发现漏洞。例如,Synopsys Web Scanner DAST 工具可识别 Web 应用和 API 上的漏洞,包括移动后端服务器、IoT 设备和任何 RESTful 或 GraphQL API 等 Web 连接设备。
浅析DevSecOps实施过程和路线图
https://zhuanlan.zhihu.com/p/360094709
企业能否成功落地 DevSecOps 取决于三个方面:第一,工具链的建设,主要是 AST、SCA 等。只有具备相关的能力,才有后续的落地,其中的关键是 CI/CD 流程的安全嵌入;第二,人和文化非常重要。不仅有业务团队对安全的重视,而且不同团队的协作同样是让更多安全动作落地的必要因素,甚至包括老大们对安全的重视和投入;第三,体系和流程的建立。值得注意的是,企业一定要结合自己业务的情况进行,这样才能让事情事半功倍。切记:安全是每个人的责任!
### DevSecOps详解及案例分享
https://cloud.tencent.com/developer/article/1822104
```
关键发现
安全不仅需要左移,更需要“平铺”;正如DevOps中的持续集成与持续交付(CI/CD),还需要持续安全(Continuous Security)。
DevSecOps基于DevOps,但是DevOps开发模式并非对所有场景都是最优解;传统的瀑布流开发模式以及敏捷开发模式依然会大量并行存在。企业在进行相关产品产品的选购时,先要与业务、开发部门等沟通,选择最适合自己的开发模式,再决定选择DevSecOps产品,或者是其他软件开发安全产品。
传统的软件开发安全工具都能在DevSecOps中有自己的价值——但是由于DevSecOps本身有DevOps平台作为基础,传统的软件开发安全工具能否在不同环境中接入各类DevOps平台,是考验DevSecOps工具供应商的一大挑战。
当前采用DevSecOps的客户可以分为三种类型:
• 自身已经基本完成DevOps转型,需要加入安全元素,完成DevSecOps;
• 原有的瀑布开发或者敏捷开发模式中已经通过安全开发工具赋能,在向DevOps转型的过程中,将安全并行,完成DevSecOps;
• 原有的瀑布开发或者敏捷开发模式中安全能力不足,准备向DevOps转型的同时,建立安全文化,融入安全能力,直接完成DevSecOps建设。
DevSecOps需要软件开发方自上而下进行推动,是将安全融入开发运营体系之中,缺乏合适的管理和流程制度,最终依然是DevOps+Security,而不是DevSecOps。
从当前来看,将相关DevSecOps工具接入DevOps平台是主流;但是未来来看,DevOps平台会逐渐升级成为DevSecOps平台——可能是DevOps平台侧加强安全工具的能力,也可能是安全厂商侧基于开发安全平台赋予软件开发能力。
现在的安全测试主要有以下三种类型:
• SAST:静态应用安全测试又称白盒测试,是指在不运行程序本身的情况下,仅通过分析程序的语法、结构、过程、接口等来检测程序的安全性。一般可用于DevOps流程的编码、构建与测试环节。
优势:代码检查更具有可视性、能精确定位到漏洞位置
劣势:误报率高、对集成系统中产生的漏洞难以检测
• DAST:动态应用安全测试又称黑盒测试,在无需了解程序源代码与逻辑结构的情况下,对程序进行安全测试。一般可用于DevOps流程的测试与发布环节。
优势:攻击者视角测试更贴近现实情况、无需源代码
劣势:覆盖面较小、一定程度依赖人员安全能力、无法定位漏洞具体位置
• IAST:交互式应用安全测试又称灰盒测试,结合了SAST和DAST技术的优点,能够模拟验证代码中的已知漏洞是否确实能够在运行的环境中被攻击者使用。通过部署探针或者流量监测等方式,持续分析程序测试时的实时数据,发现程序中存在的漏洞。
优势:易于集成CI/CD、低误报高检出、低安全专家投入
劣势:插桩模式难以检测业务逻辑漏洞、流量模式的数据容易被污染降低检测效果
三种安全测试分别有其优劣势,尽管说当下IAST热度最高,而且从使用特性来看也最为适合DevSecOps场景,但是SAST与DAST依然在DevSecOps有很高的安全价值。
模糊测试:模糊测试是一种介于手工渗透测试与完全自动化测试之间的安全性测试。通过将准备好的随机或者半随机生成的数据输入程序,通过监视程序的异常状态,发现潜在漏洞。
软件成分分析(SCA):开源软件的兴起大大提升了开发者的开发速度。尤其是近年来,越来越多的企业对开源软件采取了开放的态度,软件项目中超过一半的代码都来自于开源组件。但是,开源软件依然有着大量的安全隐患,从“心脏滴血”到Equifax的数据泄露,其中都有开源软件供应链的因素。因此,在整个开发过程中,软件成分的分析就尤为重要。企业需要首先明确自己的软件项目中都有哪些开源组件,然后才能进一步指导这些开源组件是否还在被维护、当前版本是否存在漏洞等问题。可以说,软件成分分析是当前软件开发安全中不可或缺的能力。
运行时应用自保护(RASP):DevOps的一大关键是将开发和运营结合到了一起,因此当进入DevSecOps的时候,需要关注的不再只是开发安全,还需要考虑到程序上线以后的运营安全。RASP的概念最早在2012年由Gartner提出,通过将安全能力内置到应用自身,通过程序的上下文,判断威胁并采取措施。传统的WAF只能从边界对应用程序进行防护,但是无法知晓边界内部的情况,同时因为WAF的规则配置等问题,容易引起大量误报,RASP的加入则可以补足这些缺陷。但是,RASP也会存在一些问题,比如由于直接内置于程序,或者于程序直接关联,因此可能会影响程序的性能。RASP依然是在逐渐成熟的技术,从应用防护层面来看,值得持续关注。
安全工具集成中心:尽管说最好的DevSecOps是在确保安全的基础上,尽可能减少安全,以及安全人员在开发和运营过程中的存在感,但是当前来看显然还有很长一段路要走。事实上,以企业的转型角度来看,从之前的瀑布式开发模式或者敏捷开发模式,转向DevOps开发模式,在技术架构上已经实属不易;将安全工具迁移到新的环境,更是一项艰巨的任务。因此,虽然无缝、无感知的安全是DevSecOps的目标,在实现过程中显然无法一蹴而就。那么,目前来看,就需要一个安全工具的集成中心,能融入到CI/CD管道中,协助开发人员管理和使用相关的安全工具,而不是在大量“额外”的安全工具中手足无措。
```
DevSecOps 工具一览
```
安全代码的扫描主要分成静态扫描,动态扫描以及交互式扫描。所谓的静态扫描就是工具直接扫描代码的源文件或者二进制文件,是白盒测试,测试者从内部开始测试,通过查看源代码里面的条件从而显示其是否有安全漏洞;动态应用安全测试是黑盒测试,测试这主要从外部进行测试,比如模拟黑客工具,一般针对Web应用程序;而交互式应用安全测试就是通过把安全工具的代理嵌入到应用程序里面,从而在测试应用程序的时候,这个安全代码能够监控到应用系统的网络内容,堆栈等信息,从而嗅探出系统在动态行为下的安全漏洞。
静态应用安全测试工具 (Static Application Security Test, SAST)
商业版: Forfify, AppScan, CheckMarx
开源版:FindSecBugs, Brakeman, PMD
动态应用安全测试工具 (Dynamic Application Security Test, DAST)
商业版: WebInSpect, Burp, AppSpider,NetSparker
开源版: Zap, ZapProxy
交互式应用安全测试工具 (Interactive Application Security Test, IAST)
商业版: Contrast, Seeker
开源版: 目前还没有可用的
```
“安全需要每个工程师的参与”-DevSecOps理念及思考https://security.tencent.com/index.php/blog/msg/150
devsecops的理解与建设
浅谈系列之DevSecOps(一)目标及优点
什么是 DevSecOps?2022 年的定义、流程、框架和最佳实践
https://blog.csdn.net/weixin_40046357/article/details/125383552
```
2022 年 5 大 DevSecOps 最佳实践
要释放 DevSecOps 的潜力,您必须遵守设定的最佳实践。在这里,我们列出了 DevSecOps 的最佳实践,以确保高水平的安全性、降低风险和提高运营效率。目标应该是确保高标准的安全性。
1. 使用安全编码技术
安全编码技术是 DevSecOps 不可或缺的一部分,以确保软件得到充分保护,免受任何低漏洞级别的威胁。除非代码高度安全,否则将存在数据泄露、网络安全攻击和其他安全威胁等风险。建议在安全编码技术上投入所需的时间和资源,以避免将来出现严重的安全攻击。始终选择有经验的开发人员并遵守正确的编码标准。
2. 整合正确的工具
集成正确的工具是有效实施 DevSecOps 的基础之一。大多数公司利用顶级应用安全技术,例如 SAST、DAST、交互式应用程序安全测试 (IAST) 和源组合分析 (SCA) 等,以确保正确使用和优化工具。
DevSecOps 工具中一些常见但备受追捧的功能是图像保证、入侵检测、运行时保护和其他微服务安全功能。随着容器化和微服务成为现代应用程序基础设施的基础,必须将适当的 DevSecOps 工具集成到企业 SOP 中。这就是开发良好且易于使用的 API 发挥作用的地方,因为它们有助于跨不同平台和应用程序领域扩展和集成工具。
3. 使用自动化
手动流程更容易出错,并且通常不方便扩大规模。此类技术还增加了错误配置的风险,这是企业面临的最具影响力、最严重的安全威胁之一。
需要在整个 CI/CD 管道中应用和验证严格的安全协议和措施,而自动化是简化整个过程的原因。这就是为什么它是 DevSecOps 最有效的最佳实践之一。企业必须尽可能实现自动化——从 IDE 中的代码编写到生产中的 IAM 角色——通过避免错误配置来预防、检测和修复问题。
4. 采用安全即代码
安全即代码是指安全策略的编码、扫描和验证。安全作为代码的主要优点是它确保了适当的安全规则。协议在整个基础设施中统一实施。它还有助于加快部署并使用管道的版本控制和自动化。
安全即代码,如自动化和其他 DevSecOps 最佳实践,提供了加强安全性的好处并有助于改进操作。此外,一旦记录在案,它就简化了迭代和扩展安全方法。
5. 安全左移
传统上,安全扫描和评估是在软件生产之后进行的。因此,解决安全漏洞是复杂、昂贵且容易受到时间限制的。为了解决这些困难,左移安全强调尽早将安全集成到软件开发生命周期 (SDLC) 中。
左移不仅仅是代码。它还需要在 SDLC 的规划、分析和设计阶段优先考虑安全性。企业可以及早发现安全问题和错误配置,提高产品质量和安全性,同时减少修复漏洞所需的时间和精力。
```
DevSecOps全景图
http://www.jzsj.com.cn/devsecops.html
![image](/upload/2022/07/image.png)
- 感谢你赐予我前进的力量