自动化是推动代码安全超越DevSecOps的关键
3933
几乎在每一个行业,开发人员都在努力确保其代码的安全性。无论是企业还是汽车,航空或工业控制,小型系统或大型系统的应用程序,每个组织都在安全性方面苦苦挣扎。作为响应,该行业继续发展以提高自动化程度,交付速度和代码可靠性。让我们考虑一下当今应用程序开发生态系统的关键构建块。
静态分析或静态应用程序安全性测试(SAST)可帮助实施编码准则并检测未定义的行为,并且在整个开发生态系统中普遍使用。SAST的优势之一是自动化。由于不需要输入,因此SAST很容易引入到现有的软件开发过程中,在此过程中,SAST将检查源代码的生成并生成警告。MISRA,CERT C等编码准则有助于避免常见的编程错误。但是,第二类,未定义的行为,是一个更大的问题。这是因为未定义的行为会带来风险。例如,空指针取消引用,缓冲区溢出或未初始化的变量都是可利用的漏洞。根据他们的严重性,他们通常将需要为客户发布补丁。
接下来,让我们考虑涵盖开发,安全性和操作的DevSecOps。尽管它已在诸如金融服务等企业市场中被广泛采用,但汽车和工业等市场却落后。尽管如此,对安全性的重视正推动着DevSecOps的推动,使软件开发人员的工作更加轻松,并使他们更符合安全性和操作功能。
例如,快速反馈周期在每个行业中都非常重要。考虑一个用例,在这种情况下,编写新功能或修复程序可能要花费一个小时的时间。在当今时代,新源代码几乎必须立即运行,这是不可想象的。
DevSecOps中最重要的元素之一是围绕项目的分支策略。除了主分支外,每个开发人员都使用自己的独立分支。他们先开发代码,然后将其合并回该主分支。主分支的关键要求是保持零个未解决的警告,以使其通过所有功能测试。
因此,在单个分支上的开发人员可以提交其工作之前,它还需要通过所有功能测试。并且所有静态分析测试都需要通过。当拉取请求或合并请求具有未解决的警告时,将被拒绝,必须对其进行修复并重新提交。这些包括功能测试用例故障和静态分析警告。
功能测试失败必须得到解决。但是,失败的根本原因可能很难找到。一个功能测试错误可能会说“输入A应该生成输出B”,但是C出来了,但是没有指示要更改哪段代码。另一方面,静态分析将准确揭示内存泄漏的位置,并为每个警告提供详细的说明。这是静态分析可以帮助DevSecOps交付最佳和最安全代码的一种方式。
最后,让我们回顾一下“精益”和“左移”,看看它们是如何连接的。
精益开发专注于为企业创造价值。如果我们修复此缺陷,企业将获得价值吗?如果我们纠正此警告,则企业会获得价值吗?换句话说,在正确的时间点消除浪费,做出正确的决定。
零缺陷实际上是精益背后的重要基本哲学之一。当然,零缺陷永远不会意味着零缺陷。这实际上意味着接近零的缺陷。例如,当修复特定缺陷没有价值时,可以将其分类为“不修复”。同时,如果存在缺陷,当用户在add函数中输入负值时应用程序将表现不佳,则有两种选择:修复或不修复,如果期望用户永远不会输入负值。
目的是实现零缺陷基准并不断提高。在这种情况下,零缺陷是指源代码问题以及来自静态分析的警告。
最后是左移的概念,它是一种将某些过程更接近于开发人员的运动-在这种情况下为测试。通过提供对新代码的更快反馈周期,开发人员可以避免性能下降。在处理源代码项目时,如果在提交块后几天进行回归测试并发现缺陷,则开发人员可能很难回忆起当时的工作。在几分钟(而不是几天)内发生更快的反馈可以提高质量和安全性。通过这种方式,左移是DevSecOps和Lean的核心组成部分。静态分析是这种左移的一部分。
下一个是什么?总之,更多的自动化。确保开发人员的认知开销尽可能少,这将使他们能够更快更安全地构建代码。通过使用基于行为的测试或测试驱动的开发来开发新功能,可以通过组合上述概念以及分析代码来实现。最终目标是更快的反馈周期,从而加快开发周期。