写点什么

DevSecOps:好处和挑战

用户头像
啸天
关注
发布于: 2021 年 01 月 13 日
DevSecOps:好处和挑战

DevSecOps 有好处,但也有挑战。 了解公司为何做出转变,以及为什么转变总是不容易。


DevSecOps 是将安全集成到 DevOps 管道的每个阶段的实践。 DevSecOps 统一了开发活动,运维支持和安全检查,并协调了软件开发生命周期(SDLC)中涉及的团队。 自动化有助于团队之间的协作。

但是,DevSecOps 并不是快速解决方案或临时解决方案,而应该是一项长期实施,有助于确保组织可以实现和维护安全的 SDLC 的方案。 DevSecOps 要求开发团队遵循标准的 SDLC 流程,以确保在更容易解决安全问题的早期去解决安全问题。

在 DevSecOps 中,开发人员维护代码,并进行代码同行评审,然后才能将代码移至生产环境。 没有人或团队可以完全控制代码如何在生成环境中进行更新,而由单独的团队负责开发、测试和部署等。

运营团队支持整个开发流程,包括维护和更新操作环境,定义和实施部署流程以及记录 DevSecOps 流程的每个细节。

安全团队可以识别并消除漏洞。一旦漏洞到达生产阶段,DevSecOps 流程就会清晰地显示出何时出现漏洞以及漏洞是如何产生的。在传统的编码过程中,将应用程序部署到生产环境的过程始于对代码的更改,但在 DevSecOps 中,构建,测试和安全扫描较早开始,并且需要其他活动来补充,例如设计审查和后期运维监控。

DevSecOps 可以使用一种工具执行吗?

 

有许多工具可以提供各种类型和服务组合,但是没有一个工具可以提供 DevSecOps 流程。一些提供静态应用程序安全测试(SAST)工具的供应商现在正在添加软件组成分析(SCA)工具(反之亦然),但是 DevSecOps 不仅仅是执行扫描。

还需要注意的是,没有一种工具适合所有环境,而且通常没有一种工具适合所有公司。除应用程序测试工具外,DevSecOps 流程还需要产生报告的工具,缺陷跟踪管理工具以及环境构建工具等。 还请注意,安全,构建和度量标准收集活动不仅限于市场上可用的工具,甚至脚本(Shell,PowerShell,Python 等)也提供各种功能。

DevSecOps 如何帮助安全团队?



在 DevSecOps 中,对代码的任何更改都会触发诸如 SAST 或动态应用程序安全测试(DAST)、架构评审以及渗透测试之类的活动,这些活动又触发扫描,而扫描又会判断是否继续成功部署或者终止部署的指标和报告。 所有这些活动都在几分钟甚至几秒钟内发生,并且速度不会因为团队扩大规模而减慢。

安全团队通常缺乏资源,但是安全团队仍然有责任阻止恶意人员利用漏洞。 随着开发团队朝着多元化,多管齐下的敏捷方法前进,DevSecOps 流程可帮助安全团队与 SDLC 流程中的每个人共同承担将安全集成到 CI / CD 工作流程中的责任。 在 SDLC 中较早引入安全测试,使开发人员可以实时解决其代码中的安全问题,从而避免后期解决的高昂代价。

DevSecOps 有什么好处?

DevSecOps 使您可以使很多工作加速完成。加快速度,减少延迟和实现可伸缩性是最大的优势。由于全球团队分布在许多不同时区,因此组织需要在促进协作的同时减少依赖的流程和框架,以帮助团队实现其目标。

通常,不同的团队在信息孤岛中工作,这些零散的环境使得各个团队难以确保一致,同时使得每个团队都具有其流程的独立性。如果团队无法改变他们的整个开发过程,他们如何才能达成目标?渐进式变更是否比实施中的全面变更更好?

DevSecOps 可以解决这些问题。无论组织的安全级别有多成熟或有多分散,DevSecOps 都可以启动和实施安全活动,并适应不同的职能团队的需求。

您可能已经听说过这样一句话:“安全不仅仅是安全团队的责任,而是每个人的责任。” DevSecOps 使每个人都能够参与确保安全的过程和实践。开发人员、应用程序经理、运维团队、安全团队、评审人员和测试人员都可以发挥重要作用。

DevSecOps 的支柱是什么?



加速

快节奏的世界需要快节奏的解决方案。DevSecOps 消除了手动步骤和依赖,所以整个过程可以更快以及在更短的时间内完成。

举例来说,DevSecOps 中加速的力量就体现在一家公司,该公司在发布前两天就收到了对 30 种微服务进行安全扫描的需求。通过利用自动化工具和流程,团队可以在两个小时内完成这个需求。考虑一下:对 30 个新的微服务运行扫描评估,并对扫描结果进行分类-全部工作在两个小时内完成。

在整个 DevOps 中通常只有不到一周的时间,因此几乎没有时间来处理安全流程。当今许多安全工具的运行速度得到了提高,许多安全工具提供了自定义扫描的功能,因此您可以进行自定义扫描,从而进一步减少扫描时间。

可扩展性

DevSecOps 受欢迎的原因之一是使安全团队可以在有限的资源下进行扩展。即使只有有限的安全团队,DevSecOps 固有的自动化对于公司支持许多应用程序的能力也至关重要。例如,一个四人小组的任务是进行 SAST 审查和批准发布,但是由于这个过程是手动完成的,因此只能支持 200 个应用程序。但是通过自动化和安全集成,该团队能够在几个月内扩展多达 700 多个应用程序,并为每个应用程序提供支持。

灵活性

组织可能希望从一种工具过渡到另一种工具,有时涉及 1,000 个或更多应用程序。这听起来像一场噩梦吗?在 DevSecOps 中,作业通过通用的脚本库运行,并且由于这些脚本在所有作业之间共享,因此您可以轻松地从一种工具过渡到另一种工具。通过新任务更新一组通用指令或替换现有任务,可以轻松地在所有应用程序中传播这些更改,而不必在每个作业中进行更改。

可追溯性

在 DevSecOps 中,流程是相互关联和自动化的,因此很容易查看更改是否导致问题。这种可跟踪性使人们更容易对更改负责。DevSecOps 还鼓励开发人员在编写安全代码时更加小心,以防止 CI 过程中断。DevSecOps 还可以设置一些步骤,以在特定的里程碑将电子邮件发送给整个开发团队,例如何时完成工作,何时团队满足或不满足安全要求。当更改触发扫描时,电子邮件可以指定谁做到更改触发了扫描。

您如何利用自动化?

自动化可用于触发构建、扫描、部署、评估和批准。当这些任务自动化时,安全团队可以专注于其他重要活动。例如,如果一个组织有 700 个应用程序,那么对于一个由四个人组成的安全团队来说,很难手动监视更改,但是自动化可以大大减少工作量。

如前所述,组织通常拥有分布在多个不同时区的团队。安全团队没有预算和资源来支持所有这些时区,但是 DevSecOps 可以提供帮助。 例如,DevSecOps 可以监视印度开发人员在当地工作时间正在审查的代码。通过提供门户,开发人员可以通过运行工具进行按需扫描。 DevSecOps 还可以通过实施标准化来提供帮助,标准化可以使过程清晰易懂。标准化还使按比例缩放过程以及根据需要进行更新和添加变得更加容易。

实施 DevSecOps 有哪些挑战?

每个组织都必须优先考虑其业务活动,DevSecOps 可能并不是每个人的头等大事。在某些情况下,组织可能无法将安全集成到其 DevOps 流程中,因为安全依赖于某些环境和脚本更改。否则,由于其他优先事项,团队可能没有能力进行这些更改。

团队通常支持旧版应用程序,因为他们还没有计划对其进行过渡。有些安全工具无法轻松或自动地与其他工具集成,它们需要一层抽象才能在 DevSecOps 流程中使用。例如,到现在为止,Burp 还没有 CI 插件,因此将 Burp 扫描集成到自动化流程中并不容易。

遗留应用程序的另一个问题是它们对于功能至关重要,但是由于它们是很早以前编写的,因此没有人能够或愿意进行更改。分配资源以使此类应用程序自动化没有意义。但是,安全团队仍然必须定期扫描这些应用程序(尤其是在更新测试方法时)。因此,它们需要适应标准化的测试过程。

组织如何开始?



DevSecOps 需要耐心和坚韧。任何 DevSecOps 实施都至少需要一年的时间-那些说不到一年都是胡话。在开始设置解决方案之前,将涉及大量规划和设计。您必须首先确定当前流程中的差距,然后确定支持您打算实施的流程所需的工具。您将需要与各种团队协调才能获得认可,并指导他们实施所需的更改。这些都不会在一夜之间发生。

对流程进行更改会影响该流程中涉及的所有人员以及该流程之后的所有应用程序。如果使用一组通用的库对所有应用程序进行扫描,则除非您设置了特定条件,否则这些库中的任何更改都会影响所有应用程序。

将新的应用程序添加到此过程可能需要很长时间。启用.Net 应用程序通常需要花费更多时间,因为这些程序必须正确构建。Visual Studio 往往会隐藏很多构建错误,并在运行时提供依赖项。对于 MSBuild 而言,情况并非如此。如果应用程序团队使用 Visual Studio 构建应用程序,则由于多种原因(错误的目录结构,缺少的依存关系,不正确的依存关系等),使用 MSBuild 命令行的自动化过程可能会中断。

有时 CI 工具本身无法胜任这项工作。组织通常使用 Jenkins 来开始其 CI 流程,因为它是免费的、开源的而且很流行。但是,Jenkins 及其插件中的错误数量可能是惊人的,并且可能导致需要杂乱的解决方法。而且 Jenkins 上的许多插件都不再得到维护或支持。这并不是说它很糟糕,它仍然非常有用。值得注意的是,尽管市场上还有其他 CI 工具,但它们也有局限性。

还要记住,工具并不总是能完成所需功能。每个工具都有其局限性,尤其是在自动化过程中。例如,Jenkins 可能不允许条件参数化。可能有些插件提供了解决方法,但没有实际要求。

当然,任何安全团队都必须面对的最大难题是误报。如果没有适当地自定义安全工具,您可能会因误报而感到不知所措。企业需要保持警惕,以针对用于缩小结果范围的应用程序,语言,技术或框架自定义工具。

我们还需要 DevSecOps 吗?

尽管存在挑战,但采用 DevSecOps 仍具有许多优势。尤其重要的是,它如何帮助解决安全团队中资源短缺的问题。DevSecOps 使团队可以更高效地工作,并适应不断扩展的环境。


原文:https://www.synopsys.com/blogs/software-security/devsecops-challenges-benefits/

 

发布于: 2021 年 01 月 13 日阅读数: 172
用户头像

啸天

关注

安全不是某个人的事情,而是所有人的事情。 2012.05.08 加入

CISSP,安全架构师,AWS认证安全专家,OWASP中国广东分会负责人

评论

发布
暂无评论
DevSecOps:好处和挑战