DevOps 已演变为 DevSecOps
发布时间:2020-03-10 17:20来源: 网络整理2020年2月19日,北京—Micro Focus今日发布,随着企业安全意识的不断提升,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手工测试,服务虚拟化,网络虚拟化等实现持续测试。
步骤三,自动部署和发布