您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 网络/安全 > 正文

2022 年的七个DevOps安全优秀实践

发表于:2022-12-19 作者:科技狠活与软件技术 来源:今日头条

让我们深入了解 DevOps 安全性的全部内容、流程、最佳实践和优势。

快速交付软件的能力已成为在当今不断发展的数字世界中保持竞争力的必要条件。幸运的是,DevOps 通过与开发人员和运营团队无缝协作并在整个软件开发生命周期 (SDLC) 中自动化流程,使 IT 业务能够加快速度。但是,有一个陷阱。尽管 DevOps 确实促进了高节奏的软件交付,但安全考虑因素常常被忽视,这导致应用程序安全性不佳。

此外,安全团队通常将安全性视为基础结构组件,而不是应用程序设计元素。保护边界安全的防火墙等基本做法被认为是足够的。当应用程序托管在企业基础设施以外的环境中时,例如云、容器或无服务器计算平台,这种方法会完全失败。此外,在软件开发生命周期的最后阶段引入安全测试本质上会造成摩擦,减缓业务团队实现不受限制的 DevOps 的速度和规模。

然而,鉴于依赖应用程序来保持业务运行,安全性不应该是应用程序开发的事后考虑。在没有检查的情况下推出可部署代码的速度增加了漏洞的风险,并可能对生产环境产生重大影响。

那么,企业如何应对 DevOps 生态系统中的安全挑战?答案是 DevSecOps(或 DevOps 安全)!

让我们深入探讨 DevOps 安全性的全部内容、流程、最佳实践和优势:

什么是 DevOps 安全性?

DevOps Security 或 DevSecOps 是关于开发、安全和运营团队的无缝协作,它打破了以前存在于安全、IT 运营和软件开发团队之间的传统界限。它在整个 DevOps 管道中紧密集成了安全工具和流程,以实现向您的客户提供高质量产品的持续集成 (CI) 和持续交付 (CD)。

因此,DevSecOps 不再像过去在 DevOps 方法中那样在开发生命周期结束时测试代码,而是将安全测试转移到生命周期的左侧(左移方法),从而减少了之前或之前的返工需求部署后。DevSecOps 不仅提高了代码的整体质量,而且还提高了开发人员的工作效率,因为他们现在可以专注于交付高质量的代码并充满信心地生成更频繁的版本。

保护 DevOps 流程的挑战

将安全性无缝集成到 DevOps 管道中并非易事。以下是您需要解决的一些常见挑战,以最佳地保护您的 DevOps 流程:

文化抵抗

最常见的 DevOps 安全问题源于开发和运营团队对安全和测试的文化抵制。他们将安全视为导致开发过程延迟的瓶颈。通常,安全团队会花时间彻底测试环境和应用程序,以确保他们不会遗漏任何漏洞,这通常会让旨在缩短开发周期和持续交付代码的 DevOps 团队感到沮丧。

应对这一挑战的最佳方法之一是安全自动化。自动化不仅可以减轻手动错误带来的安全风险,还可以减少花在代码分析和漏洞测试等安全流程上的时间。

云安全

尽管采用云在许多方面使 DevOps 团队受益,但它也带来了安全挑战。虽然本地软件部署的安全风险非常有限,但云具有更广泛的攻击面并且没有明确定义的网络边界。此外,云中的一个小错误配置或人为错误可能导致关键资源可能暴露给公共网络。因此,保护网络边界和信任边界内实体的传统方法变得无效。

容器化

工作负载容器化通过在开发、测试和生产期间提供从一台机器到另一台机器的一致软件环境,显着提高了 DevOps 环境中的生产力。容器简化了 DevOps 中的构建、测试和部署管道。然而,底层引擎、编排和网络的复杂性增加意味着需要监控和保护更多潜在的攻击媒介。

协作挑战

DevOps 是开发和运营团队之间的协作。DevOps 安全需要将安全团队整合到 DevOps 文化中。考虑到安全团队习惯于以孤立的方式工作,他们很难适应 DevOps 优先文化的快速迭代步伐。另一方面,已经存在的传统安全工具、技术和流程在设计时并没有考虑到其中的许多用例。此外,在孤立的泡沫中工作的安全和工程团队通常会重复操作工作和信息流,而这些工作和信息流可以很容易地聚集在一个桶中。

机密管理

DevOps 环境促进了高度协作、相互关联的文化。这意味着开发和运营团队经常共享特权信息,例如帐户凭证、API 访问令牌和 SSH 密钥。然而,对于安全团队而言,这意味着要开发更复杂的安全策略,以确保受控的特权访问和机密管理。任何不良的安全做法都可能允许恶意行为者破坏这些凭据,获得对 DevOps 基础设施的访问权限,中断操作并窃取数据。

如何构建 DevOps 安全文化?

尽管许多组织都在利用 DevOps 安全性,但只有少数组织充分发挥了 DevOps 的潜力。这种失败的主要原因是低估了 DevSecOps 所需的文化和思维方式的潜在变化。这种误解使员工难以理解 DevSecOps 的总体目标。此外,复杂的运营模式、孤立的流程、不充分的交叉技能努力以及孤立的团队执行不协调的行动正在阻碍企业实现高速、高质量的交付。

因此,要构建 DevOps 安全文化,您的组织不仅必须在技术堆栈方面做出重大改变,而且在人员架构方面更是如此。以下是在整个组织中吸收 DevSecOps 文化的步骤:

1. 心态改变

您的组织需要正确的心态来鼓励在整个 DevOps 生命周期中持续的安全测试文化。在 DevOps 文化中,安全性并没有集成到开发过程中,尽管它很重要。安全责任被赋予安全团队。DevSecOps 需要转变这种思维方式。通过将安全性转移到软件开发生命周期的左侧,安全性应该成为每个人的共同责任。此外,您的组织必须从加速开发速度的单一思维方式转变为通过改进和扩展当前的敏捷原则和流程来提高速度和质量的更广泛的思维方式。

2、机制变化

要构建新的 DevOps 安全文化,您的组织必须定义关键的支持机制,例如新的 DevSecOps 角色和职责、团队如何协同工作的运营模型,以及定义每个角色参与级别的交互模型。这对于加强思维方式和工作方式的转变至关重要。

3. 技能组合的变化

技能差距仍然存在,这使得组织难以建立合格的 DevSecOps 团队。因此,为了解决这一人才缺口,组织必须进行投资以构建提升技能、交叉技能和新技能的新能力。

在当前的 DevOps 行业中,网络安全人才在组织内已经稀缺,比例为 1 名安全工程师对 10 名 IT/DevOps 工程师对 100 名开发人员。考虑到这种巨大的差异,组织必须以培训和采用应用程序安全测试工具的形式授权和教育处于前线的开发人员,使他们能够保持软件安全。

我如何开始在我的组织中实施 DevSecOps?

实施 DevOps 安全性并非易事。企业必须在速度和安全性之间取得适当的平衡,同时将安全实践嵌入到 DevOps 管道中。以下是一些可帮助您开始在您的组织中实施 DevSecOps 的提示:

定义 DevSecOps 策略

为了成功地将安全性集成到 DevOps 管道中,企业必须定义一个战略,明确阐明在整个软件开发生命周期中推动安全性的指导原则。在启动流程之前,工程和安全团队必须首先与 DevSecOps 战略的标准和目标保持一致。这有助于建立团队之间的相互信任。该战略还应定义共同目标、对相互问责的期望以及衡量成功的指标。此外,该策略还应包含一组清晰易懂的安全策略和治理,用于访问控制、代码审查、配置管理和漏洞测试等。所有团队都必须遵守这些政策,并确保它们在整个 SDLC 中得到实施。

成功的 DevSecOps 战略的关键是根据 NIST(美国国家标准与技术研究院)、CIS(关键安全控制)和 SLSA(软件工件供应链级别)等行业框架制定您的战略。首先,将框架分解为一组实施组。然后,从您可以快速实施的事情开始,并通过衡量能力快速查看结果。

了解您的工具链和工作流程

你无法保护你看不到的欲望。在大多数组织中,DevOps 和安全工程师最终会创建他们的运营孤岛以专注于他们的核心目标。开发人员专注于更快地创新和构建功能,而安全团队则专注于安全方面,最终在他们之间建立了一堵墙。这进一步导致整个工作流和工具链的可见性不完整。

所有团队,包括开发、运营和安全人员,都必须了解 DevOps 管道中涉及的工作流程和工具链。主要目标是让安全团队了解开发人员使用的工具和环境。这有助于他们构建统一的安全测试策略,定义将安全性转移到左侧所需的测试、工具和数据。安全团队还可以挖掘改进现有 DevOps 管道工作流的机会,使它们与左移安全性更加兼容。另一方面,开发人员必须经过培训才能使用至少一种流行的 AppSec 技术,例如 SAST、DAST、SCA、IAST 和 RASP。这有助于他们在整个 SDLC 中测试他们的代码。

实施安全护栏

在整个 SDLC 中实施安全流程和程序时,主要目标是使安全成为日常工作的无缝部分。团队可以通过以下方式做到这一点:

  • 尽早并经常嵌入安全性(将安全性转移到左侧)。
  • 将重点从验收和系统级测试转移到单元测试和集成测试。
  • 利用预先批准的工具来降低工具链的复杂性。
  • 引入渗透测试和自动化安全测试,以识别和修复开发过程中的关键安全漏洞。
  • 使用清单强化 CI/CD 系统,以确保团队遵循最佳实践。
  • 实施硬安全护栏——采取行动,同时向工程师提供反馈循环以解决问题。

自动化一切

重要的是要使安全流程和工具自动化,以按照 DevOps 流程的步伐扩展和加速安全操作。这也有助于减少 CI/CD 管道中因人工干预而出现的安全缺陷。代码审查、配置管理、漏洞评估和访问管理等安全流程都可以实现自动化。否则,很难在不妨碍开发过程的情况下识别安全问题。自动化还使开发人员和安全团队免于处理手动、重复的流程,帮助他们专注于更关键的任务。

安全自动化的一些示例包括:

  • 在容器内实施安全扫描器。
  • 对于已知的安全风险,在 DevOps 管道中自动执行更新和补丁。
  • 对于安全回归测试,尽可能自动化流程,同时自动协助需要手动执行的部分。
  • 利用自动化工具来处理代码分析、漏洞管理、配置管理、机密管理、审计和其他流程,同时工具已经在使用中。

持续改进

网络空间在不断发展,新的和复杂的攻击向量呈指数级增长。因此,为了领先于这些不断变化的网络威胁,您必须通过持续的安全验证和安全日志的实时监控来不断更新或改进您的安全防护措施。定期评估您的安全状况并将健康报告发送给相关团队,以及时解决任何关键的安全漏洞。在确保持续安全性的同时持续集成和部署代码是 DevSecOps 的最终目标。

6 个 DevOps 安全最佳实践

以下是帮助您在整个软件开发生命周期中实现持续安全的六大 DevOps 安全最佳实践:

1. 脆弱性评估与管理

尽管漏洞扫描是 DevOps 生态系统中的常见做法,但许多企业仍在对少数实例进行漏洞评估,并没有真正融入 DevOps 生命周期。DevSecOps 团队必须部署一个系统,该系统可以扫描、识别和解决 SDLC 中的漏洞,并确保将安全代码推送到部署中。渗透测试和其他攻击机制可以帮助团队的每个成员识别和解决各自工作领域的安全风险。此外,安全自动化工具可以帮助团队持续运行测试和监控漏洞,从而轻松确保 DevOps 安全。

2. 风险评估

风险评估必须在项目的初始阶段进行,以确保项目的安全设计质量。评估提供了项目风险的整体图景,其中涉及技术风险和影响整体业务的风险。

3.威胁建模

企业需要在 DevOps 软件开发生命周期中采用威胁建模。在威胁建模中,安全团队通过网络攻击者的视角可视化整个管道过程,以找到最可能的攻击场景。它有助于识别与项目相关的技术漏洞、问题、威胁和潜在攻击媒介。然后根据威胁建模结果设置整个管道的安全控制。

4.配置管理

配置管理是推动 DevSecOps 成功的关键因素之一。即使是轻微的配置错误也会对 DevOps 工作流造成不利影响。因此,考虑到 DevOps 的速度,团队必须尽快识别并修复配置错误。事实上,应该对所有代码库和服务器进行持续的配置扫描,以确保错误配置在被注入更大的代码库之前得到解决。

5.特权访问管理

监视和控制访问,尤其是特权用户访问,是保护 DevOps 堆栈的关键。任何未经授权访问特权帐户凭证都可能导致供应链攻击。因此,为了解决这个问题,企业必须执行最小特权原则,只为员工提供完成其工作角色和职责所需的访问权限。这大大减少了内部或外部攻击者利用访问权限的范围。

例如,限制开发人员访问他们工作不需要的某些系统容器,同时仍然启用编码、构建、测试和管理应用程序组件所需的权限。此外,如果工程师不需要 root 访问权限,则只提供普通用户访问权限。

定期监控和审核所有特权用户日志和活动以跟踪任何可疑活动也很重要。

6. 保密管理

在 DevOps 生态系统中,团队使用各种工具来自动化软件供应、配置管理和应用程序部署。而这些功能都需要保密管理。这对于 DevOps 管道安全至关重要,因为即使在生产环境中,开发人员也经常不经意地存储帐户凭证、应用程序编程接口 (API) 令牌、安全外壳 (SSH) 密钥和加密密钥等机密信息。这是一个潜在的陷阱,因为恶意行为者可以轻松收集这些秘密并破坏整个 IT 基础设施。因此,机密管理对于隐藏或删除这些嵌入式凭据至关重要。

优先考虑 DevOps 安全的主要好处

简而言之,DevOps Security 使企业能够更快地交付更安全的软件。它有助于在开发的早期识别和解决安全问题,以便更轻松、更快速且修复成本更低。DevSecOps 的其他一些有形优势包括:

传统发展问题

  • 手动、重复性任务。
  • 部署所需的时间从几天到几周不等。
  • 人为干预会导致不一致和错误。
  • 经常停机。
  • 团队在孤岛中工作,导致延迟、缓慢的发布。
  • 在开发周期的后期阶段执行的安全测试。
  • 合规性没有得到解决。
  • 安全工程师全权负责安全,这让他们的负担很重。

DevSecOps 价值主张

  • 自动配置和软件部署。
  • 部署时间只需几分钟。
  • 连续和自动化的流程推动整个 DevOps 周期的一致性。
  • 停机时间尽可能短。
  • 团队之间的持续协作,带来高速、高质量的交付成果。
  • 早期的自动化测试是使用左移方法进行的。
  • 安全审计、监控和通知系统是自动化的,使团队能够展示持续的合规性。

安全是开发、IT 运营和安全团队的共同责任。

最佳 DevOps 安全工具

DevOps 安全工具有助于在 DevOps 工作流程中实施安全最佳实践,而不会影响产品交付速度。然而,鉴于市场上有大量开源和基于订阅的 DevSecOps 工具,选择最适合您的业务目标的正确工具集是一项艰巨的任务。为了让您更轻松,我们列出了可帮助您取得 DevSecOps 成功的最佳 DevOps 安全工具:

  • Aqua Security是一个云原生应用程序安全平台,可保护您的应用程序从开发到生产,无论它们是在虚拟机、云、容器还是无服务器平台上运行。该工具有助于集成漏洞管理、云安全配置扫描、Kubernetes 安全态势管理、预生产恶意软件检测和动态威胁分析,以实现完整的端到端 DevSecOps 安全性。
  • Checkmarx 是最全面的应用程序安全平台,涵盖软件开发生命周期每个阶段的代码。该工具有助于静态应用程序安全测试 (SAST)、软件组合分析 (SCA)、API 安全性、动态应用程序安全性测试 (DAST)、基础架构即代码 (IaC) 安全性和容器安全性。除了这些产品之外,Checkmarx 还提供 AWS 和 Gitlab 集成。
  • Contrast Security 是一个统一的 DevOps 安全平台,使您能够在整个应用程序开发管道中移动安全代码。该平台为 SAST、IAST、RAST、SCA 和漏洞扫描等提供解决方案。
  • IriusRisk是最强大、可扩展和协作的自动化威胁建模平台之一,旨在使 DevSecOps 团队能够将安全性转移到左侧并构建一个设计安全的平台。该平台的主要优势包括自动化引擎、对策建议以及与问题跟踪器的集成。
  • Snyk 是最好的 DevOps 安全平台之一,旨在保护您编写的代码,避免开源易受攻击的依赖项,保护您的容器映像,并修复基础架构中的错误配置即代码。由于该平台由行业领先的安全情报研究提供支持,它使团队能够在发现漏洞后立即找到并修复漏洞。
  • SonarQube 是一个 DevOps 安全平台,它使所有开发人员能够编写更清洁、更安全的代码。该平台通过根据数以千计的 SCA(静态代码分析)规则检查代码来提高代码质量和安全性。SonarQube 涵盖约 29 种编程语言,支持多语言项目。
  • Acunetix 是一种 DevOps 安全工具,可自动执行应用程序安全测试。凭借包含 7000 多个已记录漏洞的数据库,该工具几乎可以在任何地方运行扫描,包括单页应用程序 (SPA)、使用 JavaScript 和 HTML5 构建的脚本密集型站点、密码保护区和多级表单,以查找漏洞让你处于危险之中。

担心采购上述工具的成本高昂?

以下是“开源”DevSecOps 安全工具列表:

  • Alerta
  • Brakeman
  • ShiftLeft
  • StackStrom
  • OWASP Threat Dragon
  • BDD-Security
  • Chef InSpec
  • Veracode
  • WhiteSource
  • ThreatModeler
  • Fossa

常见问题:DevOps 安全

1. 是否有任何工具可以帮助在 DevOps 环境中实现安全性?

是的,市场上有许多 DevSecOps 工具可以帮助您在 DevOps 环境中实现安全性。然而,选择适合您的 DevOps 架构的正确工具集并不容易。因此,为了帮助您选择最佳工具,我们精选了一份最佳 DevOps 安全工具列表(在上一节中),帮助您跨 DevOps 管道无缝集成安全性。

2. 传统安全和 DevOps 安全有什么区别?

传统的安全工具和实践并不是为了跟上 DevOps 所需的快速变化而设计的。此外,在测试/部署和操作阶段还考虑了安全性。这种方法通常会导致应用程序发布和截止日期的延迟,因为在开发的后期阶段会检测到安全故障。

另一方面,DevOps Security 旨在将安全性集成到整个应用程序开发生命周期中。安全性转移到开发生命周期的提升阶段,以便在早期开发阶段检测并解决安全漏洞。这种方法有助于更快地交付高质量的软件。

3. 哪些自动化测试工具最适合 DevOps?

一些最适合 DevOps 的自动化测试工具是:

  • SpotBugs
  • Anchore
  • Brakeman
  • Clair
  • Aqua
  • Sonatype Nexus
  • Twistlock
  • Checkmarx
  • WhiteHat Security
  • OWASP
  • Dependency-Check