全面的 DevSecOps 指南:有效保护 CI/CD 管道的关键注意事项

数字化转型时代带来了对更快、更高效、更安全的软件开发流程的需求。DevSecOps:一种将安全实践集成到 DevOps 流程中的理念,旨在将安全性嵌入到开发生命周期的每个阶段 - 从代码编写到生产中的应用程序部署。DevSecOps 的结合可以带来许多好处,例如早期识别漏洞、节省成本和更快的交付时间。

左移原理

术语“左移”是指将安全检查和控制的重点转移到软件开发生命周期 (SDLC) 的开始或“左”。传统上,安全检查是在 SDLC 的末尾或“右侧”执行的,通常会导致在流程后期检测到漏洞,而应用程序已经部署在生产中,并且修复此类漏洞的成本更高且更耗时。

左移原则有很多好处:

  • 早期检测漏洞——通过在 SDLC 中更早地集成安全检查,可以更快地检测和解决漏洞。这降低了安全漏洞的风险并确保产品更安全。
  • 降低成本——在开发过程后期解决安全问题的成本可能很高。通过左移,可以及早发现并修复这些问题,从而减少相关成本和所需资源。
  • 提高合规性——通过从一开始就集成安全性,可以更轻松地确保符合行业法规和标准。
  • 提高产品质量——从一开始就考虑到安全性的产品可能具有更高的质量,并且错误和漏洞更少。
  • 更快的上市时间——通过减少后期修复安全问题所花费的时间,可以更快地将产品交付到市场。

这种集成确保测试成为开发组织 DNA 的内在组成部分,从而培育一种文化,即从项目一开始就根深蒂固地考虑质量因素精心制作软件。

图 1.将安全控制移至左侧

DevSecOps 实施的关键考虑因素

成功实施 DevSecOps 需要仔细考虑有助于安全高效的开发管道的关键因素。将 DevSecOps 集成到 CI/CD 管道中可以尽早发现安全问题,减少漏洞进入生产的可能性,同时还允许开发人员快速修复这些问题并了解如何避免将来重现这些问题。

自动化安全测试工具

由于应用程序有不同的形式(例如,移动、Web、胖客户端、容器化),因此您可能需要设置不同类型的控件,甚至需要设置不同类型的工具来保护应用程序的每个组件。让我们回顾一下您应该使用的主要测试类型。

静态应用程序安全测试

静态应用程序安全测试 (SAST) 工具无需执行程序即可分析应用程序的源代码(开发人员编写的代码)是否存在潜在漏洞。通过在开发阶段扫描代码库,SAST 为开发人员提供了有关安全缺陷和编码错误的见解。一个好的 SAST 工具可以检测代码异味以及任何可能导致 SQL 或路径注入、缓冲区溢出、XSS 和输入验证等漏洞的不良做法。

软件构成分析

软件组合分析 (SCA) 对于识别和管理与软件开发中使用的开源组件相关的安全风险至关重要,这些组件通常来自附加包(例如,用于 JavaScript 的 NPM 数据包、用于 .NET 的 NuGet、Maven、gems)。大多数开发人员在需要时加载软件包,但从不检查该软件包是否存在已知漏洞。当您的应用程序使用易受攻击的包以及修复程序已存在但您没有使用依赖项的固定版本时,SCA 工具会向您发出警告。

动态应用程序安全测试

动态应用程序安全测试 (DAST) 工具评估应用程序的运行状态,模拟现实世界的攻击来识别漏洞。通过将 DAST 纳入测试过程,DevSecOps 团队可以发现静态分析期间可能不明显的安全漏洞。DAST 工具就像一个完全自动化的渗透测试工具,将测试主要已知漏洞(OWASP) 以及许多其他不良做法,例如信息泄漏/暴露。

交互式应用程序安全测试

交互式应用程序安全测试 (IAST) 工具是 DAST 工具和 SAST 工具的组合,因为通过允许访问源代码(“灰盒”),它将帮助 DAST 更好地执行,同时也限制误报的数量。IAST 非常高效,但设置起来更具挑战性,因为它倾向于深入测试每个应用程序。

集装箱扫描仪

容器提供了敏捷性和可扩展性,但也带来了独特的安全挑战。例如,如果您的应用程序是容器化的,则必须执行额外的控制。主要是,扫描器将分析您的 Dockerfile 以检查基础映像是否包含已知漏洞,并且它们还将查找不良做法,例如以 root 身份运行、使用“最新”标签或暴露危险端口。

以下 Dockerfile 示例至少包含三个不良做法,并且可能在 Node.js 基础映像中包含漏洞:

FROM节点:最新br
工作目录 /usr/src/appbr
复制包*.json ./br
运行npm安装br
复制 。。br
曝光3000  22br
HealthCheck CMD卷发 -  fail http:// localhost:3000 || 1号出口 br
CMD [ “节点”,“app.js” ]

基础设施即代码扫描器

基础设施即代码 (IaC) 允许组织通过代码管理和配置基础设施,为基础设施层带来版本控制和自动化的优势。IaC 扫描可确保基础设施代码经过严格的安全控制,例如验证配置、遵循最佳实践、扫描安全错误配置以及在整个基础设施部署过程中强制执行安全策略。

秘密扫描仪

一个秘密(例如,API密钥,密码,数据库的连接字符串)应存储在源代码(硬编码)或存储在代码存储库中的配置文件中,因为可以访问该代码的黑客访问权限访问生产和/或其他关键环境。秘密扫描器可以检测开发人员可能留在代码中的 150 多种秘密,一旦秘密被存储在代码中(提交),它就应该被视为“泄露”并立即撤销。

选择正确的第三方产品的标准:

  • 科学技术协会支持的语言数量,最好是一种适用于所有代码的工具检测准确度用一组规则定制分析的仪表板
  • 斯卡识别的包裹数量自动修复(可以使用更新的包创建拉取请求)
  • 达斯特应该能够涵盖 API 以及 GUI 应用程序涵盖的不仅仅是 OWASP
  • IAST能够涵盖丰富的应用(例如,使用微服务)提供修复/建议来修复检测到的问题
  • 集装箱扫描仪基本图像的最新CVE数据库可以提起码头并检查最佳实践
  • IAC扫描仪查找模板文件中的问题 支持您的云提供商的格式(例如,Azure 的ARM + Bicep 、 AWS 的CloudFormation 、 Google Cloud 的Deployment Manager )或Terraform(如果您正在使用)
  • 秘密扫描仪确认的凭证类型的数量仪表板,允许安全团队监视检测到的秘密并确保已被撤销定制规则,以防止误报和/或添加新格式

在 CI/CD 管道中建立安全门

分析工具是一个良好的开始,但是如果不属于全球治理的一部分,它们是没有用的。这种治理必须建立在明确定义的安全策略和强制控制的基础上,以确保组织的数据和系统始终受到保护,免受潜在威胁和漏洞的影响。

定义和执行安全策略

CI/CD 管道中的有效安全始于定义明确且特定于项目的安全策略。这些政策应根据每个项目的独特要求和风险进行定制。无论是合规性标准、数据保护法规还是行业特定的安全措施(例如 PCI DSS、HDS、FedRamp),组织都需要定义和执行与其安全目标相符的策略。

一旦定义了安全策略,自动化将在执法中起着至关重要的作用。自动化工具可以扫描代码、基础设施配置和部署工件,以确保符合既定的安全策略。这种自动化不仅加速了安全验证过程,还减少了人为错误的可能性,确保了一致和可靠的执行。

安检门一体化

在DevSecops范式中,CI/CD管道中安全门的集成对于确保安全措施是软件开发生命周期的固有部分。如果您设置了用户可以绕过的安全扫描或控制,那么这些方法将变得完全无用 - 您希望它们成为强制性的。

安全门充当整个 CI/CD 管道的检查点,确保每个阶段都遵守预定义的安全标准。通过在代码提交、构建过程和部署阶段等关键点集成自动化安全检查,组织可以系统、及时地识别和解决安全问题。这些封闭的控件可以以不同的形式:

  • 自动安全控制(例如SAST,SCA,CREDSCAN)
  • 手动批准(例如,代码审查)
  • 手动测试(例如,由专业团队进行渗透测试)
  • 性能测试
  • 质量(例如,查询可以监视质量跟踪工具中打开的缺陷数量的查询)

图 2.具有门控安全控制的标准 DevSecOps 管道

连续监控和反馈

在快速节奏的软件开发世界中,实时监控对安全性和快速修复的重要性也不能被夸大,因为即使使用封闭式控件,也可以在生产中部署应用程序后发现漏洞。

实时监控安全性

实时监控使团队能够主动检测并响应出现的安全威胁。通过利用自动化工具和高级分析,组织可以持续监控其应用程序、基础设施和网络是否存在潜在漏洞或可疑活动。这种主动方法不仅增强了安全性,还最大限度地降低了安全漏洞和数据泄露的风险。它能够获得整个技术堆栈的全面可见性。DevSecOps 团队可以跟踪和分析从应用程序代码到生产环境的每一层的安全指标。这种可见性可以快速识别安全漏洞,并有助于实施有针对性的补救措施,确保对不断变化的网络威胁进行强有力的防御。

解决安全发现和调整过程

识别安全问题只是第一步;有效的 DevSecOps 需要采取积极主动的方法来及时解决和修复这些问题。当发现安全问题时,跨职能团队将共同评估影响、确定修复任务的优先级并实施纠正措施。这种协作努力确保安全是每个人的责任,而不仅仅局限于组织内的特定部门。适应性是 DevSecOps 的核心原则。组织必须培养持续学习的文化,安全团队根据不断变化的威胁和行业最佳实践定期更新其知识、流程和工具。这种适应性思维可确保安全措施在面对新挑战时保持有效,并不断完善 DevSecOps 管道以获得最佳安全结果。

结论

随着软件开发流程的不断发展,CI/CD 管道中强大的安全措施的需求变得更加重要。采用 DevSecOps 方法可以帮助组织创建安全、高效且可靠的 CI/CD 管道。通过从一开始就优先考虑安全并实施安全门,组织可以节省资源、降低风险,并最终向市场提供更好、更安全的产品。

让安全成为您产品的基础!

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

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

相关文章

交叉编译x264 zlib ffmpeg以及OpenCV等 以及解决交叉编译OpenCV时ffmpeg始终为NO的问题

文章目录 环境编译流程nasm编译x264编译zlib编译libJPEG编译libPNG编译libtiff编译 FFmpeg编译OpenCV编译问题1解决方案 问题2解决方案 总结 环境 系统:Ubutu 18.04交叉编译链:gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu 我的路径/opt/toolch…

Java零基础入门-Comparable vs Comparator(上)

哈喽,各位小伙伴们好,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流学习,互相学习,才能成长的更快,对吧。 我是一名java开发,所以日常接触到最多…

System是什么?为什么不能直接输出null?

在看学习下面的知识前,得先对java核心类库有个大致的了解,详情可参考链接 java基本概念-扩展点-CSDN博客 1、System 1.1 System是什么? System是一个类,它包含了一些有用的属性和方法。 1.2 System实现的功能 (1&…

【深度学习】换脸新科技,InstantID: Zero-shot Identity-Preserving Generation in Seconds

论文:https://arxiv.org/abs/2401.07519 代码:https://github.com/InstantID/InstantID demo:https://huggingface.co/spaces/InstantX/InstantID 文章目录 1 引言2 相关工作2.1 文本到图像扩散模型2.2 主题驱动的图像生成2.3 保持ID的图像生成 3 方法3.…

zabbix5监控tomcat

zabbix tomcat客户端配置 1、配置tomcat catalina.sh文件 CATALINA_OPTS"$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port12345 -Dcom.sun.management.jmxremote.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse -Djav…

smart-doc 社区 Committer 晋升公告

我们非常荣幸地宣布,经过 PMC 委员会的提名和讨论,社区成员李星志(GitHub ID: netdied)、陈琪(GitHub ID: chenqi146)和李兵(GitHub ID: abing22333)正式晋升为同程旅行 smart-doc 开…

Vue3全家桶 - Vue3 - 【3】模板语法(指令+修饰符 + v-model语法糖)

一、模板语法 主要还是记录一些指令的使用和vue2的区别;vue3指令导航; 1.1 v-text 和 v-html 指令的区别: v-text: 更新元素的文本内容;v-text 通过设置元素的 textContent 属性来工作,因此它将覆盖元素…

数据结构:静态链表(编程技巧)

链表的元素用数组存储, 用数组的下标模拟指针。 一、理解 如果有些程序设计语言没有指针类型,如何实现链表? 在使用指针类型实现链表时,我们很容易就可以直接在内存中新建一块地址用于创建下一个结点,在逻辑上&#x…

3、设计模式之工厂模式

工厂模式是什么?     工厂模式是一种创建者模式,用于封装和管理对象的创建,屏蔽了大量的创建细节,根据抽象程度不同,主要分为简单工厂模式、工厂方法模式以及抽象工厂模式。 简单工厂模式 看一个具体的需求 看一个…

面向对象(精髓)变继承关系为组和关系(_Decorator模式)

在软件开发中,设计模式是解决常见问题的可重用解决方案。在面向对象编程中,继承和组合是两种常用的代码复用方式。然而,随着软件需求的不断变化,我们需要更灵活的设计方式来应对不断变化的需求。在本文中,我们将讨论从…

计算机网络——TCP/IP网络层次模型

计算机网络——TCP/IP网络层次模型 TCP/IP网络模型的起源TCP/IP网络层次的结构TCP/IP如何交互 TCP/IP协议栈TCP/IP协议栈主要协议 TCP/IP 和 OSI之间的区别面向连接和无连接面向连接三次握手,四次挥手 无连接 我们上一次了解了OSI的网络层次模型,如果还没…

Linux学习-内存管理

目录 内存管理 malloc free 使用 字符串存储申请堆区 自主输入个数,然后通过malloc在程序中申请空间,不用必须提前指定大小 内存溢出 内存泄漏 内存碎片 内存管理 函数名就是指向该函数的函数指针。 堆区是自低向高,栈区是自高向低…

ffmpeg日记4001-原理介绍-视频切割原理

原理 打开输入---->打开输出---->根据输入来创建流---->拷贝流设置---->循环读帧---->判断时间点是否到达切割点,并做设置---->设置pts和dts---->写入---->善后 重点是pts和dts如何设置。参考《ffmpeg学习日记25-pts,dts概念的…

ftp速度太慢只有几十k,怎么解决?

FTP是目前许多企业日常运营中还在用的文件传输方式。虽然比较普遍,然而,许多用户在使用FTP时经常遇到速度缓慢的问题,有时甚至只有几十KB/s。这不仅影响工作效率,还可能导致许多数据传输的延迟的问题。本文将探讨FTP速度慢的原因&…

计算机服务器中了faust勒索病毒怎么解密,faust勒索病毒解密工具流程

在互联网飞速发展的今天,越来越多的企业走向了数字化办公模式,许多企业开始利用网络计算机开展各项工作业务,网络也为企业的生产效率提供了极大便利,但网络中存在许多恶意威胁。近日,云天数据恢复中心接到许多企业的求…

Java 学习和实践笔记(34):对象的转型(casting)

对象的转型(casting)有两种,一种是向上转型,一种是向下转型。 向上转型:父类引用指向子类对象。这属于自动类型转换,编译器会自动完成。 上一节的多态中,形参为父类Animal, 但是调用时实参为子类对象Dog&…

linux中查看并修改日期

1.如何在终端控制行界面显示并且调整日期: 显示当前日期: 2.显示当前年份: 3.显示当前月份: 4.显示当前天数: 5.显示到目前为止的天数: 6.显示日期: date “%x“ ≈ date ”%Y %m %d"…

09-设计模式 面试题

你之前项目中用过设计模式吗? 工厂方法模式分类 简单工厂模式工厂方法模式抽象工厂模式工厂模式 需求:设计一个咖啡店点餐系统。 设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore)…

一、什么是 HarmonyOS ?

HarmonyOS 是华为开发的一款面向未来的全场景分布式智慧操作系统,将逐步覆盖 18N 全场景终端设备。 对消费者而言,HarmonyOS 用一个“统一的软件系统”,从根本上解决消费者面对大量智能终端体验割裂的问题,为消费者带来统一、便利…

Kafka Stream入门

1. 什么是流式计算 流式计算(Stream Processing)是一种计算模型,旨在处理连续的数据流。与传统的批处理模型不同,流式计算可以实时或接近实时地处理和分析数据,这意味着数据在生成后不久就被处理,而不是存…