将DAST集成到CI/CD管道中的优势和实施步骤

news2024/11/30 13:37:52

在当今快速发展的网络环境中,维护Web应用程序的安全更加必要。由于漏洞的出现速度比以往任何时候都要快,将动态应用程序安全测试(DAST)集成到持续集成/持续部署(CI/CD)管道中成为改变游戏规则的因素,帮助您在早期阶段即考虑安全因素,尽早发现和解决安全漏洞,而不是等到它们严重影响用户后再采取措施。

本文解释了将 DAST集成到 CI/CD管道中的重要性和好处,探索了这种方法如何能够显著提升应用程序的安全性、降低成本并加快上市时间。

我们还将指导您选择正确的 DAST工具和策略的过程,以嵌入到您的管道中,并提供一个集成到 Jenkins的实用教程。

1、什么是 DAST?

动态应用程序安全测试(DAST)是一种安全测试方法,它在运行时分析应用程序以识别潜在的漏洞和安全风险。这与静态应用程序安全测试(SAST)不同,后者仅仅检查应用程序的源代码而不去执行它。

DAST的主要目标是从攻击者的角度模拟对 Web应用程序和 API的攻击。这种方法帮助 DAST发现诸如 SQL注入、 XSS和不安全的文件上传等漏洞(要了解更多有关这些漏洞的信息,请参阅相关的 OWASP备忘录)。在开发过程的早期识别这些威胁,可以使组织在它们发展成为严重的问题之前修复它们。

2、DAST集成到CI/CD管道中的优势

将 DAST集成到您的 CI/CD管道中有很多好处,如提高安全性、节约成本、加快市场推广速度等。

(1)增强的安全态势

DAST工具旨在通过模拟真实世界的攻击来识别 Web应用程序中的漏洞。通过将这些工具集成到您的 CI/CD管道中,您可以确保每个组件在投入生产之前能够自动测试潜在的安全性问题。这种积极主动的方法有助于及早发现潜在的漏洞,允许在对应用程序或组织构成威胁之前解决这些漏洞。

(2)提前投放市场

与手工测试和部署之后在进行测试相比,在开发过程中使用 DAST可以使开发人员更快地找到和修复安全漏洞。通过将自动扫描作为 CI/CD过程的一部分,开发人员可以立即获取其代码更改对应用程序安全性影响的反馈。这样,他们就可以快速地解决任何被识别出的问题,而不会推迟发布计划,也不会降低质量。

(3)影响市场发布的 DAST其他方面包括:

提高协作能力:自动 DAST扫描提供有关检测到的漏洞及修复建议的详细报告。这些见解可以促进开发团队和安全专家之间更好地沟通,避免可能造成软件交付延迟的误解。

更少的错误标记(false positive):一些高级的 DAST解决方案使用机器学习算法来最小化扫描的错误标记结果。这可以确保开发人员花费时间来解决真正的安全问题,而不是寻找错误警报。

(4)更少的成本

将 DAST集成到 CI/CD管道中,可以为您的组织节省大量成本。通过在开发过程的早期识别和修复漏洞,可以减少代价高昂的数据损毁可能性。此外,自动化安全测试降低了与传统安全测试方法相关的人工成本。

DAST降低成本的其他措施包括:

降低修复费用:在开发期间修补漏洞的费用远远低于在开发之后修补的费用。通过自动 DAST扫描,及早发现问题,可以让企业避免花费昂贵的后期补丁,并避免可能出现的停机情况。

减少监管罚金:在整个开发流程中保证应用程序的安全有助于组织遵循诸如 GDPR, HIPAA和PCI-DSS等行业法规。违规可能会导致巨额罚款和名誉受损;在 CI/CD管道上集成 DAST可以通过不断地监控潜在的违规行为来降低这些风险。

3、将 DAST集成到 CI/CD管道的策略

(1)选择正确的工具

寻找能提供与CI/CD管道整合的工具。选择一个 DAST工具,它要符合应用程序栈、技术选择以及开发方式。确保它既支持在用的Web应用程序框架,也支持像容器、API以及微服务这样的现代范式。

(2)尽早将 DAST合并到开发过程中

为了最大限度地利用 DAST集成的好处,可以在开发过程的早期就开始合并它,例如在代码审查或开发新功能的时候。通过尽早开始,开发人员可以立即解决安全漏洞,而不是将修复推迟到测试的后期。

(3)建立基线扫描

基线扫描是使用一组预定义的规则或策略对应用程序的安全性进行的初步评估。使用所选的 DAST工具创建基线扫描,设置一个起始点,用于测量随时间变化的改进效果。基于对应用程序代码库或者基础设施配置的变更,定期更新这个基线扫描。

(4)安排定期扫描

可以安排定期扫描,也可以安排在 CI/CD管道的关键阶段扫描。这些扫描中发现的任何问题都应该反馈到开发和测试阶段,允许开发人员和测试人员立即加以解决:

  • 每日扫描:将每日扫描安排在非高峰时间,以避免可能对终端用户的体验造成的干扰。
  • 每周扫描:每周执行更全面的扫描,以发现在每日扫描期间可能出现的遗漏。
  • 按需扫描:应用程序发生重大更改时触发按需扫描,例如部署新功能或更新关键组件。

(5)分析结果并确定优先处理顺序

DAST工具通常会生成大量数据。必须根据这些结果的严重性、可利用性和潜在影响,对其进行分析和排序。使用风险评分系统,如 CVSS (常见的漏洞评分系统),根据其威胁等级对已识别的漏洞进行排名。这样可以帮助团队集中精力在首先解决优先级高的问题上。

(5)创建反馈循环

在开发人员和安全团队之间建立反馈循环,以持续改进代码质量和安全状态。通过显示 DAST结果的共享仪表板或将警报集成到 Slack或 Microsoft Team等通信平台上来鼓励协作。

为了快速修复已识别的漏洞,需要确保DAST工具为开发人员提供操作指南,并为他们提供解决每个问题的明确步骤。这样他们自己就能够有效地解决问题,而不需要额外的安全专家。

4、教程:将 DAST集成到 Jenkins

本教程将指导您完成将动态应用程序安全测试(DAST)集成到 Jenkins(一款开源的CI/CD工具)CI/CD管道中的步骤。这样您就可以在构建和部署阶段自动扫描应用程序的安全漏洞。

步骤1:安装并配置 DAST工具

首先,选择一个适合您需求的 DAST工具。在本教程中,我们将使用OWASP Zed Attack Proxy,一个开放源码的 Web应用程序扫描器。从官方网站下载并安装 ZAP。

步骤2:建立Jenkins环境

如果您还没有建立 Jenkins环境,请参考官方的 Jenkins安装指南。成功设置 Jenkins后,登录到您的账户,进入“Manage Jenkins”下的“Manage Plugins”。在可用插件列表中搜索“OWASP ZAP”并安装它。

步骤3:在 Jenkins中创建新的管道项目

  1. 转到 Jenkins实例的主仪表板。
  2. 从左侧菜单中选择“New Item”创建新的管道作业。
  3. 给你的新项目起一个合适的名字(例如'DAST_Pipeline'),并选择' Pipeline'作为类型,然后单击' OK'。
  4. 在新创建的项目页的管道配置部分,向下滚动以查找“定义”。从 SCM或“Pipeline script”中选择“Pipeline script”并提供您的管道代码。此代码将包括运行 ZAP所需的步骤。

步骤4:为 DAST集成配置管道脚本

在这一步中,需要修改Jenkins文件或管道脚本,将 ZAP集成到组件过程中。下面是一个简单的 Jenkins文件示例,其中包括运行 ZAP:

将" http://your-web-application-url"替换为指向 Web应用程序的链接,将"YOUR_ZAP_API_KEY"替换为从 OWASP Zed Attack Proxy (ZAP)获得的 API密钥。

步骤5:在Jenkins中运行管道项目

配置完所有参数后,保存更改并单击“立即构建”启动新组件。您应该看到两个阶段运行中—一个用于构建应用程序,另一个用于使用 OWASP Zed Attack Proxy (ZAP)运行 DAST。

完成后,在左侧菜单的“生成历史记录”下转到“控制台输出”。检查在扫描期间是否检测到任何安全漏洞。

5、结论

将 DAST工具集成到 DevOps流程中,对于维护安全和确保在开发周期的早期阶段发现漏洞至关重要。通过实施DAST,您可以在潜在威胁升级为重大安全问题之前识别它们,最终节省时间和资源。

通过将 DAST工具集成到您的 CI/CD管道中,您可以在开发过程的早期检测漏洞,节省时间和资源,并防止以后出现重大问题。它确保应用程序在部署到生产环境之前是安全的。最后,它将帮助您遵守安全法规和标准。

在实施DAST工具时,需要考虑几个因素。首先,选择与您的开发环境和编程语言兼容的DAST工具。其次,确保该工具可以集成到您的管道中,而不会造成延迟或中断。最后,建立清晰的流程来分析和处理DAST识别出的漏洞,以确保被发现的问题能够被组织中的开发人员和测试人员及时修正。

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

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

相关文章

uni-app:单位像素rpx

rpx:响应式单位,长宽可以随着屏幕大小改变,其尺寸根据iPhone 6的标准来参考(750rpx为占满屏幕宽,1334rpx为占满屏幕长。7501334rpx) 例子: 现在展示型号为iPhone 12 pro的型号,这里750px和750…

利用大模型进行法律判决预测

概述 本文研究背景是法律专业人员常用的演绎推理方法,即法律演绎,用于案例分析。 过去的方法主要是通过学习、微调或示例来教授大型语言模型(LLM)进行法律判决预测。这些方法存在的问题是学习样本有限,解释性差。因此…

02 - 如何制定性能调优策略?

1、性能测试攻略 性能测试是提前发现性能瓶颈,保障系统性能稳定的必要措施。下面我先给你介绍两种常用的测试方法,帮助你从点到面地测试系统性能。 1.1、微基准性能测试 微基准性能测试可以精准定位到某个模块或者某个方法的性能问题,特别…

数仓-零基础小白到入土-学习路线

数仓-零基础小白到入土-学习路线 铺垫一下下讲在前面涉及基础技术栈:中级:全部掌握之后👆:去刷面试题: 初级中级高级博主独家面试题:数仓名词:催更我戳戳个人主页:[up自己的网站](ht…

Kafka - 分区中各种偏移量的说明

文章目录 引子名词解释分区中各种偏移量的说明 引子 名词解释 Kafka是一个高性能、高吞吐量的分布式消息系统,被广泛应用于大数据领域。在Kafka中,分区是一个重要的概念,它可以将数据分发到不同的节点上,以实现负载均衡和高可用性…

【PHP面试题73】TCP和UDP的特点和区别是什么?

文章目录 一、前言二、TCP(Transmission Control Protocol)三、UDP(User Datagram Protocol)四、TCP和UDP的区别五、总结 一、前言 本文已收录于PHP全栈系列专栏:PHP面试专区。 计划将全覆盖PHP开发领域所有的面试题&a…

Go速成-常量

1.常量的定义 Go语言常量,定义的值是不能进修修改的,定义常量就是const,常量定义建议全部大写 const PI float32 3.1415946 //显式定义 const (x int 16ys "abc"z)fmt.Print(x,y,s,z) 在定义常量的时候如果没有声明值&#xff…

微信小程序的目录解析--【浅入深出系列001外篇】

浅入深出系列总目录在000集 如何0元学微信小程序–【浅入深出系列000】 文章目录 本系列校训学习资源的选择先说总目录经常碰到的文件(目录)最最常见的目录pages次最常用的就是images 目录 操作起来真正的操作 配套资源 本系列校训 用免费公开视频,卷…

关于Qt编译android时候一个问题

问题提示为 FAILURE: Build failed with an exception.* What went wrong: A problem occurred configuring root project android-build. > Could not resolve all artifacts for configuration :classpath.> Could not resolve com.android.tools.build:gradle:3.2.0.…

3天学会Ascend C编程 | Day1 Ascend C基本概念及常用接口

本文分享自《【2023 CANN训练营第一季】——Ascend C算子开发入门——第一次课》,作者:weixin_54022960 。 Ascend C是华为昇腾面向算子开发场景的编程语言,使用C/C作为前端语言的算子开发工具,通过四层接口抽象、并行编程范式、…

【笔记】SpringBoot 2.7.x Feign超时时间配置问题

【笔记】SpringBoot 2.7.x Feign超时时间配置问题 前言使用的技术Feign超时配置处理过程 前言 从 SpringBoot 2.3升级至SpringBoot 2.7.x后,Feign的配置也发生了变化。本文主要记录Feign调用超时时间配置问题。 在解决问题前,也查阅过相关资料&#xff0…

iOS APP外包开发的语言比较

iOS APP是Apple公司运行在iPhone手机上的APP,开发这样的APP有两种开发语言可以选择,都是由Apple公司提供的语言。其中Objective-C使用时间相对较长,有历史兼容考虑,而Swift是新的开发语言,更符合近些年开发语言的发展理…

怎么在Windows WSL上利用GPU运行tensorflow 2.12

背景 1. 在window上安装WSL 2. 再WSL上安装miniconda。 3. 创建conda环境 4. 设置GPU 5. 安装tensorflow 2.12 6. 在Pycharm里运行你的GPU Tensorflow 2.12代码 背景 从tensorflow 2.10开始,已经没有tensorflow-gpu相应的版本在Window GPU运行了&#xff0c…

LCD—STM32液晶显示(1.显示器简介及LCD显示原理)(6000字详细介绍)

目录 显示器简介 液晶显示器 液晶 像素 液晶屏缺点 LED显示器 OLED显示器 显示器的基本参数 STM32板载液晶控制原理(不带微控制器) 液晶控制原理 控制信号线(不带液晶控制器) 液晶数据传输时序 显存 总结 3.2寸液晶屏介绍(搭载…

在线乞讨系统 Docker一键部署

begger乞讨网 在线乞讨 全球要饭系统前端界面后端界面H2 数据库 console运行命令访问信息支付平台 在线乞讨 全球要饭系统 在线乞讨全球要饭项目,支持docker一键部署,支持企业微信通知,支持文案编辑 前端界面 后端界面 H2 数据库 console 运行命令 项…

【STM32】使用HAL库对ULN2003控制28BYJ-48步进电机

步进电机是将电脉冲信号转变为角位移或线位移,通过控制施加在电机线圈上的电脉冲顺序、频率和数量,可以控制步进电机的转向、速度和旋转角度。 配合以直线运动执行机构(螺纹丝杆)或齿轮箱装置,更可以实现更加复杂、精密的线性运动控制要求。…

(Linux)查看jar包内容

查看jar包内容cp /opt/services/找到jar路径cp project.jar project2.jar复制jar,防止操作失误unzip -xvf project2.jar查看内容unzip -xvf project2.jar | grep jackson搜索相应内容rm -rf project2.jar删除副本 压缩jar包参考jar -cvf project.jar a.class b.clas…

3.10 Bootstrap 标签

文章目录 Bootstrap 标签标签 Bootstrap 标签 下面将讲解 Bootstrap 标签。标签可用于计数、提示或页面上其他的标记显示。使用 class .label 来显示标签&#xff0c;如下面的实例所示&#xff1a; <span class"label label-default">Label</span></…

期刊佳文 | 长江流域水系统生态服务价值评价方法

原文信息 题目&#xff1a;长江流域水系统生态服务价值评价方法 作者&#xff1a;郑阳 于福亮 桑学锋 张思琦 李子恒 期刊&#xff1a;《中国水利水电科学研究院学报&#xff08;中英文&#xff09;》23年3期 摘要 为完善人类活动影响下的生态系统评价体系、实现对生态关键…

【深度学习】了解残差网 ResNet 和 ResNeXt 的架构

一、说明 了解和实现 ResNet 和 ResNeXt 的架构以实现最先进的图像分类&#xff1a;从Microsoft到 Facebook [第 1 部分]&#xff0c;在这篇由两部分组成的博客文章中&#xff0c;我们将探讨残差网络。更具体地说&#xff0c;我们将讨论Microsoft研究和Facebook AI研究发布的三…