所有文章 > 技术杂货铺 > 左移安全:终极指南
左移安全:终极指南

左移安全:终极指南

在信息安全领域,“左移”一词近年来越来越流行。 

在本指南中,我们将仔细研究什么是“左移安全”,以及为什么它对各种规模的企业来说都是如此重要的战略。我们还将提供有关如何在您自己的组织中开始实施“左移安全”的提示。

那么让我们开始吧!

执行摘要

第 1 章左移测试与传统测试我们将介绍传统测试方法和敏捷测试方法之间的区别。
第 2 章Shift Left 如何影响安全性我们将介绍敏捷实践如何影响 DevOps。
第三章如何最大限度地发挥左移策略的作用我们将介绍应用左移策略可采取的步骤。
第四章如何实现左移我们将介绍实施左移测试所需采取的必要步骤。
第五章左移最佳实践我们将介绍一些保持管道正常运行所需的最佳实践。

第 1 章:左移测试与传统测试

随着修复通过传统测试模型发现的错误所花费的成本和时间的增加,将测试转移到软件开发生命周期 (SDLC) 的早期阶段的想法越来越流行。事实上,87%的公司采用这种敏捷方法进行软件测试。

左移测试的目标是通过对软件开发计划进行早期和频繁的测试来减少在项目代码中发现的错误数量。  

在本章中,我们将介绍传统和敏捷测试方法之间的差异。 

传统测试、左移测试和右移测试:有什么区别?

测试是产品开发过程中必不可少的一部分,因为它有助于确保您开发的产品在完成后能够真正发挥作用。 

可视化生产的最佳方式之一是想象一条传送带穿过工厂。随着流程的推进,不同的组件被添加,最终形成成品。

但测试的最佳点在哪里呢?这个问题一直是专家们热议的话题。 

一些人认为,在应用程序编程接口API)和图形用户界面(GUI)完成时需要进行测试,而其他人则认为在部署之前有些地方值得进行测试。

他们通常分为两大阵营:传统测试和敏捷测试或转变测试(新的多数派发现自己属于这一类)。

传统测试

这种测试方法通常发生在最后阶段之前(如果你愿意的话,是传送带的右侧而不是左侧),这是有道理的,因为有更多的产品需要检查错误。

话虽如此,在产品投入生产之前使用传统的手动测试方法来验证产品的安全性和功能性仍存在困难。 

由于此测试发生在开发周期的后期,发现错误或可用性问题通常会导致发布延迟,直到这些问题得到解决,从而造成瓶颈。

这导致许多实施传统测试的公司开始进行不定期发布,因此这些问题不再阻碍进展。

此外,随着项目接近尾声,修复这些错误和缺陷的成本也会大幅上升。仅凭这一点就可能导致成本和预算严重超支,从而推迟甚至破坏整个项目。

来源:www.stickyminds.com

优点: 

  • 识别最大缺陷数量由于其增量过程。
  • 确保产品质量由于在产品上线之前问题已经得到解决。

缺点

  • 阻碍上市时间这是因为即使只是修复简单的缺陷也需要进行大量修改。
  • 增加成本完成决议所需的大量文件和时间。
  • 意外错误如果要求被修改或者沟通不畅,可能会发生这种情况。

右移测试

与传统测试不同,这种形式的敏捷测试从生产后开始测试,或者一直到传送带的“右侧”。

使用右移方法,您将测试完整且正常运行的应用程序,以确保性能和可用性。目标用户提供有关其体验的反馈,以进一步改进软件。

利用右移测试的常见测试技术包括:

  • A/B 测试
  • 金丝雀部署
  • 混沌测试
  • 故障注入测试

虽然这种敏捷方法允许您与用户合作以改进您的产品,但这种测试仅在后期生产环境中有效。它需要辅以左移测试才能为您提供全面的结果。

优点: 

  • 通过来自用户的持续反馈循环来增强客户体验。
  • 发现关键问题通过查找实时环境中出现的错误并让开发人员根据需要修改功能。

缺点

  • 范围有限,因为它只能测试完全开发的环境。
  • 不可预见的成本在复杂的环境中尝试实施变革可能会产生风险。

左移测试

为了防止错误变成代价高昂的大问题,左移测试实际上是通过尽可能在开发过程的早期识别和解决问题,将测试推向“左边”。 

值得注意的是,左移并不意味着将测试转移到更早的阶段并忽略再次测试。

相反,左移测试鼓励开发人员和测试人员尽早开始测试并不断检查错误,而不是只关注开发的一个阶段。

对于 API 来说,关键是能够尽早测试功能应用程序,以便您可以试用所有功能并查看是否存在任何逻辑缺陷、漏洞或安全漏洞

例如,为了解决应用程序中的BOLA/IDOR 缺陷,您需要运行测试来验证用户 A 不能查看/修改/删除属于用户 B 的转账。

USPS数据泄露事件就是该漏洞的一个完美例子——用户能够进行身份验证,然后查找系统中的任何其他用户,包括他们的电子邮件地址、电话号码、街道地址和其他 PII。

这里左移测试的主要好处是,如果应用程序中存在缺陷,您可以在投入生产之前发现它,而恶意的人可能会首先发现它。

这种方法不仅仅需要改变流程,还需要转变参与者的思维方式,以便他们在每个阶段都能持续提供反馈。

左移测试是一种很好的方法,可以防患于未然,而不是事后才做出反应。开发人员在将代码推送到版本控制之前进行的测试越多越好。

优点:  

  • 由于在产品发布之前问题就已得到处理和解决,因此提高了交付速度。
  • 降低成本因为它能更早地发现错误,而错误修复起来通常更便宜。
  • 提高质量因为设计和功能的改变是在整个过程中进行的,而不是试图修复成品。

缺点

  • 需要文化变革以确保流程正确实施。 
  • 需要破除神话一些团队成员可能对这一过程有所了解;例如,QA 团队和开发人员在测试期间紧密合作,而 QA 团队则会变得过时。

为什么左移对 DevOps 有益?

DevOps 的核心在于速度、敏捷性和效率。为了实现这些目标,组织需要向左转。这意味着要摆脱传统的“瀑布式”方法,转向更敏捷的方法。

左移策略确保在开发生命周期中尽早考虑安全性。

左移有很多好处。以下是影响最大的好处:

提高质量

左移的主要好处是它减少了最终产品的缺陷数量,提高了整体质量。实施左移方法的公司质量提高了45% 。

通过在开发过程的早期(在产品发布之前)识别和解决问题,这些缺陷进入成品的可能性就会降低。

增强沟通

此外,左移鼓励团队成员之间的协作和沟通。使用敏捷方法的企业通常会看到团队生产力提高60%,可见性提高 70%。

通过尽早让测试人员参与,开发人员可以获得有关其代码的反馈并做出相应的更改,从而实现更积极、更高效的整体开发过程。

加快上市时间

左移还有助于缩短开发时间。实施左移等敏捷实践的企业的交付时间缩短了64%。

如果及早发现缺陷,在它们演变成更大的问题之前,就更容易解决,这使得开发团队能够专注于新功能和改进,而不是修复错误。

降低成本

左移可降低与开发相关的成本。在开发过程中越早发现漏洞,修复成本就越低。 

来源:波耐蒙研究所

及早发现并解决缺陷就无需重新编写代码,从而为开发组织节省大量成本。

第 2 章:左移如何影响安全性

现在您对左移有了更好的了解,让我们来探索一下它如何影响 DevOps。

GitHub估计开发人员的数量是安全专业人员数量的 500 倍,这意味着组织需要将左移安全措施整合到其开发中才能保持竞争力。

传统测试的使用通常与 DevOps 不符,DevOps 强调将功能和更新从一个生产阶段传递到下一个生产阶段,而不会出现不必要的延迟。

他们是如何解决这个问题的?通过将左移等敏捷方法应用到 DevOps 实践中。

左移意味着将测试和安全活动整合到从设计到生产的每个相关开发阶段。

这一转变的目标很简单: 

  • 从始至终将安全最佳实践融入到您的流程中
  • 尽早在生命周期中检测潜在问题
  • 快速解决问题,避免后期昂贵的错误校准
  • 保持任何公司或组织都能承受的价格点

为了有效而高效地做到这一点,开发人员必须了解每个阶段需要什么,以避免在防御恶意行为者可能利用的漏洞方面出现漏洞。

将 CI/CD 集成到 SDLC

CI/CD 的采用改变了 SDLC,因为它可以自动化和监控开发过程的每一步,从代码集成到实时生产环境。

除了将团队重组为 DevSecOps 团队之外,公司还必须将安全测试尽早纳入其部署流程,因为 CI 对于软件开发仍然至关重要。

Shift Left Security 的优势

左移测试是一种在缺陷造成巨大损失之前识别和修复缺陷的有效方法,这意味着您的团队可以在开发周期中取得更快的进展。 

其他好处包括: 

  • 提高代码质量和安全态势
  • 利用云技术轻松管理风险
  • 创建具有安全意识的文化
  • 持续评估

推动安全左移的技术

为了确保组织保持高水平的安全性,OWASP建议 DevSecOps 使用各种工具。以下是五种常用的工具:

工作原理:DevSecOps 方法:
SAST(静态分析)在此过程中,通过访问静态源代码进行结构测试,并生成有关任何潜在问题和解决方案的报告。将这些测试集成到您的开发人员的开发环境中,以便立即获得有关可能出现的问题的警告。
DAST(动态分析)该技术通过由外而内的方法渗透到应用程序的前端,并像攻击者一样发现安全漏洞。在整个公司网络基础设施中推出应用程序之前,请在测试和登台环境中使用它来验证应用程序的安全性。
交互式应用安全测试 (IAST)使用预定义的测试用例,混合 IAST 工具可以识别相关的代码行并在正在运行的应用程序中提供上下文补救建议。通过在 SDLC 和 CI/CD 工作流程的早期阶段集成此工具来降低安全漏洞的风险。
软件组成分析(SCA)该技术用于识别系统组件,如开源和第三方库,并告知您这些文件中存在的潜在漏洞。将 SCA 与 SAST 配对以查找扫描无法检测到的漏洞。
云安全态势管理 (CSPM)使用此方法自动评估您的多云基础设施中可能存在的漏洞。在整个开发过程中,根据环境对漏洞进行优先排序,实施此过程。

第 3 章:如何最大程度发挥左移策略的作用 

在上一章中,我们概述了左移策略如何帮助您的组织实现可持续软件开发。在本章中,我们将探讨优化左移方法以最大程度发挥其优势的方法。 

应用左移测试的最佳方法是跨团队进行小规模的迭代更改。以下是一些可以开始实施的更改:

1. 了解测试整个流程与按时测试流程之间的区别

作为第一步,您需要帮助您的团队了解左移测试的好处,通过确定如何在整个 SDLC 中应用这种方法,而不仅仅是作为一个时间过程。

降低风险的最佳方法是在各个阶段进行测试,并在整个过程中继续努力。请记住,左移测试并不意味着将测试移至较早的阶段并忽略稍后的测试。

这将导致流程效率低下,遗漏一些缺陷或漏洞,如果经过更彻底的测试,这些缺陷或漏洞是可以得到补救的。

您需要关注:

  • 早期测试如何降低风险?
  • 提供可操作信息的最早阶段是什么?
  • 如果我们现在不进行测试,会有什么风险?

2. 避免左移测试期间的浪费

虽然在流程早期进行测试是左移测试的主要目标,但早期测试和实际测试之间存在着一条细微的界限。

这意味着您不想将测试移得太“左”,以至于在它提供可操作的信息之前它就会发生。

为了避免产生左移测试浪费,您需要评估:

  • 目前您正在做什么?
  • 你为什么现在要这么做?
  • 您能在流程早期测试零件吗?
  • 如果您早点测试,浪费的风险会有多大?
  • 哪些测试点能让你传递最多的信息?

3. 鼓励开发人员和测试人员的协作

在左移方法中,开发人员和测试人员应该一起工作。

当开发人员测试单个单元时,他们能够在合并到主系统之前获得更高质量级别的代码。  

此外,QA 应该了解一些基本的编码,以帮助他们提高效率。编码技能使测试人员能够尽可能快速修复问题,这将使他们在修复错误时的工作更加轻松。

为了鼓励最大程度的协作,您需要确保他们能够使用相同的测试实践,例如测试驱动开发 (TDD) 或行为驱动开发 (BDD)。这可以鼓励每个人保持一致。

4. 部署自动化 API 测试解决方案

API 占互联网总流量的83%,Gartner甚至报告称,API 很有可能在 2022 年成为主要的攻击媒介。

由于 API 是许多数字化工作的支柱,因此您需要确保它们的安全。 

如果没有自动化测试解决方案,左移测试相对无效,因为您将在此过程中累积大量开发成本。

缓解这种情况的一种方法是使用可以减少或消除对额外开发资源的需求的工具。

第 4 章:如何实现左移安全

在本章中,我们将了解如何在组织中实际开始实施左移安全。 

左移安全性可以通过多种方式实现,但这是最重要的五个步骤。

1. 建立并定义左移安全策略

确定左移对团队意味着什么,以帮助他们了解如何取得成功至关重要。为此,您需要:

定义共同目标

DevSecOps 的目标是促进参与开发过程的所有利益相关者之间的协作与协调。 

为此,各团队需要齐心协力,明确制定左移安全策略的目标和目的。这应包括:

  • 谁对哪些流程拥有所有权或责任?
  • 将使用什么指标来衡量成功?
  • 您的应用程序和 API 的哪些部分涉及敏感数据?
  • 您愿意为测试过程分配多少资源?
  • 您的里程碑将会是什么样的?

改变文化

实现以安全为中心的开发环境,在开发生命周期的每个阶段都会考虑安全性 — — 无论是在项目规划、开发代码还是进行测试期间选择包。

您很可能需要做一些左移神话破除,以促进平稳过渡。最常见的误解是左移意味着将测试移至较早的阶段,然后忽略稍后的测试。 

建立一套 API 的安全要求

由于 API 是系统的窗口,因此应用程序的安全性取决于您为其制定的安全策略。将 API 的安全要求纳入您的左移安全策略将增强您的安全态势。

在建立一组 API 安全要求时需要考虑一些因素,例如:

  • API 访问的数据类型
  • API 的使用环境
  • 将使用 API 的用户群

例如,如果 API 正在由许多用户在公共环境中访问敏感数据,那么就需要更高级别的安全性。 

在确定 API 的安全要求时,咨询该领域的专家至关重要。他们将能够帮助确定需要采取哪些安全措施来保护 API 访问的数据。他们还将帮助确定需要什么级别的安全性。

2. 了解软件的创建地点

了解软件开发流程是确保其安全的重要第一步。根据业务部门的复杂程度,这一步的难度会更大。

在开始将安全性左移之前,请确定谁负责开发代码,以及该人员或团队如何从创建新功能到部署再到生产。 

这可以帮助您确定在整个过程中将使用哪种技术,从而避免出现差距。请确保您确定:

  • 负责开发代码的人员
  • 工作流程
  • 此过程中使用的技术

3. 在 API 级别实施安全控制

通过 API,应用程序和软件可以与您的企业进行交互,让外部人员直接访问敏感信息。如果没有适当的安全措施,网络犯罪分子就会利用这些漏洞。 

为了解决OWASP 的十大 API 安全风险,建议您在 API 级别实施安全控制,这有助于保护您的数据和系统。一些最广泛使用的安全措施包括:

  • 身份验证和授权:确保只有授权用户使用OAuth 2.0或 OpenID 协议访问 API 。
  • 加密:保护通过 API 的数据免遭拦截和篡改,例如使用 SSL/TSL 加密。
  • 最小特权原则:根据这一原则,主体仅被授予完成规定功能所需的最小访问权限 – 其中包括访问您的 API。
  • 使用速率限制:为了防止拒绝服务攻击,请设置一个阈值,超过该阈值的后续请求将被拒绝。 

4. 自动化安全流程

渗透测试和漏洞扫描程序是测试 API 安全性的最常用方法。然而,在使用左移安全方法时,它们各自都有独特的问题。

部署漏洞扫描程序是为了针对一系列已知漏洞测试您的 API,但它们不会考虑您的 API 架构。这意味着它们会错过让您易受攻击的业务逻辑缺陷。

另一方面,渗透测试人员使用黑盒或白盒测试方法来模拟对 API 的攻击,当应用于左移测试框架时,这些方法极其耗时且成本高昂。

5. 在代码开发过程中实施安全修复

在开发代码时实现安全修复非常重要,这样您的应用程序和 API 就不会出现漏洞。 

修复代码后重新测试是个好主意,因为漏洞经常在修复后出现。这可确保没有留下任何薄弱环节,攻击者可以利用这些简单的错误。 

为您的 DevSecOps 团队提供实施左移安全所需的工具。联系我们的团队安排免费演示。

第 5 章:左移最佳实践

左移等敏捷开发实践的广泛采用使 IT 决策者能够获得更高的收入。目前83% 的企业实施 DevOps 策略来确保其流程正常运转。

在 DevOps 实践中向左转变可能是一个挑战,但如果您真的想改进流程,那么这绝对值得去做。

以下是一些帮助您成功实施左移的最佳实践:

1. 协作创建部署和测试程序

生产故障经常被忽视的原因有很多。最常见的原因之一是开发人员和运营团队使用的程序和工具彼此不同。

为了取得成功,运营和开发需要对部署程序有共同的理解。团队协调一致将使他们能够更快、更有效地发现和解决问题。

2. 逐步实施左移

关于如何在组织内最好地实施左转战略,并没有一个放之四海而皆准的答案;然而,我们建议从小处着手,随着时间的推移逐渐增加左转努力的范围和深度。

一种方法是先找出浪费或效率低下的领域。这些领域通常是仍在使用手动流程的领域,而自动化流程会更有效,例如渗透测试。

一旦确定了这些领域,您就可以开始以适合您的组织的方式实施左移原则。

3. 在整个 SDLC 期间模拟生产环境

开发和生产环境越相似,越容易避免错误。您可以使用正确的模式和云技术模拟生产环境。

4. 尽早并经常进行测试

测试是质量保证的重要组成部分,需要在整个开发过程中进行。持续测试可让您更快地发现问题,因此修复这些问题的成本会更低。

5. 使用自动化实现持续集成和交付

CI/CD 使软件开发过程自动化,以便更快地进行更改和测试。这意味着可以在开发周期的早期发现并修复问题,以免它们对生产造成影响。

自动化团队在编码和部署阶段整合的越多,他们就能越快地开发代码、运行更多测试、集成更改,并在每项活动上花费更少的时间。

常见的自动化测试有三种类型: 

  • API 测试API 测试包括集成测试,用于检查 API 在安全性、功能性、可靠性和性能方面是否按预期工作。 
  • 单元测试:单元测试是确保您的代码在特定环境中按预期工作的好方法。
  • 用户界面测试:这是一种通过测试 GUI 来利用图形识别软件缺陷的技术。

文章来源:Shift Left Security: The Ultimate Guide

#你可能也喜欢这些API文章!