技术见解 / Secure Software Supply Chain

安全的软件供应链:快速且安全地将软件交付到生产环境

实施安全的软件供应链是保护软件开发和提升您的 DevSecOps 能力不可或缺的一部分。


什么是安全的软件供应链?

安全的软件供应链是一组流程,用于安全、可靠且一致地将软件交付到生产环境(包括其所有依赖关系),并定期更新源代码和定义的平台监管控制。

安全的软件供应链可确保您的代码及其依赖关系值得信赖、合规、已更新且发布就绪,并确保定期进行扫描以检测、报告和消除漏洞。它通过跨供应链中的所有系统一致地执行一组定义的策略,可以防止未经授权的访问,并禁止运行未签名的软件包。




安全的软件供应链最佳实践

要开发安全的软件供应链,您需要一套工具和实践,使您的企业能够以您可接受的风险级别从源代码到生产环境持续高速且高质量交付软件包(包括第一方和第三方软件包)。

VMware 已经确定了安全软件开发的五个重点领域,这些领域将允许企业将安全策略集成到敏捷软件开发中,并帮助缓解软件供应链攻击。

  1. 1. 保护应用源代码

    在软件开发生命周期中,您最能控制的供应链部分是您编写的代码。如果包含不安全的代码,则安全的供应链无从谈起。通过实施确保此代码安全的策略,您可以帮助缓解供应链攻击。

    最佳实践

    • 提高开发人员能力,以支持生产环境中的安全就绪状态。
    • 对代码存储库使用访问控制机制,以阻止未经授权和不必要的代码更改。
    • 充分利用代码检查流程/静态代码访问,这样有助于在开发期间捕获常见的编程错误,以免它们有机会成为可能被利用的生产错误。
    • 进行对等代码审查,以防止由于错误而引入的无意漏洞,以及由恶意攻击者故意和恶意引入的漏洞。
    • 加强机密管理,从而使源代码不受敏感凭证和配置的影响,以防止在代码泄露、逆向工程或以其他方式公开时受到攻击。
    • 使用静态应用安全性测试 (SAST),这是一种软件安全性测试类型,可以扫描源代码并搜索与已知弱编码实践相匹配的编码模式。
    • 采用源成分分析 (SCA) 来验证应用中使用的第三方库、框架和组件。

    成果

    • 应用开发人员能够通过遵循安全最佳实践来开发高质量代码。
    • 向存储库提交的所有内容都是值得信赖的。
    • 源代码不包含机密或其他敏感环境数据。
  2. 2. 应用依赖关系管理

    很少有开发人员在创建其内部版本时是从头开始的。为了节省时间和加快开发速度,他们可以使用来自开放源代码和其他目录的预构建代码。这意味着,在检查和修补生产环境中应用的漏洞时,软件必须考虑最终内部版本中集成的预构建代码段。

    为了确保安全的软件设计和开发,您的团队需要能够清楚地直观显示其应用依赖关系。定期扫描以确保所有依赖库都得到修补,并且没有常见漏洞和威胁暴露 (CVE),这样会减少依赖关系被利用的机会。

    最佳实践

    • 将依赖关系漏洞扫描与定期扫描相结合,以确保所有依赖库都已得到修补且没有常见漏洞和威胁暴露。
    • 及时修补易受攻击的依赖关系。
    • 使用依赖关系绑定 (lockfiles),将依赖关系绑定到经过验证的特定版本,以帮助防止出现由于无意中更新依赖关系而引入新漏洞的情况。
    • 考虑使用从大量开发人员使用的知名和信誉良好的来源获得的依赖关系,与来自不太值得信赖的位置的依赖关系相比,这些依赖关系受到入侵的可能性更低。
    • 确切地知道哪些依赖关系正在使用中。现代应用通常由数十个或更多的依赖关系组成,从而在深层依赖关系分层结构中引入漏洞,进而形成攻击载体。
    • 思考何时采用新的依赖关系。在某些情况下,可以通过避免采用大的依赖关系来最大程度减少攻击面。
    • 评估对现有依赖关系的更新。作为日常维护的一部分,软件供应商通常从集中式服务器发布更新。能够渗透到供应商网络中的攻击者可以将恶意软件插入看似常规的产品更新中。
    • 实行风险管理。

    成果

    • 开发人员可以自信地验证第三方和内部依赖关系的来源。
    • 应用团队可以完全直观显示其应用的软件物料清单
    • 相关方可以快速确定哪些应用可能容易受到常见漏洞和威胁暴露的攻击。
    • 确保对应用依赖关系漏洞进行低摩擦修补。
  3. 3. 保护 CI/CD 系统

    监管是控制您的持续集成和持续交付 (CI/CD) 流水线的重要组成部分。确保系统使用权限到位并正确配置可以帮助保护您的软件供应链。这包括所需的最低权限。

    最佳实践

    • 对 CI/CD 流水线实施访问控制,并通过消除侧门来防止流水线中的旁路。
    • 使用具有所需的最低权限的系统帐户在自动化管道中运行作业、任务和脚本。
    • 使用基于拉取的部署,而不是基于推送的部署。当使用基于推送的部署时,必须在目标系统之外公开凭证。在基于拉取的部署场景中,目标系统的凭证不会被公开,但控制器会从 Git 存储库 (GitOps) 或映像仓库同步状态更改。
    • 对 CI/CD 流水线使用凭证管理,并确保您的部署工具需要凭证才能进入您最敏感的环境。
    • 生成并存储构建日志和审核记录。

    成果

    • 开发人员可以自信地验证第三方和内部依赖关系的来源。
    • 应用团队可以完全直观显示其应用的软件物料清单。
    • 相关方可以快速确定哪些应用可能容易受到常见漏洞和威胁暴露的攻击。
    • 对应用依赖关系漏洞进行低摩擦修补。
  4. 4. 保护映像构建和镜像仓库

    使容器映像变得更安全的目标是减少镜像仓库中的高 CVE 数量,并缩短修复 CVE 所需的目标时间。我们可以通过确保基础映像受信任和已签名,并对映像存储库强制实施控制策略来实现这一点。

    最佳实践

    • 为映像存储库实施控制/访问策略。使用中的所有映像引用均应经过自动 CI 流程的授权和验证,从而使访问范围降至最低。
    • 利用一小组经批准的基础映像来减少攻击面。确保基础映像已签名并进行版本控制。确定可信的基础映像,使其可用于构建。
    • 将应用映像和/或工件存储在安全的位置。对映像存储库强制实施控制策略,并确保映像在存储在镜像仓库中时已签名。
    • 更新漏洞数据库,并将其用于定期安排的映像漏洞扫描。
    • 利用一个安全的映像构建,该映像构建可重现,并使用一组已知的仅受信任的工件生成。确保在构建过程中引入后门是困难的,并且可被检测到。
    • 跟踪被提升到生产环境中的工件,以确保用于测试的相同工件被提升到更高的环境中。审核记录可用。
    • 充分利用映像标记。
    • 验证认证。

    成果

    • 应用映像经过签名以保证其完整性。
    • 映像存储在安全的镜像仓库中。
    • 对所部署的工件充满信心。
    • 映像漏洞的可见性。
    • 可操作的映像漏洞修复。
  5. 5. 安全运行时

    实施零信任体系架构、安全信息和事件管理 (SIEM) 以及高级威胁检测工具,可为您的应用和应用开发平台创建更安全的环境。将可观察性集成到平台运维中将帮助您监控运行时并了解应用的运行情况。

    最佳实践

    • 安全工程师应该能够通过关联多个事件来检测攻击,可能是通过 SIEM 工具和其他威胁检测工具来完成,这些工具可以识别指示攻击者已获得访问权限的特定事件。
    • 使用运行时漏洞扫描来帮助您识别 Kubernetes 环境中的漏洞。
    • 实施安全网络连接,以防止攻击者访问一个网络,然后轻松遍历到其他受信任的网络和环境。通过安全通信保护传输中的数据对于防止攻击者嗅探网络流量具有至关重要的意义。
    • 使用安全的多租户策略。采用命名空间和集群策略进行隔离,添加基于角色的访问控制。
    • 正确配置您的开发环境,这样您就可以避免通常由配置错误的基础架构导致的安全泄露。
    • 使用机密管理来确保将机密安全地分发给需要它们的应用和服务,并且这些应用和服务只能访问它们正常运行所需的机密。这有助于减少潜在泄露的攻击面和影响。
    • 实施安全的环境访问,以确保只有授权用户才能访问您的环境。可能需要多种不同的安全控制措施来确保实现这一点。未经授权的访问应该是可检测到的。
    • 利用动态应用安全测试(“黑盒”测试)来查找正在运行的应用中的安全漏洞和弱点。
    • 防止未签名的映像在生产环境中运行。
    • 缩短修复供应链中安全漏洞所需的时间。
    • 使用一致的策略实施。确定、应用和测试安全策略、日志审核、合规策略和网络策略。
      • 一致地实施安全和访问策略。
      • 系统拒绝运行任何不是来自安全软件供应链的代码。
      • 编写 (rego) 策略很容易出错,因此您应该谨慎制定它们并进行适当的测试。
      • 测试集成的策略以确保不会发生冲突。

    成果

    • 确保隔离工作负载,以便邻近工作负载不会影响、访问或干扰它们。
    • 不同服务之间通过网络进行通信是安全可靠的。
    • 开发人员可以快速直观显示应用 CVE。
    • 提供新颖、最新且安全的工作负载托管平台。


安全软件供应链的重要性

在过去的几年里,随着供应链攻击日益增多,对软件开发的关注变得越来越突出。最近,Executive Order on Improving the Nation’s Cybersecurity 概述了适用于企业的供应链最佳安全实践。它旨在解决供应链入侵问题,在这种入侵中,攻击者获得开发流程的访问权,并将恶意软件插入源代码中。该恶意软件能够在已发布的软件中向下游传播,并允许攻击者从运行该应用的企业中窃取信息。该《行政命令》推动美国的企业开发更为安全的软件供应链,并避免可能破坏关键基础架构功能的入侵行为。

了解和缓解生产途径中的漏洞有助于降低业务投资风险,为快速向终端用户提供更安全的软件提供机会,并为部署代码的开发人员消除摩擦。Tanzu 提供了安全工具解决方案,该解决方案具有开发人员喜欢使用的运维人员定义的护栏功能。Tanzu Labs 专家与您携手合作,为您的企业建立流程,从而在开发团队与安全团队之间提供更紧密的协作。我们将通过我们成熟的解决方案帮助您改进您的 DevSecOps 实践,让您开始在安全的平台上保护您的应用开发流程,在该平台上,您可以构建可为您的业务提供价值的创意。