DevOps Security——最佳实践和技巧

Blog
Author:
Dori ExtermanDori Exterman
Published On:
1月 17, 2022
Estimated reading time:
1 minute

没有人希望被暴露的安全漏洞弄得措手不及。根据 Verizon 提供的2020 年数据泄露调查报告,在近 58% 成为网络攻击受害者的公司中,约有 41% 的公司因安全措施不当而受到数据泄露的影响。知道了这一点后,DevOps Security 实践对于防止收入损失甚至公司部分市场份额的损失就变得至关重要。

此外,根据 Data Bridge Market Research 完成的研究显示,对 DevSecOps 的炒作关注表明,到 2026 年,该市场将从 2018 年的 14.7 亿美元增长到惊人的 136.3 亿美元。这表明,除了希望更快交付软件同时保持或提高质量的矛盾愿望外,DevOps Security 正在迅速成为重中之重。

对开发人员进行的一项民意调查表明,72% 的人认为他们组织的安全性为“良好”或“强大”。这比前一年的 59% 有所上升。此外,对 DevOps Security 的不断投资和对以 DevSecOps 为重点公司的收购兴趣(参见 Jfrog Vdoo 的收购)显然是未来将更加关注该技术的一个迹象。

现在我们可以看到,像 GitHub 这样的主要提供商将安全测试作为其基于云的服务的一部分。他们使用 Semmle“,一种允许查询特定模式的语义代码分析引擎。而且,那些非本机提供的功能通常由第三方供应商通过每个服务的单独市场来处理。另一方面,除了工具之外,Vectra AI 提供的电子书数据显示,缺乏对新的生产就绪软件版本的正式签署是整体安全方法最成问题的问题之一。

本文中,我们想重点介绍一下 DevOps Security 的原则,以及一些用于帮助 DevSecOps 克服这些挑战的最佳实践。我们还将围着这个主题解决一些谬见。最后,我们将讨论 DevOps Security 实践的未来。

devsecops-1024x512-1

我们是如何接触到 DevSecOps 的?

答案很简单,就是“出于需要”。在过去几年中,软件和应用程序开发的速度有所提高。这在很大程度上要归功于 DevOps 工程师实施的自动化,一旦由多个主题专家完成,就可以处理许多方面。但是,速度的增加还有另一面。

如果没有 DevOps 安全实践,或者实践缺乏或不适当,那么速度的提高可能会为缺陷提供机会。缺陷是软件开发的一个正常部分。在开发过程的早期,以安全为中心的技术是最关键的技术之一。这也是 DevSecOps 的有用性之所在。

2020 年完成的一项关于“企业现代应用程序现状”的审查报告称,78% 的受访者将安全列为重中之重。这种在整个过程中对安全方面的关注有助于开发人员、利益相关者和 DevOps 工程师在 DevOps Security 方面进行前瞻性思考。这与 DevOps Security 的持续融资和重大新投资有关。

DevSecOps 与传统的 DevOps 相比如何?

首先,DevSecOps 可以被视为是在实践 DevOps,在整个开发过程中更加关注安全性。如果您愿意,可以使用带有安全插件的 DevOps。但除此之外,每个人都参与帮助维护应用程序或服务的安全性。开发人员有办法帮助防止代码到达代码库,从而影响生产。

要在 DevSecOps 中取得成功,您需要开始推动“左移”的安全理念。我们来看看 git 预提交钩子技术。这是开发人员根据您在仓库中创建的一组策略检查本地代码的一种方法。如果它不是“干净提交”,则不会被接受。“右移”也同样重要。这意味着您可以查看生产系统的内部结构,并在您配置的数据点和阈值上显示适当的监控和警报,包括安全相关事件和信息。

DevOps 世界中这种新发现的思维模式正在为团队之间的紧密合作创造越来越多的机会。应尽可能避免产品发生安全事故并保持数据完整性。在 CI/CD 管道中使用自动化 QA 并关注安全方面是 QA 加入等式的一种方式。通过自动化及早检测漏洞只是在 CI/CD 工作流程中 DevOps Security 持续交付软件的另一种方式。

DevOps Security 不是什么?

它不能取代网络和数据安全方面的内部主题专家。它只是为他们的工作提供补充。

单靠工具是无法获取适当的 DevSecOps 的。尽管有许多出色的工具可用于管理配置和协调安全软件交付,但它们不应被视为“灵丹妙药”。 诚然,有许多工具是为了自动化 DevOps 安全的许多方面而设计的。这些工具只是更大蓝图的一部分。

DevSecOps 在现实世界中的挑战。

变化总是会影响团队的工作流程。将 DevOps Security 方面添加到已经建立的团队可能会带来一些挑战。其中一些与文化和组织方面有关。从文化角度讲,工程师们并不认为额外的步骤是一件好事。但是,当以显示价值的方式实施时,我们可以看到将其付诸实践的途径。

作为一个组织,分析公司 Gartner 的预测表明,75% 的 DevOps 计划将无法实现其目标。这在很大程度上与围绕学习新技术的持续问题以及常规变革工作有关。需要注意的很重要一点就是,招聘方面如何受影响。由于对 DevOps 工程师的需求已经很高,一些工程师在没有大量基础知识的情况下就进入了这个角色。这会造成一种成本可能较低但可能对软件发布计划产生负面影响的局面。

最终目标是在速度与安全性之间做出折中。我们不想让开发人员放慢脚步,但我们确实希望他们注意在开发过程中及早防止安全漏洞的方法(左移,人)。不仅是开发人员,还有团队中的每个人。有些人了解内部系统,可能需要分享部落知识。

虽然大多数 DevOps 工程师都非常熟悉他们环境中的任何“遗留”服务,但他们可能不具备了解其使用安全方面的那种部落知识。这是一个机会,其中协作是理解流程和任何潜在场景的关键。变化可能很快。尤其是能够使用自动化创建云基础设施来部署简单容器。

容器化和云基础设施本身就是一个挑战,也是我们负责的新领域的一部分。容器可能需要进行额外扫描,以确保它们与策略一致。云基础设施通常比本地装置更容易暴露。这些资源的安全性与数据中心基础设施同样重要,后者过去是,现在仍然是那些提供在线服务的公司普遍使用的。确保这些遵循 DevOps Security 指南的方法对于推动当今技术的发展至关重要。

DevSecOps 正确地踩了刹车,以便全面了解部署或基础设施变化的安全方面。即使是最训练有素的开发人员也不是安全专家,他们可能会在不知不觉中为代码中的项目创建额外的安全债务找到已经对安全漏洞有想法的开发人员可能很困难。没有多少人具备新的安全技能可以直接投入使用。尽管如此,许多人仍在理解这一需求,并在推广使用有助于确保他们所负责方面之安全的工具和服务。

我们不要忘记,新的分布式员工队伍如何给安全带来了一系列挑战。通过多种途径共享信息的大型团队可能会产生新的关注领域。通过我们在这个主题上看到的新数据,我们可以了解更多内容。阅读 Syntax Mike Rulf 以了解更多信息,他认识到为什么安全性变得比以往任何时候都更加重要。

对于基础设施和软件本身来说都是如此。在应用程序或服务的架构中,安全策略必须优先于“使其工作”。 虽然过去增加技术负债可能是可以接受的,但为安全项目这样做并不是良好的 DevOps Security 的原则。组成环境的项目必须像在其中运行的服务一样进行测试。这意味着需考虑以下方面:

  • 对用户或服务帐户使用最少的权限。
  • 包括安全方面在内的代码审查。
  • 随时了解最新的安全编码标准。
  • 网络分段和边缘设备漏洞测试。
  • 负载测试,以了解底层资源的可用性。

DevSecOps 交易的工具。

我们讨论了 DevOps Security 的一些最佳实践,现在我们将讨论当今基础设施和应用程序部署管道中使用的一些工具。我们考虑一下当今 Kubernetes 集群中使用的工具,这些工具有助于保持容器内创建的特定边界。

开放策略代理用作准入控制器,其任务是强制执行特定的策略。有许多高级功能是不容易获得的,除非有某种类型的控制器。大多数情况下,在一开始执行图像规则的任何方面,并管理任何传入的对象。

用于在生产过程中执行策略的 OPA 等工具是实践策略即代码的一部分。多个行业中的一些大牌公司依靠这种技术来帮助保护他们的系统安全。下面是一些已表明自己采用 PaC 值得注意的公司

  • Atlassian
  • Capital One
  • Chef
  • 高盛
  • Intuit
  • 网飞
  • Pinterest
  • SAP
  • Tripadvisor
  • Yelp

集成自动化(比如用于 CI/CD SonarQubegit 预提交钩子)可以将开发和安全工程师之间的协作提升到一个可衡量和可操作的水平。这意味着,行业特定策略和情景可以根据特定情况定义,以涵盖各种威胁模型。从围绕可能的威胁完成的协作中,可以为警报或操作项设置阈值和操作,以实现自动恢复。

不仅仅是 DevSecOp 工具。

可以对更复杂、更深入的工作流进行建模,以包括 DevOps Security 的一些关键方面:

  • 集成工具——部署期间和交付后帮助确认策略和代码中安全项的工具。
  • 持续反馈回路——用于自动向开发人员和专家提供反馈,以了解代码正确运行时以及事情看起来不正常时会发生什么。
  • 秘密管理——有许多旨在保护共享密码和其他信息的产品。分散工作的秘密管理对于平稳运行至关重要。
  • 威胁分析——确定哪些类型的可用数据需要与边缘服务器或提供中断方法的其他端点一起保护。
  • 限制管理员权限——管理员权限是我们可以使用的最广泛的滥用权限之一。使用所需的最少权限是确保环境稳定性的最佳方法。
  • 高优先级——为了真正支持 DevSecOps 模型,必须将有关安全性的项目放在列表的顶部。
  • 变更管理——使用一种方法来控制变更通常需要一个变更管理流程。这可能是一个高度开发的工作流,也可能像发布检查单一样简单。
  • 关键绩效指标 (KPI)——为了了解您的努力是否得到回报,定义可与业务目标相关联的 KPI 非常重要。定义安全相关事件的基线和降低指标是证明 DevOps Security 需求的一种简单方法。

持续关注安全领域的最新消息对于成功也至关重要。有许多资源可以帮助架构师、开发人员和 IT 专家了解最新的威胁。发现并与团队一起分享这类型信息将有助于提前预防事件的发生。例如,Qualys 通过整合基础设施的左移方法,将基础设施即代码 (IaC) 提升到了一个新的水平。他们的新产品 CloudView “提高基础设施即代码的安全性,使 DevSecOps 团队能够安全开始并保持安全。”

  • Codacy
  • SonarQube
  • Acunetix
  • Logz.io
  • GitLab DevSecOps
  • Contrast Security
  • Aqua Security
  • Digital.ai
  • WhiteSource
  • Snyk
  • Checkmarx

DevSecOps 的未来

数据是作为新工具的副产品创建的,并且重在安全性。我们将看到这些数据改变 DevSecOps 的未来。由日志工具、配置管理、部署和其他来源创建的数据量需要进行可能超出简单指标的分析。

人工智能 (AI) 和机器学习 (ML) 对于了解在各种环境中被监控的一切将变得至关重要。将人工智能纳入当前实践可能意味着对操作的需求越来越少。想象一下,软件及其基础设施如此敏锐地意识到了扩展需求,并提前做到了这一点。或者是一个了解无关紧要的攻击与需要人类交互的攻击之间区别的系统。

DevSecOps 是当今 DevOps 最热门的方面之一。例如,在最近的 Yaya DeVoPS 2021 会议中,围绕 DevSecOps 的讨论在议程上非常重要,我们最近的一篇文章对此进行了总结。

这是我们在 DevOps Security 中所期待的。如果做得好,这将是一个可以保证在未来节省工作时间和可能令人头疼的规则。除了 CYA” 方面,这是一个很好的例子,说明 DevOps 曾是一个孤岛,而现在是所有相关人员的思维模式。开发过程中的额外协作和检查肯定会带来其他机会,以提高我们日常工作中的安全性。