APP下载

基于DevSecOps的关键信息基础设施软件开发策略研究

2024-12-31王琦

中国新通信 2024年12期
关键词:软件开发网络安全

摘要:近年来,DevSecOps软件开发思想受到广泛关注,许多企业在软件系统开发流程中采用DevSevOps理念来指导软件开发工作。通过分析关键信息基础设施软件系统的机密性、保密性和可用性等核心安全需求,并深入讨论关键信息基础设施的系统特性与挑战,展示出DevSecOps软件开发思想在指导关键信息基础设施领域软件开发的积极意义。

关键词:关键信息基础设施;DevSecOps;网络安全;软件开发

近年来,随着国家网络空间战略的深入推进,关键信息基础设施支撑着国家重要行业和领域内的核心系统,其系统及数据的保密性、完整性和可用性是重要保护目标。在软件的开发、维护过程中,如何融入更高效的安全保障机制成为当前重要研究问题。2012年,Gartner提出DevSecOps软件开发设计概念,将安全因素整合到软件开发和运维生命周期的各个环节。在DevSecOps理念中,软件开发、安全和运维协同工作,在软件需求设计初期将安全性纳入其中考虑,并贯穿软件开发生命周期的各个阶段,以实现更高的软件安全性。本文将探讨基于DevSecOps的关键信息基础设施软件开发中的安全策略,为系统开发团队提供一种实用的安全开发指导方法,提高关键信息基础设施的安全性和可靠性。

一、关键信息基础设施的安全需求与挑战

关键信息基础设施软件开发作为软件开发工程的一个特殊细分领域,其核心原则和基本步骤与传统的软件开发流程相似,包括需求分析、设计、编程、测试和维护等步骤。其独特之处在于特别强调了系统保密性、完整性和可用性以及系统维护管理人员的严格管理等。关键信息基础设施的软件系统开发需要将系统及数据安全性作为首要的设计目标,从设计阶段开始,进行威胁建模和风险评估,以确定系统的安全需求并制定安全策略;开发阶段需要遵循安全编码实践,减少安全漏洞;测试阶段需要进行全面的安全测试,检测并修复任何潜在的安全问题;部署和运维阶段需要实现严密的安全控制,包括访问控制、安全监控和事件响应等。对关键信息基础设施安全建立多层次保护技术体系[1],包括所有接触系统的人员进行严格的管理,这包括开发、测试和运维团队以及任何可能接触到系统的第三方供应商等。

(一)安全需求

1.人员安全防范意识缺失

在关键信息基础设施的软件生命周期中,有开发、测试和运维人员以及第三方供应商能够近距离接触系统。这些人员角色各自承担不同的职责,并对系统的安全性有直接的影响。为增强系统的安全性,通过增强标准化的顶层设计,加强系统接触人员背景审查的基础上,加强人员安全法治教育工作,增强人员的安全防范意识,并明确安全管理职责[2]。

2.安全编码需求

关键信息基础设施对系统的安全性和健壮性有着极高的要求。任何对系统安全性的威胁都可能导致重大的负面影响。因此,采用安全的开发实践至关重要。如果采用不安全的开发方法,比如没有进行足够的输入验证、使用了已知存在漏洞的第三方库、没有按照最小权限原则进行访问控制等,一旦遭到破坏或数据泄露,会造成严重后果。

3.安全合规需求

关键信息基础设施的安全合规需求包括网络安全等级保护要求和数据安全保护要求。这意味着所有处理敏感数据的过程,包括数据存储、传输和处理,都需要在安全的环境中进行。例如,在数据存储时,需要使用加密技术保护数据,防止被非法访问或篡改。

4.安全监测与审计需求

涉密系统的安全监测和审计是两个关键过程,确保系统符合既定设计的安全需求。通过持续安全监测和分析,帮助识别系统的潜在安全隐患,从而提高涉密系统的安全性。

(二)安全挑战

在传统软件安全领域中,软件缺陷问题由来已久。不安全的开发方法和缺乏专业技能培训的开发人员,对软件的安全运行带来各类潜藏的风险和隐患[3-5]。通过合理地规划软件需求设计和安全编码策略(如图1所示),能够在开发设计阶段早期及时发现风险,大幅度减少修复软件漏洞的成本,并增强网络关键设备的安全审查力度[6]。

1.高级持续性威胁(APT)

由于关键信息基础设施承担着重要行业和领域核心信息系统的高安全性要求,使其成为高级持续性威胁的重点攻击目标。通过隐蔽、潜伏的网络攻击技术,能够对关键信息基础设施系统造成长期、难以检测且危害巨大的风险隐患。如俄乌爆发冲突以来,乌克兰的境外部门、内政部和能源部等70多个政府网站遭受网络攻击,导致大部分网站瘫痪。随后,乌克兰重要军事、政府、教育和金融等关键信息基础设施部门再次遭受大规模网络攻击,被迫临时切断互联网。

2.供应链安全

软件系统运行依赖多个供应商提供的软、硬件设备和技术。如果在供应链其中某个环节插入隐蔽的恶意代码,例如硬件的底层代码、软件第三方库等,在构造条件得以触发的情况下,便可以达到攻击目的。近年来,多次大型网络攻防演练活动中都暴露出网络设备厂商、办公软件供应商等存在严重的安全漏洞问题,缓解软件供应链问题刻不容缓。如2023年3月,安全研究人员发现互联网语音协议交换机厂商IPBX开发的VoIP桌面客户端因供应链攻击导致用户系统信息被非法收集并窃取大量数据,造成了严重的敏感数据泄露事件。

二、DevSecOps软件开发模型

DevSecOps概念最初从DevOps(软件开发和运维)中演化而来,强调将系统安全性融入DevOps流程,通过软件生命周期中持续集成和交付流程作为核心,采用自动化的安全测试和反馈机制,突出持续性的安全监控、检测和营造安全培训文化建设等特点,得到业内广泛关注和实践。

(一)DevSecOps主要优势

DevSecOps本质上是一种软件开发指导思想,提倡将安全性融入软件开发和运维流程,其主要优势在于将软件系统的安全性提前纳入软件开发需求设计阶段,降低大量修复成本和风险,并通过持续的安全监控和改进,自动化的工具和流程实时监控、检测网络攻击行为。

(二)DevSecOps最佳实践

在实现DevSecOps框架过程中有一些可以参考的策略和方法如下:将安全左移在软件需求和设计阶段,通过威胁建模方法识别潜在安全风险,并设计安全防范措施。结合使用自动化安全测试工具,包括静态代码安全测试工具(SAST)和动态应用安全测试工具(DAST),进行代码审查和安全监控。进行持续性监控,以确保软件安全性能。

三、基于DevSecOps实践系统软件开发策略

DevSecOps软件开发模型凭借其快速迭代、持续交付/持续集成(CI/CD)和安全性等特点(如图2所示),能够将安全需求融入整个软件生命周期中,从而进一步提高软件开发的效率和系统的安全性。在前期分析调研软件需求之后,对引用库、第三方代码等依赖环境进行隔离和安全扫描,然后才将其导入开发环境或专用的私有仓库中,以进行软件开发工作。在这个过程中,结合DevSecOps的实践对于指导系统的软件开发工作具有积极的意义[7-9]。

(一)软件生命周期风险管理

在关键信息基础设施软件系统的生命周期管理中,保密性、机密性和可用性的需求推动了DevSecOps发展。通过将开发、安全和运维工作无缝结合,提供了一种策略和方法框架,以确保软件开发和设计过程中的全面安全性。在这个背景下,威胁建模和风险应对措施成为关键,它们为保证系统安全性提供了重要的保障。微软STRIDE威胁建模方法为开发人员提供了一个有效的工具,用于从各种不同的角度识别和理解可能会影响系统的各种威胁、攻击和漏洞情况。通过欺骗性、篡改性、否认性、信息泄露、权限提升和权限升级等六大类别,为安全风险的全面识别和应对提供了框架。通过STRIDE方法,开发人员可以在软件设计和开发过程中建立风险应对策略,这不仅可以帮助他们预防可能的安全问题,也能提高对已经发生问题的快速响应能力。

(二)建立标准化流程

关键信息基础设施软件系统的开发过程与传统软件开发过程相比,主要在开发方法和技术上有所不同。在关键信息基础设施系统的开发中,需求往往更加明确和严格,同时对数据的标准格式和处理流程也有更高的要求。这些系统通常涉及关键的业务流程和服务,因此安全性、可靠性和稳定性是设计和实施过程中的首要考虑因素。此外,这些系统可能需要遵循特定的合规性标准,并在开发过程中考虑到业务连续性和灾难恢复计划。具体而言,关键信息基础设施系统的开发需求往往基于具体的业务场景和严格的安全规定,而这些通常在开发工作启动前就已被确切定义。因此,对开发团队来说,充分理解并严格满足这些预设需求是至关重要的。为此,组织通常会采取一系列措施:通过建立标准化的开发流程、对开发人员进行必要的前期培训、推行统一的开发规范,并明确数据处理规则、安全协议、编码标准以及项目流程,确保整个开发过程符合既定的标准和规范[10]。

(三)引入自动化工具

为了提高软件交付效率并确保更高的安全性,开发团队在软件发布和测试环节中引入了静态安全测试(SAST)和动态安全测试(DAST)这两种关键的自动化测试工具。SAST工具在不需要运行代码的情况下进行分析,通常应用于编码阶段和集成阶段,这有助于在开发早期就识别出潜在的代码安全漏洞。而DAST工具则在应用程序的运行时执行测试,以发现可能在代码实际运行中出现的安全缺陷。结合使用这两种工具,不仅能够显著增强软件的整体安全性,还能减少依赖人工审查的工作量,从而提升效率。DevSecOps推崇持续交付和持续集成的方法,这些方法支撑了软件的快速迭代与发布。在遵循这一模式的软件开发过程中,新的代码更改被频繁地推送到主代码库,并随之进行构建和测试。这个过程确保了代码更改在合并到主分支之前能够得到即时的验证。一旦代码通过了所有必要的自动化测试,它便可以被自动或手动部署到生产环境中,这使得软件可以迅速地向用户交付并进行修复。

(四)加强安全管理要求

在关键信息基础设施系统的运维管理中,人员安全管理职责占据了非常核心的地位。系统管理员需要实施一系列的策略和程序以维护和增强系统的安全性。这涉及主动防御和检测预警机制的落实,风险识别和安全评估工作的开展,以及定期的网络安全培训和教育活动工作。其中,落实主动防御和检测预警机制,针对潜在的安全威胁和攻击,提前部署必要的防御措施和预警系统,以便在系统受到攻击或存在安全威胁时能够及时发现并采取相应的应对措施。定期开展风险识别和安全评估工作,对系统可能面临的风险进行持续评估,监控系统的运行状态,并根据需要动态调整安全策略。

总的来说,运维管理工作在系统安全性维护中发挥着重要的作用。实施主动防御和检测预警机制,开展风险识别和安全评估工作,以及举办网络安全培训和教育活动,可以有效地提高系统的安全性,保护关键信息基础设施系统免受安全威胁和攻击。

四、案例分析

根据公开资料显示,2019年美国国防部(DoD)创新实验室创建了基于DevSecops方法的统一平台“Platform One”项目,利用现代化的软件开发技术帮助各部门更快速更安全地开发部署软件系统。主要组件包括以下三部分:

(一)DevSecops工作流

DevSecops工作流指一种软件开发和部署的标准化过程,将安全性集成到软件开发运维流程中,包括从软件设计、开发测试到部署监控和维护的整个软件生命周期。

(二)安全集成

Platform One平台的安全集成组件主要用来将各类安全工具和安全规范要求整合到开发和运维阶段,以满足组织机构的安全需求。例如,通过集成安全扫描工具自动执行安全扫描和测试,并通过持续监控和响应机制以检测安全事件。

(三)软件工厂

软件工厂提供了一套预配置的DevSecops工具和服务环境,为开发团队提供各类软件工具来快速启动新项目,并通过标准化的工具和平台极大地提高了软件开发效率,同时能够辅助及时发现、阻止安全事件的发生。2023年,美国政府公布了《国家网络安全战略实施计划》,确立了“以攻为守”的网络安全理念,建立可防御、有韧性、符合美国价值观的数字生态系统愿景,奠定了保卫关键信息基础设施是国家网络安全战略的核心目标。这一举措同样对我国完善自身网络安全建设、管理方向和思路的发展具有很强的借鉴作用。

五、结束语

关键信息基础设施的保护工作,需要以关键业务为核心整体防控,以风险管理为导向动态防护,以信息共享为基础协防联动。本文通过DevSecOps软件开发模型为关键信息基础设施运营者提供了开展网络安全保护工作的指引和依据,对关键信息基础设施系统软件的安全开发、测试和运维工作起到了积极推动作用。

作者单位:王琦 上海万达信息系统有限公司

参考文献

[1] 郭启全,张海霞.关键信息基础设施安全保护技术体系[J].信息网络安全,2020,20(11):1-9.

[2] 姚相振,王惠莅.关键信息基础设施安全标准化现状及思考[J].中国信息安全,2021(09):36-37.

[3] 孔令泊,陈洁武.关键信息基础设施安全防护研究[J].信息网络安全,2020(S01):10-13.

[4] 徐杨子凡,兰少鹏.关键信息基础设施监测评估策略[J].信息技术与网络安全,2019,38(6):21-25.

[5] 崔聪聪.网络关键信息基础设施范围研究[J].东北师大学报:哲学社会科学版,2017(04):121-125.

[6] 肖鹏.关键信息基础设施保护策略探究[J].产业与科技论坛,2021,20(11):215-216.

[7] 包莉娜,刘蓓,闫桂勋,等.关键信息基础设施保护水平评价指标体系研究[J].信息安全研究,2019(06):507-513.

[8] 高焕新,高永前.关键信息基础设施安全保护运营措施分析与建议[J].信息技术与网络安全,2018,37(5):37-40.

[9] 赵昌志,刘玉岭,陶源,等.关键信息基础设施安全监测预警技术探析[J].中国信息安全,2022(09):44-47.

[10]毕婷,陈雪鸿,杨帅锋.关键信息基础设施保护工作思考[J].中国信息安全,2019(06):92-94.

猜你喜欢

软件开发网络安全
网络安全知多少?
网络安全
网络安全人才培养应“实战化”
上网时如何注意网络安全?
信息安全环境下的计算机软件开发研究
计算机软件开发中的分层技术运用
建模技术在软件开发中的应用
软件开发中数据库设计理论的实践
核电厂定期试验管理软件开发
FPGA软件开发过程中编码规范的作用