DevOps 已演变为 DevSecOps

随着企业安全意识的不断提升,DevOps已经演变为DevSecOps,可实现全管道管理,不仅为企业节约人力和时间成本,更使得项目推进更具有安全保障。安全性一直是软件交付管道的核心环节,只有对安全性给予足够的重视,才能最大程度地降低自身、业务以及客户的风险。

众所周知,软件安全漏洞可能会为企业带来灾难性的后果。有些漏洞可能会导致企业无法满足法律法规要求,因不合规付出高昂代价。因此企业有责任保护客户及其数据,以及企业自身数据和系统。若未能采取恰当的预防措施,企业的客户、业务以及安全便会受到威胁。

预防软件安全漏洞最好的方式是对软件进行测试,确认是否存在潜在漏洞,并在软件发布前修复这些漏洞。当今,大多数企业的安全测试只是事后补救,相关团队很少甚至不会将注意力投向生产环境。

DevOps 和安全性

在过去的几年里,DevOps 社区正逐渐培养起安全意识。DevOps 团队希望快速向客户交付价值,在此过程中无意间引入漏洞的可能性也随之增长。这一现状促使 DevOps 团队将安全测试纳入持续测试,从而提高各个团队共担安全责任的意识。

对于负责考量软件设计的团队成员,他们应当考虑设计过程中可能暴露的潜在安全漏洞与弱点。DevOps 团队应当为对每一个用户案例制定安全标准,并将其作为自动化持续测试周期的组成部分运用到测试当中。随着软件、软件的组件及配置进入部署管道,安全测试会持续运行,不论是在哪一阶段检测到任何漏洞,团队都会收到警告并且能够修复相关问题。随着测试的持续进行,团队将能精准识别那些引入漏洞的变更,并且可以快速进行修复。

软件部署完成后,团队会运行其他安全测试来监控生产中的软件,以确认是否存在因配置更改、软件更新和环境变化而招致的漏洞。

这种将安全性注入软件交付理念与流程的概念就是所谓的“DevSecOps”。开发人员、测试人员和运维人员共同组成了一个 DevOps 团队,因此他们必须共同负责从设计到开发再到投产这一全过程的软件安全。

如何将安全性整合到 DevOps

以下是一些实用的步骤,团队可以借助这些步骤将安全性注入 DevOps 管道,进而将其打造成 DevSecOps 管道。

步骤一,对开发人员和测试人员进行安全培训和项目规划

团队需要安全专业知识,但大部分企业却没有足够的安全人员可以配备到每一个 DevOps 团队。对开发人员和测试人员进行培训,培养其安全考量意识,使他们了解应当如何从安全性角度进行设计、编码、代码检查和测试。鼓励团队中的一到两名成员主动承担起安全捍卫者的角色,让其在团队中发挥更大作用,进而确保团队对安全性及监管合规性的密切关注。

注重安全性的团队应当考虑进行常规威胁建模会话。威胁建模需要我们以黑客思维考虑一切。让团队能够在应用程序及相关组件的设计阶段主动查找漏洞,全面考虑组件与组件之间应如何进行通信。这种方式能够有效揭露设计期间的架构漏洞。

团队也需要从项目的角度做好规划并依此管理好项目需求。落实优先级和资源分配,将决策下推到应用程序团队中进行开发构建。在编程和构建阶段,可以使用IDE开发工具实现代码编程;测试阶段,可以利用ALM/Octane从开发和测试的角度管理需求、管理开发、管理测试,从而推进开发测试。

步骤二,使用自动化安全测试工具

自动化安全测试的运行速度远胜于手动测试,并且兼具一致、可重复、可靠等优势,因此是持续测试的理想选择。持续测试流程通常会整合两款自动化应用程序安全测试工具:静态应用程序安全测试 (SAST) 工具可用于识别源代码中的漏洞;动态应用程序安全测试 (DAST) 工具则能在代码运行于测试环境时查找漏洞。

但需要注意的是,SAST 和 DAST 这两款工具在大型应用程序上的运行时间都比较长,而且会产生大量误报。这会导致企业分身乏术,难以识别和分析更为严重的问题。为了优化这些工具在持续测试中的使用,企业应当重点关注最近修改的代码区域并进行正确配置,从而避免因调查误报而浪费时间。

代码的迁入迁出代码库,可以迭代推进形成持续集成,使开发和测试快速交替。由ALM/Octane做管控持续集成,由Unified Functional Testing (UFT) 功能测试、Load Runner性能测试,Fortify安全测试,Mobile Center移动测试,Sprinter手工测试,服务虚拟化,网络虚拟化等实现持续测试。

步骤三,自动部署和发布

应用通过测试后,可通过混合云管理(Hybrid Cloud Mgt),自动部署(Deployment Automation)和发布控制(Release Control)等实现自动构建部署和发布。应用上线后可监控运维,如果运营过程中出现服务和变更,新的应用和新的变更可以同步回规划和计划阶段。

步骤四,生产环境不容忽视

生产系统中的代码和数据最易遭受攻击。这里是用户(以及黑客)可以实际访问的位置。对于此前尚未发现的漏洞,这里便是它们“浮出水面”的位置。您需要在部署更新时针对生产系统运行安全测试,同时在生产环境中定期执行测试,以应对配置变化与环境更新情况。需要注意的是,在生产环境中运行大量安全测试会拖慢系统速度,甚至可能导致系统暂停运作。因此请提前做好规划,让系统在发挥最大价值的同时,将中断的可能性降至最低。此外,还应考虑使用运行时应用程序安全保护 (RASP) 解决方案,实现实时识别和拦截恶意访问。

所有 DevOps 都应演变为 DevSecOps

DevSecOps 意味着从一开始便将安全性纳入考量,并且在整个软件交付管道内进行主动安全防护。

DevSecOps可以实现全管道管理,并支持瀑布、敏捷和混合模式,开放的架构可以支持商业和开源。流程的自动化和智能化,可实现跨项目或跨团队的协作,条件成熟更可触发后续流程,减少手工操作错误和人工疏忽造成的损失,监督细节执行,形成实时报告分析,不仅为企业节约人力和时间成本,更使得项目推进更具有安全保障。在近几年 DevOps 的发展过程中,随着安全意识的提升,相信在不久的将来,所有企业都会意识到二者密不可分的联系。DevOps 和 DevSecOps 完全是一回事。不论称其为 DevSecOps,还是简单地称为 DevOps,安全性都是软件交付管道的核心环节。只有对安全性给予足够的重视,才能最大程度地降低自身、业务以及客户的风险。

关于 Micro Focus:Micro Focus 致力于通过数字转型的四个核心领域,帮助组织完善业务运营,实现业务转型:企业 DevOps、混合 IT 管理、预测分析以及安全、风险和管控。我们的软件将以客户为中心的创新作为导向,以此提供构建、运营、保护和分析企业所需的关键工具。这些工具的设计可以弥合现有技术和新兴技术之间的差距,让企业能够在数字化转型的竞争中以更低的风险加速自身创新。