美国国防部(DoD)软件工厂是一个体现更广泛的开发安全运维(DevSecOps)运动原则和工具的软件开发流水线,并进行了一些特定的调整,以适应国防部和国防工业基地(DIB)面临的威胁环境。其是过去二十年美国政府核心关注的、更广泛的软件和网络安全现代化趋势的一部分。“建立软件工厂”是《美国国防部开发安全运维指南》(DoD DevSecOps Playbook)中明确命名的策略之一。
美国国防部软件工厂的目标旨在创建一个生态系统,能够持续交付满足最终用户需求的安全软件,同时确保网络韧性(这是国防部的一个口号,强调从一次性安全合规向持续安全合规的转变)。换言之,其目标是利用软件安全任务的自动化,来实现开发安全运维运动的承诺,即提高软件开发速度。
在一个软件支撑军事行动各个方面的时代,软件工厂不仅仅是一种选择,更是一种必需。自第一个知名的软件工厂“凯塞尔运行”(Kessel Run)部门成立以来,美军武装部队所有六个军种都已认识到软件工厂的价值。
“平台一号”(Platform One)是国防部软件工厂的典型示例。由美国空军运营,提供了一个全面的软件开发工具和服务组合。因以下托管服务而众所周知:用于源代码托管和协作开发的“仓库一号”(Repo One)、用于端到端开发安全运维CI/CD平台的“大爆炸”(Big Bang),以及用于集中化容器存储(即容器注册表)的“铁库”(Iron Bank)。这些服务率先证明了开发安全运维的原则可以整合到关键任务系统中,同时仍能保持最高级别的安全性以保护最机密的信息。
美国防部(DoD)内部已建立约22个软件工厂,但目前尚无任何一个直接用于支持作战司令部。作战司令部需要软件工厂来提升各军种特定系统和应用之间的互操作性与韧性。通过赋予作战指挥官快速开发、部署和调整软件解决方案的能力,他们能够增强联合作战中的互操作性与韧性。
软件工厂并非万能,而是一种力量倍增器。建立支持作战司令部的软件工厂将增强内部开发能力以及对作战人员需求的响应速度。它们还能促进创新、实验文化和快速原型设计,从而推动整个组织的持续改进。为作战司令部增设软件工厂,为国防部传统的软件采办与开发模式提供了一种可行的替代方案。
软件工厂的独特之处:
美国防部《软件现代化实施计划》所总结:“软件工厂是人员、工具和流程的集合,使团队能够通过部署软件来满足特定终端用户群体的需求,从而实现持续交付价值,同时支持持续发布和尖端网络韧性。”软件工厂提供了从传统瀑布式开发模式的范式转变,后者曾是导致软件开发和采办挑战的因素之一。软件工厂将敏捷开发、开发安全运维(DevSecOps)和协作环境融为一体。
敏捷开发是商业组织中现代软件开发的主流方法。敏捷开发是一种灵活、迭代的软件开发方式,相比国防部传统的瀑布式软件开发流程,它能更早地向用户交付可用的能力。敏捷开发的一个关键原则是通过早期和持续交付有价值的软件来满足客户。快速的迭代开发周期确保软件能够随着作战人员的作战需求和不断变化的威胁而同步演进。虽然存在其他开发模型,但敏捷开发方法已被反复证明最能适应客户需求的变化,从而确保国防部能更有效地应对变化的威胁。
开发安全运维(DevSecOps)即开发、安全和运营,是一个在信息技术整个生命周期内培养安全共责的框架。DevSecOps建立在开发运维(DevOps)方法之上,通过自动化在开发的最早阶段就实施安全措施。DevSecOps有助于保护关键任务系统免受网络攻击,并促进零信任(zero trust)架构在整个国防部的采用。
软件工厂有助于推动协作环境的采用,使开发人员、操作人员和作战人员并肩工作,培养共同负责的文化,并确保解决方案能直接应对前线挑战。这种协作环境通常依赖于基于云的基础设施和可扩展平台,以实现快速部署和更新。用户的直接反馈确保交付的软件符合书面要求的意图。
软件工厂为作战指挥官提供的优势:
为作战指挥官配备软件工厂,可使作战司令部拥有一个专注于改进软件交付以满足其需求的组织。为各军种提供支持的软件工厂通常并不专注于解决作战司令部的问题或向其交付软件。决定对哪些软件进行现代化改造以具备云原生互操作性和韧性,由各军种负责管理。作战司令部软件工厂将与各军种软件工厂协作,推动将作战司令部所依赖的特定应用迁移至云端。为支持作战司令部而建立的软件工厂,应首先专注于增强联合互操作性和任务韧性,以确保为作战人员提供正确的工具。
增强各军种系统间的互操作性,使作战司令部能够连接不同的数据源和系统,从而提高任务效能。作战司令部的软件开发人员和数据科学家可以创建定制应用程序和仪表板来处理作战数据。这些工具将通过解锁那些通常被锁在各军种专用数据库或PowerPoint文件中的数据,来改善决策制定和态势感知。创建定制化解决方案的能力也能应对特定战区或作战行动中作战司令部面临的独特问题。拥有一支专注于作战司令部优先事项的内部团队,可促进跨不同平台和系统的无缝集成,从而推动各军种与盟友之间的协作与联合作战。
增强任务韧性的一个方面,要求作战司令部明确其完成任务所依赖的应用程序和系统,并制定冗余备份计划。这通常是说易行难。作战司令部通常并不拥有或运营关键任务系统,因此对这些系统存在哪些网络和数据依赖关系的可视性有限。虽然各军种会将部队的作战控制权移交给作战司令部使用,但对于信息技术资源而言,情况往往并非如此。各军种拥有并运营这些关键任务系统,并代表作战司令部承担风险。拥有软件工厂使得作战司令部能够与各军种软件工厂合作,推动将任务依赖系统迁移到云基础设施。这将提高各军种和作战司令部对信息技术依赖关系的认识,同时获得云原生的优势,从而提升韧性。
在当今快速演变的战场上,软件已成为现代军事行动的支柱。国防部认识到其关键性,在其《软件现代化战略》中强调了软件工厂的重要性。这些敏捷开发中心带来的好处,超越了各军种单独的云采用计划和传统采办项目。国防部门须建立支持作战指挥官的软件工厂,以增强作战前沿指挥官的互操作性和韧性。通过在作战前沿投资敏捷开发能力,国防部能够为其指挥官提供所需的工具和敏捷性。
作者:布莱恩·希金斯是大西洋理事会2024年度空军研究员。
关键词:云、软件开发、敏捷、韧性、互操作性