实用指南:手把手搭建坚若磐石的DevSecOps框架

news2025/3/15 7:15:50

长期以来,安全问题一直被当作软件开发流程中的最后一步。开发者贡献可以实现软件特性的代码,但只在开发生命周期的测试和部署阶段考虑安全问题。随着盗版、恶意软件及网络犯罪事件飙升,开发流程需要做出改变。
 

开发过程中的“安全左移”是指将安全问题作为每个开发迭代和冲刺的重要组成部分。诸多组织正在系统地将安全实践纳入他们的DevOps流水线中,以最终形成 DevSecOps。DevSecOps 并不是单一的工具或技术。成功的 DevSecOps 是在一个框架中集成了多种实践和工具,确保企业在开发工作流程的所有阶段都考虑到安全问题,换言之,DevSecOps 并非一日之功,一个人或单个部门都无法独立负责 DevSecOps,它跨越了开发、网络安全、QA测试、IT运维和技术支持等团队。
 

本文将简述采用 DevSecOps 的优势和挑战,整个应用生命周期中 DevSecOps 框架的要素以及其中每个阶段的常用工具。
 

DevSecOps 中的基本概念

DevSecOps 是将安全额外加入到企业 CI/CD 工作流程中。DevSecOps 并没有取代现有的开发模式。相反,它通过在整个开发周期中增加一个安全层来扩展和补充这一模式。DevSecOps 是一种解决开发人员将安全检查和测试保留在项目后期阶段的方法——通常是在项目接近完成和部署阶段。
 

在后期阶段才进行安全检查会导致两种问题。安全缺陷可能在被发现之前已经进入已发布的软件,而在软件开发生命末期发现的安全问题比早期发现的问题需要更多的时间、资源和资金来补救。
 

越来越短的开发周期以及降低项目管理成本和商业风险的需要,使得安全左移成为众望所归的方法。如果将项目进度想象成从左到右排列的时间线,那么左移意味着将安全检查移到项目的开始阶段。安全及其他操作上的考虑越往左移,它们就越有可能被纳入产品的设计和搭建之中。DevSecOps 的目标是在设计、构建、测试和部署软件的过程中,开发人员对安全问题的重视不亚于其他主要的软件特性。
 

当完全实现 DevSecOps 时,它将会带来以下好处:

  • 为企业、客户及用户降低安全风险
  • 在产品生命周期早期发现软件的安全缺陷及漏洞
  • 更快修复安全问题
  • 改善开发、安全和运维团队之间的沟通和协作方式
  • 整体代码质量更好
     

然而,直接将安全纳入现有的敏捷开发流程中可能会带来一些弊端:

  • 改变现有工作流程,可能会出现瓶颈
  • 开发和安全团队都需要额外的培训以补充专业 知识
  • 由于沟通不畅或为了达成零漏洞的目标而导致开发工作流程中断

截屏2022-12-16 下午5.16.41.png
图片来源:TechTarget
 

创建现代化的 DevSecOps 框架

由于DevSecOps是对现有软件开发实践的扩展或增强,因此最简单的做法是从敏捷的角度考虑DevSecOps框架,以此来进行规划、编写代码、测试、部署和持续运维。
 

规划和设计

DevSecOps 在软件开发生命周期的早期阶段开始,通常是设计或规划阶段。例如,安全问题会影响 Sprint planning 期间的目标设置。DevSecOps 框架通过以下方式将安全目标引入规划阶段:

  • 建立代码标准并进行同行评审。当开发者以不同的方式编写各部分代码时,安全缺陷可能进入产品中。一个团队如果建立并执行一套一以贯之的代码标准,并依据此套标准评估代码库,可以在极大程度上防止漏洞引入。同行评审可以确保代码确实符合标准并且能够发现常见的编程错误。
  • 在IDE环境中使用安全插件。IDE是可扩展的平台,通常可以安装各类安全插件以检查代码中潜在的漏洞,就像 IDE 可以标注出缺少的标点符号或语法错误一样。基于 IDE 的安全检查会在开发者向代码库进行提交之前为他们提供静态代码分析。
  • 进行威胁模型分析。威胁建模鼓励开发者像黑客一样对待一个应用程序。开发人员应该考虑到程序会被滥用的潜在风险,同时应该在程序目标设置中考虑到防止滥用的方法。常见的威胁模型分析方法包括STRIDE、DREAD和OWASP。多种威胁模型可以结合起来,以加强设计的安全性。
     

写代码及代码管理

DevSecOps 不仅仅指有安全意识的代码标准和同行评审。同时还意味着将安全置于代码库管理和维护的中心,以避免引入漏洞。确保代码提交和管理的安全的常用技术包括:

  • 管理依赖项的安全性。外部库、开源代码及重复使用的模块在软件开发中很常见。然而,外部代码可能并不遵循与企业内部工作流程一致的安全标准和防范措施。开发者应该检查所有依赖项的安全性,验证他们是否是官方发布的真实版本并安全地交付。
  • 扫描代码和代码仓库。代码仓库扫描工具可以在构建执行前对提交到仓库的代码进行静态分析,检查是否存在漏洞、硬编码凭证和其他常见的疏漏。漏洞测试和其他静态测试对于代码安全来说至关重要。代码仓库扫描为大型团队增加了安全性,因为团队中的开发者会访问同一个仓库。
  • 保护开发流水线的安全。在检测到安全问题后,一个完整的 DevSecOps 框架可能会调整开发工作流程以防止代码直接提交到默认或主干分支,直到问题得到解决。此外,攻击者还可以通过引入恶意代码或窃取凭证来破坏流水线本身。因此,企业应该在其开发流水线中进行安全管控。
     

测试

测试可以检测应用程序的缺陷和安全问题。构建、测试和发布流水线的自动化和编排应该包括当代码部署测试时运行的安全工具,如,在单元测试期间检查漏洞。DevSecOps 框架的常见测试注意事项如下:

  • 集成动态应用安全测试(DAST)。DAST 和渗透测试历来都是开发过程中的最后一步。DevSecOps 应该将DAST、渗透测试和其他类型的动态漏洞测试加入到流水线内构建阶段的测试方案中。完整的DAST和其他动态漏洞测试,如安全验收测试,可能很耗时,但也可以选择更轻量的测试方案,既可以更快地获取结果也能识别静态测试中遗漏的问题。
  • 保护基础设施安全。DevSecOps 的安全考量应该不仅仅局限于应用程序本身,还需要考虑到部署环境,无论是本地还是云端的基础设施(虚拟机、容器、K8S集群等)。借助微软、AWS等工具可以在云基础设施上执行安全驱动的策略。基础设施即代码(IaC)是构建标准和良好应用程序环境的一种方式。
     

部署和运维

即便构建成功,也并不意味着再也不会出现安全问题。DevSecOps 实践通过以下方式进入部署和运维环境:

  • 配置管理。托管应用程序的基础设施环境必须是稳定的。任何试图改变既定基础设施配置的行为都可能是恶意的。监控和执行基础设施配置的工具应该是一个组织的DevSecOps框架的核心要素。云供应商也提供这些工具,如Microsoft Defender for Cloud和Microsoft Sentinel。

  • 入侵检测和行为分析。分析工具(入侵检测和预防系统)可以建立流量模式和性能的基准线,然后基于此检测工作负载或网络中可疑或恶意的异常情况。这类工具已经发展成熟,可以被 DevSecOps 所采纳。

  • 持续的安全测试。DAST、渗透测试和其他类型的安全测试不应该止步于应用生命周期的测试阶段。定期执行测试(如端口扫描、模糊测试),并且只要团队怀疑代码中存在新的风险就应该进行测试。例如,如果一个新发现的漏洞出现在处理器的命令集中,运维或安全支持管理员应该采取行动。当测试确认了存在潜在的漏洞,他们就可以即刻着手开发和部署新的补丁。

  • 告警和报告。安全工具和策略需要配合全面的告警和报告。开发者和项目相关方应该收到可执行的情报以支持及时的鉴别和修复问题。

  • 事后复盘。即便做了最佳的安全工作,企业仍有可能最终在应用程序或基础设施中遇到安全问题。当安全事件发生时,进行事后总结是十分必要的。团队应该共同解决问题,并利用经验来调整未来的开发和运维工作,以避免重蹈覆辙。
     

DevSecOps 工具盘点

如果企业开始推动 DevSecOps 的实现,那么首先需要评估一下工具链及其中的每一个工具。一些组织已经使用了适合的DevSecOps 工具,而其他组织则需要更新或替换工具。市面上,有需要工具可以满足 DevSecOps 的需求,以下列出每个主要阶段的常见工具:
 
规划和设计阶段:团队需要针对安全注意事项进行协作和讨论。用于规划、问题跟踪和管理的常用工具有 Jira(软件供应链管理平台SEAL已实现对Jira的集成),以及通信工具Slack。威胁建模是 DevSecOps 下的一个主要规划问题,市面上有许多常用工具,如IriusRisk、CAIRIS、Kenna.VM、微软威胁建模工具、SD Elements、securiCAD、Tutamantic、Threagile、ThreatModeler和OWASP Threat Dragon等,它们均可提供威胁建模能力。
 

写代码及代码管理阶段:开发人员使用静态代码分析、IDE插件(如 pre-commit hooks)和代码仓库扫描来确保代码安全。代码审查工具包括PMD、Checkstyle、Gerrit、Phabricator、SpotBugs和Find Security Bugs。在选择代码审查工具时,要选择为项目的编程语言和IDE或工具链的互操作性设计的工具。
 
在构建阶段的DevSecOps 安全实践包括软件成分分析(SCA)、静态应用测试及单元测试,它们可以分析新代码和任意依赖项。常见的工具包括OWASP Dependency-Check、Retire.js, Snyk等。
 

测试阶段:测试阶段的重点是使用DAST来识别与应用程序操作相关的漏洞,如用户认证、授权、SQL注入和API端点。DAST工具包括Invicti(以前是Netsparker)、Astra Pentest、Acunetix、PortSwigger、Detectify、Rapid7、Mister Scanner、AppScan和AppCheck。
 
解决攻击代理和网络协议模糊的一般DevSecOps测试工具包括Boofuzz、OWASP Zed攻击代理、BDD-Security、AppScan、Gauntlt、JBroFuzz和Arachni。选择工具的依据是它们是否适合所需的应用类型和测试,以及它们与其他正在使用的工具的互操作性。
 

部署和运维阶段:一个DevSecOps的候选版本应该被安全地编码、进行构建检查和彻底的测试。紧接着,DevSecOps团队需要为版本发布搭建一个安全的操作环境,比如设置访问控制、网络防火墙访问和密钥管理。在部署阶段,变更和配置管理工具是DevSecOps框架的核心。常见的配置管理工具包括Red Hat Ansible、Chef、Puppet、Salt、HashiCorp Terraform和Docker。DevSecOps团队专注于实时运行环境中的情况。测试和生产环境之间的差异应该被识别并仔细研究,因为它们往往是安全出现问题的预兆。运行时性能工具包括Osquery、Falco和Tripwire。
 
此外,团队使用混沌工程工具,如Chaos Monkey和Gremlin,来评估部署中的,或者是未经测试的故障,如服务器崩溃、驱动故障和网络连接问题。其目的是让部署在中断中生存下来,或者优雅地失败。
 
反馈循环是DevSecOps成功的核心因素。除非工具产生的结果能够循环到开发过程中,否则这些工具是没有用的。利用整个工具链的报告和分析来评估当前版本的安全状态,并利用这种经验来改善下一个开发周期。
 

SEAL 如何帮企业实现 DevSecOps?

软件供应链管理平台 SEAL 可以帮助需要实现 DevSecOps 的企业以全链路的视角管理代码安全、构建安全、依赖项安全以及运行环境(K8S)安全,其可扩展的架构可以让开发者轻松将各阶段的工具集成其中,并为软件供应链整体提供简洁、直观的全局视图,帮助开发、安全和运维团队充分掌握全链路概况,以评估软件开发流程的安全状态。
 

免费试用请访问:seal.io/trial.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103003.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于java的fofa爬虫

文章目录下载链接介绍使用方法关键字生成器API爬虫Fofa爬虫导出功能修改配置文件下载链接 github : https://github.com/13337356453/FofaSpidercsdn : https://download.csdn.net/download/realmels/87320066 介绍 顾名思义,fofa爬虫。可以用api爬,也…

leetcode:1192. 查找集群内的关键连接【tarjan模版 + 找割边】

目录题目截图题目分析割边割点强连通子图ac codetarjan模版总结题目截图 题目分析 找割边 割边 割点 强连通子图 我觉得就是割边左右的两个子图?应该是去掉n条割边后,剩下n 1个强连通子图的意思吧。。。 ac code class Solution:def criticalConne…

【愚公系列】2022年12月 .NET CORE工具案例-多语言离线翻译系统

文章目录前言1.在线翻译2.离线翻译一、多语言离线翻译系统1.开发环境2.准备离线翻译包3.准备python代码4.调试翻译结果5.Python翻译服务对接到.NET Core前言 1.在线翻译 在线翻译,一般是指在线翻译工具,如百度翻译、阿里翻译1688或Google翻译等。这类翻…

计算机毕业设计django基于python的在线教育平台

项目介绍 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,在线教育平台当然也不能排除在外。在线教育平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用django框架构建的一个管理系统。整个开发过程首…

fpga实操训练(小功能到模块开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 有过c、java编程语言经验的朋友,是否还记得曾经自己是如何学习编程语言的?一开始的时候,为了学习语法&#xff…

光电传感器调研报告

目录 前言: 一、理论基础——光电效应 二、光电传感器原理 三、光电元件 3.1光电管 3.2光敏电阻 四、光电传感器特性 4.1伏安特性 4.2光电特性 4.3光谱特性 五、光电传感器的应用 LED(发光二极管) 超声波传感器 光纤 六、总结 …

用Python赚钱的方法有哪些?

很多人想知道用Python赚钱的方法有哪些?Python很容易使用,应用性较强。可以通过使用Python开发小程序、抓取数据、游戏开发、兼职编程老师,发展副业的方式来赚钱。 用Python赚钱的方法: 1、某宝搜python程序   可以到某宝上搜&a…

中年人怎么转行做程序员,教你不怕年龄限制奔向高薪之路

网上很多人都说,人到了中年再去学编程已经来不及了,体力和精力都跟不上年轻人,做开发还要经常学习,然而中年人基本上有老下有小,根本没那么多时间去学习新技术,最重要的是,很多公司都有年龄限制…

学会这八个小技巧,让你软文推广更有效果!

软文营销已经出现在了我们的日常生活中,软文对于硬性的广告来说,具有独特的优势以及特殊性,受到了很多企业的青睐,其中还有一个重要的原因软文的花费是非常低的,适合一些中小型企业进行宣传推广,今天这篇文章就给大家讲…

vue学习笔记(五)-vuex

什么是vuex 1.概念:专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对Vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信…

此时此刻此景,“零”就代表着赢

编辑 | 阿冒 设计 | 沐由2022卡塔尔世界杯,终于步入到最强、最美和最终的华章,阿根廷与法兰西共同上演了世界杯决赛史上的一幕奇迹,意想不到的转折和蹉跎而至的结局,让人不得不感慨全球第一运动的巨大魅力。在这种世界顶级水准…

统计学习方法 | 决策树

一.一棵有理想的树 分类决策树模型是一种描述对实例进行分类的树形结构 决策树是通过一系列规则对数据进行分类的过程 步骤 ①构建根节点 ②选择最优特征,以此分割训练数据集 ③若子集被基本正确分类,构建叶结点,否则,继续选…

java实验报告之模拟银行存取款业务

一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055qq.com Time of completion:2022.12.20 Last edited: 2022.12.20 目录 一、实验目的 二、实验内容 三、总体设计(设计原理、设计方案及流程等) 四…

医院导诊图怎么做,专业便捷、低成本的室内电子地图绘制平台!

目前的医院综合性强,面积大,科室多,布局复杂,病患在就医过程中,往往因为对医院各科室与区域分布不清晰而找不到方向,多走冤枉路,耗费时间,影响就医体验。上海懒图信息科技有限公司上…

轻量级网络模型MobileNet发展脉络(V1-V2-V3)

卷积神经网络发展 卷积神经网络被广泛应用在图像分类、目标检测等视觉任务中,并取得了巨大的成功。然而,卷积神经网络通常需要较大的运算量和内存占用,在移动端以及嵌入式设备等资源受限的环境中受到限制,因此需要进行网络压缩。从…

虹科案例 | 如何快速精准监测打桩机打桩深度?

想要精准测量打桩设备每个桩的测量深度,以正确设置多排电池板的太阳能农场?但是由于测量环境恶劣,导致普通传感器无法正常工作?那快了解一下我们的虹科Dimetix激光测距传感器吧,它可以完美解决上述问题! 一…

NFC技术的特点与应用

NFC技术能给我们的生活带来极大的便利,能够用于乘车、购物、交换信息、刷门禁卡,可以说它能够应用到我们生活的方方面面。 但是,NFC到底是谁发明的?什么时候发明的?我们就来了解一下。 NFC的中文全称为近场通信技术&…

85%的攻击现在使用加密通道

©网络研究院 加密攻击仍然是全球各国面临的一个重大问题,美国、印度和日本的攻击数量在过去12个月中增长最快。 此外,与2021年相比,南非的TLS/SSL攻击显著增加。 Zscaler的安全研究和运营副总裁表示:“随着组织网络防御的成熟&#x…

22-12-19 西安 vue-cli(01) vue-cli脚手架、组件化编程、vue-router路由

"对A,我还剩一张牌啦!" "呃。。。要不起" 周六(12-03),早上刷到印度的三相神。梵天,毗湿奴,湿婆,看来很多个相关的视频介绍,结果睡觉(不…

蓝桥杯题目类型总结

搜索类 BFS 大胖子走迷宫(简单)(2019国赛) 迷宫与陷阱:(中等2018国赛) 迷宫与陷阱:(中等2018国赛) 迷宫与陷阱:(中等2018国赛&…