镜视界 | DevSecOps CI/CD 管道中数字供应链安全的集成策略

镜视界 | DevSecOps CI/CD 管道中数字供应链安全的集成策略

首页角色扮演镜解视界更新时间:2024-11-25

目录

  1. 前言
  2. 数字供应链(DSC)的定义
  3. 数字供应链安全的重点内容和风险因素
  4. CI/CD管道的安全目标和可信实体
  5. 将数字供应链安全集成到CI/CD管道中
  6. 结语

本文字数:7715,阅读时长:19分钟

1.前言

在敏捷开发的模式下,应用程序会通过 DevSecOps 的敏捷软件开发生命周期(SDLC)范式进行开发,并使用持续集成/持续交付(CI/CD)管道的流程。

然而,在软件开发、供应和交付运营中涉及的数字应用、基础设施服务和供应链数据等各种活动中(这些活动共同构成了数字供应链),攻击者可以通过链条中的一个薄弱点,隐蔽地引入攻击载体,对数字供应链进行攻击,继而引发广泛的后果。
日前,美国国家标准与技术研究院(NIST)发布了特别出版物《DevSecOps CI/CD 管道中软件供应链安全的集成策略》 (NIST SP 800-204D)。本文基于此文,引发深入讨论,阐述如何将数字供应链安全保证措施集成到 CI/CD 管道中以保护底层活动完整性,从而确保将源代码带入构建、测试、打包和部署阶段的 CI/CD 管道活动不会受到损害。

2.数字供应链(DSC)的定义

从高层次上讲,软件供应链是创建、转换和评估软件制品质量和政策一致性的一系列步骤的集合。这些步骤通常由使用和消费制品以生成新制品的不同参与者执行。例如,构建步骤使用一系列人工制品作为工具(如编译器和链接器),并消耗人工制品(如源代码)来生成新的人工制品(如编译后的二进制文件)。

我们以往所熟知的软件供应链主要是基于传统软件供应关系,通过资源和开发供应过程将软件产品从供方传递给需方的网链系统。而这样的定义如今已无法适应数字经济时代由于技术创新带来的产品服务、基础设施和供应链数据等供应对象及供应关系的新变化。

因此,数字供应链的概念在软件供应链的基础上应运而生。数字供应链主要由数字应用、基础设施服务、供应链数据三大主要供应对象组成。其中,数字应用包括软件、Web、固件等,基础设施服务是指云服务、IT托管服务等,而供应链数据则包括基础数据和敏感信息。

相较于软件供应链,数字供应链更加明确的指出了基础设施服务和供应链数据代表产品服务在供应活动中发挥的建设作用及重要性。

图 1:在数字供应链步骤中不同要素之间的互动

数字供应链中的大多数活动都会对最终的应用产品产生重大影响。因此,每项活动的安全性对于最终结果的安全性至关重要。在供应链引入、生产链、供应链交付运营的过程中,构建、打包和交付数字应用,重新打包和容器化以及基础设施服务安全上线运营等都是数字供应链的核心范畴。

3.数字供应链安全:重点内容和风险因素

3.1数字供应链安全的重点内容

在研国标《信息安全技术 软件供应链安全要求》明确了软件供应链安全保护目标,分别包括提升软件产品或服务中断供应等风险管理能力、提升供应活动引入的技术安全风险管理能力、提升软件供应链数据安全风险管理能力。

数字供应链安全作为软件供应链安全概念的关键演进,其发展建立在软件供应链安全的基础之上。相比之下,数字供应链安全涉及的保护范围更广,保护对象的内涵更加丰富。数字供应链安全的重点内容包括:

3.2数字供应链中的风险因素

数字供应链的风险因素通常包括:

4.CI/CD 管道的安全目标和可信实体

在 CI/CD 流水线中,实现数字供应链安全的一个共同方法是生成尽可能多的出处数据。出处数据与系统或系统组件的起源、开发、所有权、位置和更改的时间顺序相关联,包括促成这些更改或修改的人员和流程。在生成这些数据的同时,还应有相应的机制对其进行验证、认证,并在决策中加以利用。

总的来说,CI/CD 管道需要添加的安全保证措施:

4.1 CI/CD 管道的安全目标

在 CI/CD 管道中应用数字供应链安全措施或实践有两个安全目标:

  1. 积极维护 CI/CD 管道和构建流程。
  2. 确保上游源头和制品(如资源库)的完整性。

最常见的方法是在 CI/CD 平台中引入安全措施,使开发人员能够自动构建、测试和部署管道。

4.2 CI/CD 管道中需要信任的实体

零信任架构侧重于保护硬件系统(如服务器)、服务和应用程序本身等资源。访问这些资产的实体(如用户、服务和其他服务器)本身并不值得信任,零信任架构的主要目标就是建立这种信任。

在 CI/CD 管道中,信任的范围要大得多,至少需要以下步骤:

表 1 举例说明了典型的 CI/CD 管道中需要信任的实体。

表1:信任实体

制品

存储库

第一方代码 - 内部

软件配置管理

第三方代码 - 开放源代码或商业代码

语言、容器等人工制品管理器

构建

构建存储库

打包

软件包存储库

5.将数字供应链安全集成到 CI/CD 管道中

为了概述将数字供应链安全集成到 CI/CD 管道中的策略,有必要了解这两种管道各自的流水线及其总体安全目标。

激活 CI/CD 管道的前提条件如下:

5.1 确保 CI 管道中工作流的安全

CI 管道中的流水线主要包括构建操作、版本库(公共和私有)的PULL/PUSH操作、软件更新和代码提交。

用于安全运行 CI 管道的框架的总体安全目标包括:

5.1.1. 安全构建

要在构建过程中获得数字供应链安全保证,需要完成以下任务:

1)指定有关构建的政策,包括使用安全隔离平台执行构建并加固构建服务器,用于执行构建的工具,以及执行构建流程的开发人员所需的身份验证/授权。

2)使用代理和策略执行引擎等技术执行这些构建策略。

3)确保同时生成构建认证的证据,以证明在软件交付期间符合安全构建流程。

促进第二项任务的常用技术是将 CI 工具的命令与收集证据的功能结合起来,并最终创建整个 SDLC 的证据跟踪。
第一类证据来自构建系统本身,它应能确认所使用的工具或流程处于隔离环境中。这可提供内部操作保证。第二类应收集的证据包括最终构建制品、文件、库和制品中使用的其他材料以及所有事件的哈希值。然后,由构建框架中不受开发人员控制的可信组件使用数字证书对其进行签名,以创建证书,从而为消费者提供软件质量的可验证证明,使他们能够独立于软件生产者验证该制品的质量,从而为消费者提供保证。在这种情况下,制品是由一系列 CI 流程步骤生成的构建。

就 "同时生成证据 "而言,生成的证据应由信任度或隔离度高于构建本身的流程启用,以防止篡改。此类证据的生成需要在构建过程中进行验证。

构建阶段的认证由以下部分组成:

与签名证据(即认证)及其存储相关的要求必须包括以下内容:

上述能力共同提供了以下保证:

5.1.2. 对存储库进行安全的PULL-PUSH操作

数字供应链的第一项安全任务是确保源代码开发实践的安全。在 CI/CD 管道中,代码驻留在资源库中,由授权开发人员使用 PULL 操作提取、修改,然后使用 PUSH 操作放回资源库。要授权这些 PULL-PUSH 操作,需要两种形式的检查:

1.授权执行PULL-PUSH操作的开发人员所需的验证类型。开发人员提出的请求必须与其角色(如应用程序更新者、软件包管理器)相符。拥有 "合并审批 "权限的开发人员不能审批自己的合并。

2.代码库中代码的完整性值得信赖,可用于进一步更新。

确保代码库中代码可信度的各种机制包括:

评估和加强SCM系统安全态势的功能,无论有无策略(如开放策略代理(OPA)),都能评估SCM账户的安全设置,并生成一份包含可行建议的状态报告。

通过检测和修复错误配置、安全漏洞和合规问题,提高源代码管理系统安全性的功能。

5.1.3. 软件更新期间证据生成的完整性

软件更新过程通常由一类特殊的软件开发工具执行,该工具被称为软件更新系统。对软件更新系统的威胁主要针对证据生成过程,目的是清除更新的痕迹,阻止确定更新是否合法的能力。

软件更新系统有多种类型:

软件更新系统的主要任务是识别给定更新票据所需的文件,并下载可信文件。乍一看,建立下载文件信任所需的唯一检查似乎就是通过验证与单个文件或软件包相关的元数据上的签名来执行的各种完整性和真实性检查。然而,签名生成过程本身可能会受到已知攻击的影响,因此软件更新系统需要许多与签名生成和验证相关的其他安全措施。

为软件更新系统提供安全保障的不断发展的框架已将其中许多必要的安全措施纳入其规范,并为未来的规范规定了其他一些措施。框架是一套库、文件格式和实用程序,可用于确保新的和现有软件更新系统的安全。框架应通过要求在执行签名操作前满足第 5.1.1 节中定义的策略来保护签名操作。以下是该框架的部分共识目标:

5.1.4 安全代码提交

代码提交前应进行适当形式的测试,且必须满足以下要求:

代码提交过程中所需的一种安全措施是防止秘密进入提交的代码。这可以通过对秘密的扫描操作来实现,并产生一种称为推送保护的功能。该功能应满足以下要求:

5.2 确保CD管道中流水线的安全

以下是 CD 过程中应使用的一些尽职调查措施。这些措施可以通过定义允许或不允许部署制品的验证策略来实施。

5.2.1 安全 CD 管道 - GitOps

在 CI/CD 管道中,构建期间和之后的所有操作都涉及与中央存储库(如 Bitbucket、GitHub 和 GitLab)的交互。这些操作统称为 GitOps,是一种由 Argo CD 和 Flux 等开源工具推动的自动化部署流程。GitOps 既适用于基础架构代码,也适用于应用代码,包括提交、分叉、拉取和推送请求。

GitOps 的使用范围如下:

在部署前创建配置数据、捕获与特定版本相关的所有数据、运行期间修改软件以及执行监控操作时,应执行以下数字供应链安全任务:

5.3 数字供应链CI/CD 管道安全 - 实施策略

如果不对基本业务流程和运营成本造成巨大影响,所有企业都不可能一次性实施数字供应链安全所需的大量步骤。相反,提供数字供应链安全性的解决方案可大致分为以下几类:

  1. 通过与 DevSecOps 管道中每项任务相关的功能确保数字供应链安全的解决方案:
  1. 通过数字签名和证书确保完整性和出处的解决方案。
  2. 确保运行代码为最新代码的策略,如制定 "构建期限"(即超过一定期限的代码不应启动),以尽可能使生产过程与软件源中已提交的代码保持一致。
  3. 保护 CI/CD 客户端,防止恶意代码窃取机密信息(如专有源代码、签名密钥、云凭证)、读取可能包含机密的环境变量,或将数据外泄到敌方控制的远程端点。
6.结语

敏捷开发模式下数字应用以最快速度将代码从IDE或Git存储库带到生产环境中,加快了部署速度,提升了业务系统上线的效率,但数字供应链的安全性对于敏捷开发范式来说同样至关重要,任何一个漏洞都可能造成巨大的损失。

作为数字供应链安全开拓者和DevSecOps敏捷安全领导者,悬镜将持续带来专业的国际化视角,与行业同仁及用户共同探讨交流,践行网络安全社会责任,守护中国数字供应链安全。

参考链接:https://csrc.nist.gov/pubs/sp/800/204/d/final

,
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved