摘要
DevSecOps一词最早由Gartner在2012年提出,并从2017年开始逐渐成为热门词汇。DevSecOps可以理解为将安全性融入到DevOps的过程中,在整个开发和运维的过程中将安全作为一项重要的考虑因素,最终实现应用整个生命周期内的安全性。利用DevSecOps实现安全自动化可以在提高研发运维效率的同时增强应用的安全性。
一. DevSecOps定义
1、安全运维演进
瀑布模型
1970年温斯顿·罗伊斯(Winston Royce)提出了著名的“瀑布模型”。将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作。
敏捷开发
从1990年代开始逐渐引起广泛关注的一种新型软件开发方法,以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
DevOps
开发、运维和质量保障的结合,加快了应用程序的构建和部署。DevOps带动了持续集成/持续交付(CI / CD)的发展,围绕自动化工具链开发应用程序。尽管实现了很多流程的自动化,但对安全关注始终无法满足当下的攻击和网络威胁趋势。
DevSecOps
主张将安全性融入到CI / CD过程中,消减手动测试和配置的过程,并支持持续部署。安全团队将参与到整个开发生命周期中,与开发、测试和质量保证团队紧密合作。
2、DevSecOps宣言
DevSecOps网站[1]首页列举了九大宣言,对DevSecOps的重点内容和实施价值进行了高度概括。分别是:
向前一步胜过说不(Leaning in over Always Saying “No”)
数据和安全科学胜过害怕、不确定和疑虑(Data & Security Science over Fear, Uncertainty and Doubt)
开放性的贡献和合作胜过单纯安全需求(Open Contribution & Collaboration over Security-Only Requirements)
基于API的安全服务消费胜过强制性的安全控制和文档管控(Consumable Security Services with APIs over Mandated Security Controls & Paperwork)
业务驱动的安全评分胜过图章安全审核(Business Driven Security Scores over Rubber Stamp Security)
红蓝对抗测试胜过依赖扫描和理论上的漏洞发现(Red & Blue Team Exploit Testing over Relying on Scans & Theoretical Vulnerabilities)
24x7主动安全监控胜过安全事件通告后的应急响应(24x7 Proactive Security Monitoring over Reacting after being Informed of an Incident)
共享威胁情报胜过保留信息在自己手里(Shared Threat Intelligence over Keeping Info to Ourselves)
合规运营胜过剪贴板和检查清单(Compliance Operations over Clipboards & Checklists)
3、DevSecOps现状
DevSecOps自概念提出以来,大多数情况还是在理论和尝试阶段,缺少相关的成熟实践案例。美国威胁检测公司 Threat Stack[2]针对北美大公司和中小企业的 200 多名安全、开发和运营专业人员发起了问卷调查。调查结果显示:
62% 的受访者表示DevOps 不利于在产品中实现安全技术部署
57% 的受访者认为 DevOps 阻碍了安全最佳实践
85% 的受访组织认为缩小 DevOps 和安全之间的差距应当成为企业的重大目标
62% 的开发者和运营专家认为把安全融入 DevOps 已成为重中之重
二. DevSecOps模型及最佳实践
DevSecOps可以图形化[3]地描绘为,以连续监测和分析为核心,从开发到运行的快速、敏捷迭代。安全的服务交付始于开发,最有效的DevSecOps程序是从开发过程的最初阶段开始,并在其整个生命周期中一直随着流水线推进。
Gartner在2016年9月发布的DevSecOps: How to Seamlessly Integrate Security Into DevOps[4]报告中对该模型进行了详细的分析,并列举了对应的最佳实践:
1. 安全控制必须尽可能的可编程和自动化
安全架构师的目标是在整个生命周期内自动合并安全控制,而不需要手动配置,安全控制必须通过DevOps工具链实现自动化。
2. 使用IAM和基于角色的访问控制来提供职责分离
随着越来越新的服务或产品在DevSecOps迭代流程中重复循环,审计员和安全架构师希望在服务开发和部署阶段明确区分各成员的职责。成员的权限范围可以通过与现有的IAM系统链接来管理,并为开发阶段、上线生产前阶段和上线生产阶段定义不同的角色。
3. 为所有应用程序实施简单的风险威胁模型分析
基于风险的基本威胁建模应该是DevSecOps的标准最佳实践。从为开发人员提供一个简单的问卷开始,可以从较高的层次评估服务或产品的风险,应该通过开发人员培训、交流以及加强基本编码中的安全最佳实践来开展。
4. 扫描自定义代码、应用程序和API
开发人员在编写代码时,建议在集成开发环境(IDE)中采用轻量级的代码安全扫描工具来快速检查安全性,类似拼写检查器的功能。自动扫描工具和安全测试软件应该是持续集成(CI) 测试工具链的一部分。
5. 扫描开源软件
许多开发人员从Maven和GitHub等开源软件库下载程序代码。开发人员经常(有意或无意地)下载已知的易受攻击的开源组件和框架。
6. 扫描漏洞和配置信息
在创建和集成包时,应该扫描所有映像(虚拟机VMs、Amazon主机映像、容器和类似的组件)的全部内容,以发现操作系统、应用程序平台和商业软件的漏洞。还应根据行业最佳实践标准的安全配置加固指引,对操作系统和应用程序平台的配置开展扫描。
7. 将 Scripts/Recipes/Templates/Layers 视为敏感代码
在“基础设施即代码”构想下,基础设施是可编程的,并可进行自动化部署和配置。因此,安全基础设施亦可编程。如果基础架构代码化,则安全编码原则也必须应用在用于实现配置自动化的 Scripts/Recipes/Templates/Layers ,以及必须保证基础设施代码库的安全。
8. 评估系统完整性,并确保配置安全
关于DevSecOps在生产环境中的最佳实践,首先必须确保正在加载和运行的系统及服务确实是预先期望的版本,并且配置无误。
9. 在生产系统上使用白名单,包括容器的实现方式
为了防止入侵,使用白名单来控制服务器上允许运行的可执行程序。默认情况下,所有显示为要执行的软件都会被阻止。白名单可以扩展到包括网络连接、用户访问、管理员访问、文件系统访问、中间件/PaaS访问和流程等各层次。
10. 若已遭入侵攻击[5],应全面监控,构建快速检测和响应
在一个先进且有针对性攻击的场景里,完美的预防是不可能的。必须不断监视工作负载和服务,以发现可能表明已遭入侵攻击的异常行为。
11. 锁定生产基础设施和服务
安全架构师应该与IT运营锁定服务器和基础设施,仅允许使用自动化工具进行变更。
12. 如果使用容器,请确认并使用安全限制
容器共享同一个操作系统平台。在操作系统Kernel层面的成功入侵将对所有其中的容器造成影响。因此我们建议仅仅在相同信任水平层面才使用容器。
13. 底线
DevSecOps旨在快速开发的DevOps环境中,应在整个支持IT服务的开发和交付过程中自动、透明地运用安全检查和控制。安全的服务交付从开发开始,最有效的DevSecOps程序从开发过程中最早的点开始,并跟踪整个生命周期。从长远来看,尽可能将安全控制自动化,以减少配置不当、错误和管理不善发生的可能性。
三. DevSecOps关注重点
1、DevSecOps与传统安全的区别
DevSecOps强调安全是整个IT团队(包括开发、运维及安全团队)每个人的责任;将安全从多个点渗透到整个开发和运维的生命周期中,且将安全性考量提前至开发环节前;并将安全以可编程、自动化的方式融入到开发和交付IT服务过程中[6]。
2、DevSecOps实践九大关键因素
Comcast的DevSecOps转型专家Larry Maccherone提出了实践DevSecOps的九大关键因素[7]:
Maccherone DevSecOps九大实践要素,其中“黄带”代表如何应对常见威胁来维护客户与品牌,“绿带”代表软件、网络、系统管理员、数据库管理员。
其中的安全意识、团队工作协议、同业人员评审和安全评估均在强调企业组织对于DevSecOps的接受程度,以及整个企业文化中的安全意识,是影响DevSecOps实践的重要因素。技术能让安全融入DevOps过程,但人、流程以及文化才能推动DevSecOps常态化。
四. DevSecOps落地实施
1、实施重点
在实施DevSecOps前,需要考虑业务、技术、流程和人员等因素的影响。实施过程中需尤其重视以下模块:
2、实施流程
一般来说,DevSecOps实施流程可分为计划、开发、建设、测试、安全、部署、操作、监控、扩展和适应10个阶段[8]。
1) 计划 (Planning)
DevSecOps专业人员创建基于特征的描述,关注点应在安全性和性能,验收测试标准,应用程序接口和功能以及威胁防御模型上。
2) 开发 (Developing)
对于开发人员来说,重要的是将可用的资源集中起来进行指导,为他们自己和团队中的其他人提供可靠的实践和代码审查系统。
3) 建设 (Building)
自动化构建工具可以极大地提升整个 DevSecOps 实现过程。这些工具可确保测试驱动开发、发布工件生成标准,并通过统计代码分析,得以利用工具从而确保设计方面与团队的编码和安全标准保持一致。
4) 测试 (Testing)
DevSecOps中的自动化测试应该利用强大的测试实践,包括前端、后端、API、数据库和被动安全测试。
5) 安全 (Securing)
传统的测试方法适用于DevSecOps。未来的趋势是在开发过程的后期识别问题。
通过先进的实践,如安全扫描,我们会更加意识到问题,并可以确定威胁是否严重。
6) 部署 (Deploying)
自动化供应和部署可以快速跟踪开发过程,同时使其更加一致。基础设施即代码工具可以执行上述审计属性和配置,并确保跨IT基础设施的安全配置。
7) 操作 (Operating)
定期监控和升级是运营团队的重要任务。DevSecOps团队确保部署基础设施即代码工具,以快速有效的方式更新和保护整个组织的基础设施,而不允许人为错误。操作人员必须特别注意零日漏洞。
8) 监控 (Monitoring)
持续关注安全方面的违规行为可以使一个组织免于被入侵。因此,有必要实现一个强大的实时连续监控程序,跟踪系统性能,并在早期阶段识别任何漏洞。
9) 扩展 (Scaling)
组织不再花费大量的时间和金钱去维护大型数据中心。随着虚拟化解决方案和云的引入,组织可以扩展其IT基础设施,或者在出现威胁时替换它,这是传统数据中心无法做到的。
10) 适应 (Adapting)
持续改进是任何组织成长的关键。一个组织将只能在它的实践(包括DevSecOps实践——安全性、功能性和性能)中实现它所期望的增长。因此,一个组织应该适应持续改进和外部变化趋势。
3、实施难点
1. 安全性被认为是DevOps灵活性的一种阻碍
许多开发和运营人员,甚至高层领导者认为,速度是开发业务中的首要目标,安全考量与高速开发会互相掣肘。由于效率是大多数企业对开发人员绩效考核的一项重要指标,在实施DevOps的过程中往往会选择牺牲安全性。
2. 企业安全意识缺乏
安全意识的培养势在必行。当业务领导者拥有很强的安全意识,DevSecOps的可行性就会大大提升;当开发和运营人员也开始重视安全,DevSecOps才会变得真正得以实施。
3. 开发和运营人员安全技能不足
当今的安全基础架构仍是基于硬件的设计,往往落后于软件定义和可编程的概念,所以,用一种自动化的方式将安全控制融合到DevOps 过程就存在挑战。
4. 业务流程与安全工具的对接困难
多数安全专业人士并不熟悉DevOps方面使用的工具,尤其是在与其互操作性和自动化的功能方面。
4、实施益处
虽然实施DevSecOps过程困难重重,但是其带来的益处显而易见,概述如下[9]。
5、实施建议
Gartner在2017年10月提出了成功实施DevSecOps的十条建议[10]。将安全整合到DevOps的DevSecOps会带来思维方式、流程和技术的整体变化。
小结
简单来说,DevSecOps,就是将可以自动化、重复性的安全工作融入到研发体系中。网络安全已成为各企业的重点关注对象,而融合安全和高速开发运维的DevSecOps终将引领未来的安全开发趋势。
参考文献:
1.BRIDGING THE GAP BETWEEN SECOPS INTENT AND REALITY; Threat Stack. http://repo.mtons.com/content/6822
2. DevSecOps Whitepaper, DevSecCon.com
3. DevOps – Eight Simple Steps to Get It Right, Gartner. https://www.gartner.com/en/documents/3810916/devops-eight-simple-steps-to-get-it-right
4. DevSecOps: How to Seamlessly Integrate Security Into DevOps, Gartner. https://www.gartner.com/en/documents/3463417/devsecops-how-to-seamlessly-integrate-security-into-devo
5. DevSecOps的落地实施建议,DevOps国际峰会2018北京站
6. DevSecOps最佳实践探索,OWASP
7. DevSecOps 三问:Why? What? How? , DevOps时代. https://mp.weixin.qq.com/s/k4z48Ky8vekOZHhuBhZzUg
8. 浅谈DevSecOps,TS研发Q空间. https://mp.weixin.qq.com/s/aGYIjaN5dLOM8zjL1uUxQQ
9. http://www.devsecops.org/
10.10 Things to Get Right for Successful DevSecOps, Gartner. https://www.gartner.com/en/documents/3811369
11. 什么是 DevSecOps ?, https://www.cnblogs.com/qwangxiao/p/10816995.html
12. DevSecOps现状:理论叫得响,实践待发展, http://repo.mtons.com/content/6822
13. DevSecOps Implementation Process and Road Map – Security at Every Step, https://devops.com/devsecops-implementation-process-and-road-map-security-at-every-step/
声明:本文来自ATLAS Academy,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。