通过 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开发模式 第三讲- ...
随机推荐
- hdu2030java
汉字统计 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissio ...
- NDK开发之JNIEnv参数详解
即使我们Java层的函数没有参数,原生方法还是自带了两个参数,其中第一个参数就是JNIEnv. 如下: native方法: public native String stringFromC(); pu ...
- oracle合并查询
1). Union 该操作符用于取得两个结果集的并集.当使用该操作符时,会自动去掉结果集中重复行. 2).union all 该操作符与union相似,但是它不会取消重复行,而且不会排序. 3). I ...
- JS实现图片宽高的等比缩放
关于图片宽高的等比缩放,其实需求就是让图片自适应父容器的宽高,并且是等比缩放图片,使图片不变形. 例如,需要实现如下的效果: 要实现上面的效果,需要知道图片的宽高,父容器的宽高,然后计算缩放后的宽高. ...
- 我的插件のinput文本框实现宽度自适应
先来最后结果:DEMO 介绍一下如何让一个文本框的宽度能够随着文本框中的内容的宽度增长而增长,也就是能够实现宽度自适应效果. 代码实例如下: <!DOCTYPE html> <htm ...
- EventBus3 简单使用及注意点
博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 # EventBus3 简介 EventBus Android 发布/订阅事件总线,可简化 Activities, Fr ...
- Java SpringMvc+hibernate架构中,调用Oracle中的sp,传递数组参数
一.问题 我们调用数据,大都是可以直接获取表中的数据,或者用复杂点的sql语句组成的.但是,有时候,当这样达不到我们要的全部数据的时候,这时,我们就用到了存储过程[sp],如果sp需要参数是数组的话, ...
- oracle的学习 第二节:创建数据表
学习内容: A.创建数据库和表空间 B.创建用户和分配权限 C.创建数据表 一.创建数据库和表空间 (一)SQL语言的基本概念 1.概念 高级的结构化查询语言:沟通数据库服务器和客户的重要桥梁. PL ...
- ios 字符串替换方法
string=[string stringByReplacingOccurrencesOfString:@"-"withString:@"/"];
- 【转】发布iOS应用程序到苹果APP STORE完整流程
原文: http://www.cnblogs.com/JuneWang/p/3850859.html 可以为每个app上传5张截图,虽然至少需要上传一张,可能很少有人会只上传一张图片.另外,你还需要分 ...