通过 DevOps 整合开发和应用安全管道
【编者按】作者 Aaron Volkmann 是 CERT Division 高级研究员,通过提出了一种集成安全系统到 CI/CD 的方法,让机构保持快速部署到生产环境能力的同时,也大幅度降低安全隐患,本文系 OneAPM 工程师整理。
DevOps 理念规定软件开发和运维团队之间需要加强沟通和协作,从而在软件开发和交付过程中实现更好的结果。而在这之后,信息安全团队同样应该集成到 DevOps 实践团队中。虽然在持续集成(CI)和持续交付(CD)过程中还未实现完整的自动化软件安全评估,本文主要介绍应如何将 DevOps 理念应用于安全评估,并集成 CI / CD。
及时和可持续
在一个新的软件项目的开发阶段,信息安全团队应该衡量新软件的安全风险,并在整个开发过程中进行安全评估。为确保快速开发和新功能部署,企业必须确保安全评估的频率,既要保证安全风险最小化,同时也要考虑安全团队有限资源的可持续性。
众所周知,自动化是 DevOps 的主要理念之一,但很多在指定应用上进行软件安全性评估的任务仍然是手动执行。出于这个原因,适当的应用安全性评估仍然是持续集成/持续交付开发管道界外。如果一个企业正在进行持续交付,那怎样才能保证部署到生产环境的软件没有安全风险?
虽然,程序中某些代码的变动,如程序接口(API)终端或更改验证,在迁移到生产之前,需要对此类变动进行手动安全评估。但其他类型的变化则不一定需要,如视觉风格改变。例如,如果在之前评估的基础上,只是修改了一些视觉样式,或者添加了一些不影响安全性的小功能,此时,再对应用安全性进行全面评估则意义不大。
所以,是否需要手动安全评估也取决于应用程序和所处理的数据类型。例如,一个内部应用完全不涉及任何敏感数据,如客户信息、商业秘密、PCI 或 HIPAA 敏感数据等,并且只能通过公司内部访问,这种应用不同于可能接触敏感数据的 Web 应用。由于需安全评估的应用数量和工作量巨大,应用安全团队并没有能力来手动评估每一个被部署到生产的变化。在应用负责人的帮助下,安全团队应该评估和编目企业的应用程序。该目录应包含每个应用程序的威胁模型、所接触数据的相对风险以及应用会如何被用户访问等信息。
软件的新功能在部署之前,相关部门必须进行安全评估。在最初的评估后,下一次全面安全评估只有在安全性配置文件更改后才可以进行。比如,改变身份验证或授权机制,或者添加一个新的外部系统集成。
开发持续集成管道应配备一种检测机制,可以在应用一旦发生变动且需要安全评估时及时做出响应。该机制是图1所示的安全控制器,它会在出现安全性敏感变动时通知信息安全团队,并进一步规划手动安全评估。在评估完成之前,自动部署到生产环境会被叫停。
图1:一个新的软件通知发送到安全控制器后,安全控制器会触发阻塞暂停应用生产部署,并通知安全部门需要手动安全评估。
评估完成后,信息安全系统会通知持续集成/持续交付系统可以继续部署当前应用程序,如图2所示。
图2:一旦安全团队完成了安全评估,安全控制器则释放对应用生产部署的控制。
如果应用中出现了一个不影响安全性的变化,则无需手动安全评估,生产部署不会被阻止,如图3所示。
图3:一个影响安全性的小变动不会改变应用程序的部署能力。
如果对应用程序产生了较大改动,则需要执行下一个安全扫描,生产部署会被阻塞,控制器通知安全团队进行安全评估,如图4所示。
图4:应用程序如有大的更改,则需要安全评估触发阻塞暂停生产部署,并通知安全团队需要手动安全评估。
评估完成后,控制器会释放阻塞。
集成一个安全控制器到开发持续集成和持续交付系统中,可以帮助企业自动存储上一个评估之后所有的代码变动。评估完成之后,所有的代码变动都会被跟踪。在安全事故中,可靠的日志会显示事件发生的顺序,能够帮助你更快更容易地调查和缓解安全性问题。在评估之后,所有部署的更改可以通过持续集成、部署和安全控制器系统可见。定位并解决应用程序中的安全漏洞可谓是「大海捞针」。但通过了解相应的变动,可以大大地缩小问题范围。
目前,完整的应用程序安全评估自动化尚未实现,所以人工评估仍然必要。通过集成安全系统到 DevOps 的 CI / CD 中进行跟踪安全评估,不仅可以提高软件发布过程中的安全性,还能简化安全事件响应,从而提高部署或交付过程中定位并解决问题的能力。
本文系国内 ITOM 行业领军企业 OneAPM 工程师编译整理。我们致力于帮助企业用户提供全栈式的性能管理以及 IT 运维管理服务,通过一个探针就能够完成日志分析、安全防护、APM 基础组件监控、集成报警以及大数据分析等功能。想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客
通过 DevOps 整合开发和应用安全管道的更多相关文章
- 秦俊:开放 DevOps 敏捷开发套件,助力开发者驰骋云端
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ DevOps可以让人工智能(AI).大数据(Bigdata).云计算(Cloud)更加高效地落地,越来越多的企业和团队在践行DevOps. ...
- 【DevOps敏捷开发动手实验】开源文档 v2015.2 stable 版发布
Team Foundation Server 2015 Update 2版本终于在2周前的//Build 2016大会上正式发布了,借这个东风,小编也完成了[DevOps敏捷开发动手实验]开源文档的第 ...
- 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...
- Java Web整合开发实战:基于Struts 2+Hibernate+Spring 目录
第1篇 Java Web开发基础第1章 Web的工作机制( 教学视频:31分钟) 1.1 理解Web的概念 1.1.1 Web的定义 1.1.2 Web的三个核心标准 1.2 C/S与B/S两种软件体 ...
- 使用Maven搭建Struts2+Spring3+Hibernate4的整合开发环境
做了三年多的JavaEE开发了,在平时的JavaEE开发中,为了能够用最快的速度开发项目,一般都会选择使用Struts2,SpringMVC,Spring,Hibernate,MyBatis这些开源框 ...
- Android NDK 和 OpenCV 整合开发总结(3)
Android NDK 和 OpenCV 整合开发总结(3) http://hujiaweibujidao.github.io/blog/2013/11/18/android-ndk-and-open ...
- 【转载】Ssh整合开发介绍和简单的登入案例实现
Ssh整合开发介绍和简单的登入案例实现 Ssh整合开发介绍和简单的登入案例实现 一 介绍: Ssh是strtus2-2.3.1.2+ spring-2.5.6+hibernate-3.6.8整合的开 ...
- 实战突击: Java Web项目整合开发(PDF)
实战突击: Java Web项目整合开发(PDF)
- 【课程分享】ASP.NET MVC5&微信公众平台整合开发实战(响应式布局、JQuery Mobile,Windows Azure、微信核心开发)
对这个课程有兴趣的,能够联系我QQ2748165793 基础知识储备 ASP.NET MVC 5基础(6讲) 第一讲-初识ASP.NET MVC并搭建整合开发环境 第二讲-深入MVC开发模式 第三讲- ...
随机推荐
- java final keyword
依据上下文环境,java的keywordfinal也存在着细微的差别,但通常指的是“这是无法改变的.”不想改变的理由由两种:一种是效率,还有一种是设计.因为两个原因相差非常远,所以关键子final可能 ...
- 在String中添加移动构造函数和移动赋值运算符
13.50 没有定义析构函数 #include<iostream> #include<string> #include<memory> #include<ut ...
- hadoop错误Operation category READ is not supported in state standby
报如下错误 解决方法: 方法一:(结果不起作用) 通过Shell命令方式,hadoop/bin/hdfs haadmin -failover --forceactive hadoop2 hadoop1 ...
- Eclipse Key Shortcuts for Greater Developers Productivity--reference
Posted by Ajitesh Kumar / In Java / June 6, 2014 http://vitalflux.com/eclipse-key-shortcuts-greater- ...
- windows 8 解决端口(COM和LPT)问题:Prolific USB-to-Serial Comm Port(COM4)驱动异常的问题
本来都正常的,一段时间后就不能用了,网上搜索了一圈,现记录下来,供大家参考 操作系统是win8 64位的 参考网址(http://blog.sina.com.cn/s/blog_92942dba010 ...
- Linux系统ifconfig命令找不到,centos ifconfig Command not found
centos ifconfig Command not found,Linux系统ifconfig命令找不到 >>>>>>>>>>>& ...
- Controller里写自己需要的Action,参数的名字必须和路由设置的参数名一致
Controller里写自己需要的Action,参数的名字必须和路由设置的参数名一致,如果参数不一致,传过去为null
- python基础知识六
博客园的博文对每篇博文的长度似乎做了限制 面向对象编程, 在程序何种,根据操作数据的函数或语句块来设计程序.这被成为面向过程的编程.还有一种把数据和功能结合起来,用称为对象的东西包裹起来组织组织程序的 ...
- Oracle 11g服务
成功安装Oracle 11g后,共有7个服务, 这七个服务的含义分别为: 1. Oracle ORCL VSS Writer Service: Oracle卷映射拷贝写入服务,VSS(Volume S ...
- C# 推送信息到APNs
iPhone消息推送机制实现与探讨 class Program { public static DateTime? Expiration { get; set; } ...