对于一些企业来说,即使其员工不是软件开发人员,也要了解DevSecOps的基础知识。这是因为可以提高企业的安全性。长期以来,很多企业关注加快应用程序开发以尽快部署新软件,但这常常是以牺牲安全性为代价的。
不幸的是,如果在这个阶段发现应用程序存在安全问题,就意味着需要重写大量的代码,这对开发人员来说是一项非常复杂、困难和耗时的任务。
但是DevSecOps指标和方法已经成为开发人员处理软件开发生命周期(SDLC)的重要更新。通过接受DevOps的快速发展和SecOps的严格监督,它们可以合并成一个整体。这种做法使开发人员能够在启动项目前构建安全的软件。
预计软件交付、安全和基础设施的新方法在2021年将成为DevOps的发展趋势。基础设施自动化工具的成熟,以及更好的安全工具,以及数字化转型的全面接受,意味着DevOps将获得更多的驱动力和可见性。
本文将介绍有关DevSecOps的知识,如何在软件管道中实现DevOps安全指标的一些指南和技巧,越来越多的开发人员以这种方式工作的原因,以及DevSecOps的实现如何让员工产生更好的团队意识、更快的软件开发生命周期(SDLC)、更高的生产率和更好的安全性。
DevOps安全
要集成到DevOps实践中以实现DevSecOps软件开发方法,最常见的建议是:
- 持续关注安全性,并将其构建到应用程序中。
- 使用自动和人工扫描流程来确保开源和第三方组件的安全。
- 始终遵循安全编码准则。
- 验证所有输入数据、响应和内容类型。
- 警告不寻常的行为,并分析其潜在的攻击迹象。
- 利用人工和自动的安全测试和保护。
- 利用SAST工具创建安全可靠的代码。
对DevSecOps的需求
Cloud Defense公司的DevOps专家Barbara Ericson指出,“DevOps主要关注通过降低构建(发布)的失败率来更快地为终端用户提供软件应用程序。DevOps还强调了通过可测量的质量控制实现快速周转所需的工具。”
然而,“DevSecOps”也将软件开发和IT运营与安全元素整合到一个共同的角色中。这种组合强调了在开发软件时三个重点之间的平衡。
DevSecOps还可以发现潜在的安全漏洞,在它们被网络攻击者利用之前加以纠正,构建具有内置安全服务的业务驱动软件。这种方法降低了合规性的成本以及软件发布的延迟。在DevSecOps被广泛应用之前,企业通常会在软件发布前的最后阶段检查他们新开发的软件。
由于快速部署的文化,将补丁应用到服务器以进行安全修复变得越来越普遍,而不是修复其核心的安全问题。
如今,企业不能只把安全当作事后考虑的事项,因为难以承受网络攻击带来的损失。IT基础设施广泛存在,IT技术在日常活动(如购物、银行和医疗保健)中的使用也很普遍。这意味着DevOps需要具有可扩展性,因为需求不断增加,而且如果发生数据泄露,可能会造成破坏。
近年来,网络犯罪的数量一直在稳步增长。最近的一项研究表明,在2020年底,英国60%的企业遭受了网络攻击。远程工作和疫情加速了这一趋势。现在,实施DevSecOps已不再是一种良好的实践,而是减少严重数据泄露和其他黑客事件的可能性的必要措施。
DevSecOps将重点转向安全,确保软件开发管道中的每个人都有责任确保最大程度的IT安全。通过在软件开发过程的每个层次上对网络安全的关注,速度、功能和安全性是优先考虑的。
DevSecOps vs. DevOps
DevSecOps的旧模式与DevSecOps的新模式有什么区别?首先关注它们的相似之处。这两种方法都重视团队合作的概念,并认识到这可以加速重要新软件的发布。它们都利用敏捷框架来强调由动态和连续的工作流程驱动的工作文化,并且在所有级别都强调沟通和协作。
DevOps和DevSecOps都对简单的任务使用了一定程度的自动化技术,为开发人员腾出时间来专注于软件的更重要方面。持续过程的概念适用于这两个实践,确保在每个阶段都满足开发、操作或安全的主要目标,避免了管道中的瓶颈。
通过共同工作,开发人员、操作人员或安全专家可以及时地编写新的应用程序和软件更新,监视、日志和评估代码库和安全边界,以及使用中央存储库推出新的和改进的代码库。DevOps和DevSecOps之间的主要区别非常明显。后者重新关注安全性,而这一点以前被其他方法和框架所忽视。在过去,企业总是强调新应用程序的开发和发布速度,但在网络安全专家审查代码并指出安全漏洞时,却陷入了令人沮丧的困境。
前一种做法鼓励在软件开发周期中制造瓶颈,这会给网络安全专家和开发人员带来很大压力,迫使他们快速修复软件的故障和漏洞。这通常是以软件的功能和安全性为代价的。
DevSecOps管道
从本质上说,DevSecOps管道是一个安全实践和工具的列表,这些安全实践和工具根植于软件开发管道的每个步骤中。IT专家将开展合作,以更快地构建、测试并最终发布安全软件。
通过实现DevSecOps,开发团队可以确保他们可以在软件开发生命周期 (SDLC)早期发现安全漏洞,并在为时过晚之前为它们创建最佳修复。这反过来又提高了整个生命周期的速度和灵活性。它还有助于团队中的每个人都熟悉潜在的安全问题,并使企业能够更快地从安全事件中恢复过来。
传统上,现代DevOps管道有几个不同的层次。这些阶段被称为计划、代码、构建、测试、发布、部署、操作和监控阶段。这些阶段与DevSecOps的思维方式保持不变,但有一个例外:对安全性的关注应用于每一个层次。
这种对安全性的关注表现在几种不同的方式上。第一个重点是威胁建模。开发团队对各种最有可能的攻击场景进行头脑风暴,检查可能受到影响的敏感数据,并提出可能的解决方案。它还有一个额外的好处,就是可以让团队中的每个人都了解常见的安全问题。另一个重点是扫描,可以分析代码以确保不受常见漏洞的影响。很好的一个做法是同时使用人工和自动扫描过程。
分析在安全中也起着重要的作用。在这一阶段,将进一步审查从前两个状态中收集的信息、数据和指标。开发团队对安全风险进行优先排序,列出哪些是最严重的和不严重的风险,以及哪些风险更可能发生。补救阶段允许在软件开发生命周期 (SDLC)中涉及的团队为所有已识别的安全风险设计解决方案。静态分析安全测试(SAST)可以为通过自动化检测到的代码中的许多错误和漏洞提供解决方案。
最后,开发团队可以监视软件并跟踪识别出的漏洞,以及记录为减轻潜在安全问题所采取的步骤。而在监视阶段需要不断评估软件的整体安全性。
DevOps安全工具
幸运的是,开发团队的工具包中有许多工具可以用来帮助创建没有错误和漏洞的代码。这些工具可以使开发团队的工作更轻松,并促进网络安全软件的创建。
- SAST工具
静态分析安全测试(SAST)工具依赖于自动化来评估代码的漏洞。SAST是一个很好的工具,因为它具有高度的可扩展性。SAST最重要的元素之一是源组成分析,它能够自动扫描代码,以查明OSS软件、OWASP、漏洞、错误、库和其他可能存在开放安全问题的类似构件的漏洞。
SAST工具遵循国际公认的编码标准,在检测到漏洞模式的地方设置危险标志。它可以更早地识别出许多不同类型代码中的安全漏洞,如果需要重新编写代码以优先考虑网络安全,这可以节省资金。SAST工具提供的实时反馈允许开发人员知道漏洞的确切位置及其原因,从而允许他们采取相应的行动。
- DAST工具
动态应用安全测试 (DAST)工具深入研究软件应用程序的编码,并分析执行逻辑和实时数据。DAST工具具有更全面的方法,在应用程序运行时进行分析。它测试加密算法,试图用一种“白帽”黑客方法从外部破解它们。
DAST有助于验证权限,以确保不同权限级别的安全性。它可以检查跨站点脚本、SQL注入和其他常见的软件安全漏洞。它可以捕获硬应用程序失败,以及记录应用程序执行,以便进行事后测试失败分析。最后,它可以确保第三方接口不存在严重的漏洞。
SAST和DAST协同工作。这些工具对于有效的DevSecOps管道的全面安全测试过程至关重要。
- 容器扫描
容器扫描只是使用扫描工具持续检查容器的过程,以确保它们按应有的方式运行。容器扫描至少应确认软件供应链已启动并运行,并且开发团队的容器基础设施已经正确配置和保护。
最好的容器扫描工具将容器组件与它们正在扩展的新漏洞数据库进行比较。它们还应该为开发团队提供报告、影响分析和已发现的任何许可问题或漏洞的图表。
结语
随着人们生活在一个越来越依赖技术的世界,开发团队负有创建安全软件的巨大责任。当创建可能包含敏感医疗、金融或其他个人信息的大型数据库的应用程序时,将面临很高的风险。
幸运的是,有了DevSecOps的心态、正确的DevOps工具和适当的指标,有很多方法可以构建和编写软件,以确保最大程度的安全性。
原文标题:DevSecOps: A Complete Guide,作者:Vishnu Vasudevan