DevSecOps是一种保护软件开发的安全理念,充分吸收了“敏捷(agile)”和“精益开发(lean startup)” 这两种主流软件开发方法的成功经验,使用人工智能和机器学习提升软件开发自动化水平。DevSecOps目前正在美国各军种中大规模推广应用。本文主要介绍美海军及海军陆战队的应用情况。
近日,美海军信息战中心(NIWC)大西洋分部首次向美海军陆战队提供了“开发、安全和运行”,即DevSecOps。DevSecOps是一种商业最优方法,它彻底改变了软件产业,近年来在美军事领域取得了较大进展。
图1 海军信息战中心大西洋分部的企业工程团队正在部署DevSecOps开发软件
1
DevSecOps概述
DevSecOps是一种保护软件开发的安全理念,其核心是将安全贯彻至整个业务周期的每一个环节(包括开发、安全、运维)。从广义上来说,DevSecOps意味着“更快地为客户提供价值”。它将程序员(Dev)与系统管理员(Ops)联系起来,同时将安全性(Sec)嵌入到开发的每个步骤中。
近年来,DevSecOps模型充分吸收了“敏捷(agile)”和“精益开发(lean startup)” 这两种主流软件开发方法的成功经验,两者因将传统的“瀑布(waterfall)”式“规划-设计-开发-测试-交付”缩减为“最小变量产品(MVP)”而闻名。“精益开发”不会耗费几年时间交付可能无法满足客户需求的产品,而是推广一种“快速失效”的方法,每周或每两周安排推出一次最小变量产品,让客户评分,以便开发人员不断改进。下图为美海军“敏捷”和DevSecOps概念示意图。
图2 美海军“敏捷”和DevSecOps概念
除了“敏捷”和“精益开发”法,自动化是DevSecOps环境中的一个关键驱动因素。通过使用人工智能和机器学习,DevSecOps的自动化服务可持续报告平台的功能健康状况,包括与赛博攻击、用户数量、停机和降级相关的关键指标。
2
美军推动DevSecOps发展
2018年5月,美空军Kessel Run实验室与国防创新小组成功将DevSecOps方法应用于软件开发,在4个月内实现一款简化版软件部署;此后,《空军快速采办活动指南》指出,“除非获得许可,否则所有新项目均采用敏捷软件开发”。
2019年1月,美国防部《2018财年作战试验鉴定报告》建议,采用DevSecOps等迭代递增式采办和鉴定方法,以数周甚至数日为周期快速形成软件原型,提高软件交付与部署能力。5月,国防部向国会提交国防创新委员会“软件采办与实践”报告,建议重构软件采购、开发、部署流程,并将软件开发作为单独的预算类别,以提高软件快速部署和持续迭代能力;依据该报告,国防部制定了临时软件采办框架。8月,国防部首席信息官发布《国防部体系开发安全运维基准设计》1.0版,推动全军应用敏捷的开源软件开发模式。随后,国防部立法提案请求国会在科研预算7个子类之后创建第8类预算,为软件开发提供明确的资金支持,并在2021财年启动8个软件试点项目单元,为期2年,范围涵盖软件全寿命周期。
3
OASIS——美国海军DevSecOps实验室
两年多前,美国空军开始接触DevSecOps,是第一个成功利用DevSecOps概念的军种。其成立的Kessel Run实验室在提高效率方面取得了巨大成功,并引起了国防部高层领导的注意。美海军也效仿了空军Kessel Run模式,NIWC远征战部门的远征企业系统和服务(E2S2)团队于一年多前创立了作战应用和服务创新站(OASIS),以支持美国海军陆战队负责计划和资源的副司令提出的改进企业软件开发的要求。2019年夏,E2S2实现了OASIS的初始运行能力,通过实施近30项自动化平台服务和9项自动化应用开发服务,巩固了NIWC大西洋分部DevSecOps的领导地位。这些覆盖从业务运营到战术系统的服务,可能将是国防部未来解决方案。OASIS近期通过了军方认证。
NIWC大西洋分部执行理事Peter C. Reddy表示,当前,工业界商业部门的属性已发生变化,例如物流公司实际上已是一家配备卡车的软件公司。海军部必须成为一家配备作战人员的软件公司,这是因为无数基于软件的战场任务可以立即受益于DevSecOps,这使得OASIS的未来与信息环境中的作战密切相关。
NIWC大西洋分部企业工程团队负责人Jeff Hays表示,软件工厂正在美国军事组织中涌现,但OASIS是独一无二的。OASIS不关注单一渠道或单一平台,而是给技术专家提供最新的主流工具以及多重选择。DevSecOps开发指导Tony Stafford认为,从多个维度来说,软件工厂的概念是为了减少解决方案提供团队和用户之间的摩擦,同时也最大限度地减少将工具交到作战人员手中的时间和步骤。这就是为什么OASIS被设计成海军企业的中心枢纽,负责发现并最大限度地减少低效工作。
4
DevSecOps优势
NIWC大西洋分部OASIS总监Erik Gardner表示,DevSecOps将用户反馈纳入流程中,负责搭建产品的程序员能够直接获取最终用户的想法。海军陆战队在开发未来战场工具方面有直接的发言权。
DevSecOps的另一个主要吸引力在于节约开支。NIWC大西洋分部企业工程和集成服务领域的技术专家Robert Neuman称,与过去单一的“瀑布”流程不同,如果一个MVP失败了,在资源方面不会产生巨大的影响,项目风险实际上降低了。“你可能会有一周时间倒退重来,但这不是什么大事。”
5
美国海军DevSecOps设计概念
美海军对于应用DevSecOps,提出了以下主旨:
先租再买,先买再建:仅开发海军部任务独一无二的定制能力;将DevSecOps能力作为一项专供本军种的数字核心服务交付并使用;加强软件工厂建设和工具网络铺设,并实现渠道的差异化和局部控制;与国防部企业DevSecOps参考设计保持一致;使舰队赛博司令部能够看见并持续控制交付物和目标环境;改变文化,实现敏捷式开发具有跨工厂互操作性,促进重复利用整合反馈环,并能自助访问生产数据和开发基线所有方面做到自动化,包括功能测试将所有项目视为“基础设施即代码(Infrastructure as Code)”6
美国海军及陆战队DevSecOps应用情况
海军陆战队业务运营支持服务(MCBOSS)是由OASIS团队开发的第一项DevSecOps能力。MCBOSS是一个多平台环境,包括PEGA、Appian、MarkLogic和Pivotal Cloud Foundry等服务。NIWC大西洋分部云工程师和DevSecOps负责人Jason Anderson指出,如果MCBOSS平台是汽车,那么ADTS团队的服务将是汽油、石油和电力。
海军还成立了一个名为应用、开发和测试服务(ADTS)的团队,大部分自动化测试和构建工作是由该团队完成,使DevSecOps得以在MCBOSS环境下运行,从而推动OASIS总体目标的实现。
在MCBOSS启动不久,海军陆战队就开始使用首个OASIS开发的应用程序——监察长(IG)案例行动管理程序,该程序提供了对监察长调查相关数据的实时跟踪。
最近,OASIS执行了一个海军创新科学与工程项目,以验证OASIS开发的美国海军陆战队应用程序与海军综合海上网络和企业服务(CANES)的互操作性。
软件开发高级科技经理Kathryn Murphy表示,正在继续与NIWC太平洋分部的同行合作,推动整个海军企业和国防部的DevSecOps解决方案。“在OASIS等项目上持续取得成功的关键在于让员工了解可用的软件工厂,并准备好成功使用它们。”
7
其他方面
将DevSecOps引入传统组织需要在文化和理念上进行相当大的转变。真正能实时解决实际问题的软件不仅需要强大的自动化能力,还需要良好的倾听技能。在DevSecOps文化中,最好是对20个有相同问题的人进行20次不同的采访,效果比阅读需求文档好。20人中可能有12人说的话与纸上的完全不同。每个视角都很重要。
DevSecOps方法的支持者表示,在现代战场上,快速变化的技术以闪电般的速度改变着局面,传统的采办流程根本无法将最新的软件设备投入现代战场。他们认为必须转换思维,改变不仅不可避免,而且必须持续进行。OASIS总监Erik Gardner认为,软件开发需要在实践和思维上进行彻底的文化转变,以加快解决作战人员的问题。“不仅仅是旧的流程和规定导致了更晚的交付时间,”他说。“而且目前技术领域的现状会把错误的东西交到作战人员手中。我们不能犯这样的错误。”