DevSecOps背后的思想仅是对DevOps的扩展。就像开发人员以瀑布式开发风格将项目扔给运营团队以使其在生产中工作一样,即使使用“ DevOps”,安全性也与应用程序开发或运营完全分开。

DevSecOps一词通常与“向左移动安全性”结合使用。这意味着应用程序的开发人员应在设计时考虑安全因素,而不是将其单独留给安全团队。似乎大多数人自然而然地将注意力集中在DevSecOps方法,如何着重于将安全性集成到开发过程中,特别是CI / CD管道,但人们也可能会说DevSecOps也涉及“转移权利”。

容器安全公司Snyk的创始人Guy Podjarny说:“这是一个概括性的术语,就像DevOps一样,适用于我们如何构建和分类以及运输和交付软件,以及如何在运行时对其进行分类。”

为什么采用DevSecOps?

相对忽略运营和安全性如何组合的原因是,大多数人从迁移到DevSecOps时获得的最大好处既不是提高安全性也不是提高可靠性。在大多数情况下,组织似乎采用DevSecOps的原因与更快地将应用程序推向市场有关。换句话说,是为了满足与DevSecOps团队开发人员通常相关的激励措施。

“我认为已经成功完成DevSecOps的组织能够将产品,新产品,新功能交付市场,比竞争对手快得多。” Palo Alto Networks公共云首席安全官Matt Chiodi解释说。“有纯粹的商业利益。”

红帽 OpenShift产品经理Kristen Newcomer表示,她发现公司通过采用DevSecOps,将部署周期从38周转移到了7周。

在传统的安全设置中,安全团队通常不会检查代码,直到代码已经遍及整个开发流程为止。发现问题后,安全团队将把项目以及要修复的问题列表发送给开发人员。漫长的反馈循环减慢了项目的交付速度,同时也加剧了安全与开发人员之间的紧张关系。

在实践中,将安全性分开还可以使安全性问题更容易进入生产环境。Chiodi说:“大多数组织花费80%或更多的时间在运行阶段。” “当安全性在构建,发布和运行过程中平均分配时,您最终会减少很多的漏洞,然后这些漏洞会在运行时出现。”

但是,在接受采访的安全专家中,似乎已经达成共识,即改善组织的安全状况不是采用DevSecOps的核心动机,而是令人意想不到的辅助效果。

正确设置DevSecOps

哪个组织不希望更快,更安全地交付应用程序?许多新公司从一开始就采用DevSecOps方法,但是要成功建立起大型组织的DevSecOps并不容易。从DevOps迁移到DevSecOps可能至少与从瀑布式迁移到DevOps一样具有挑战性。

“我所见过的在DevSecOps上真正成功的团队在执行层得到了认可,” Newcomer解释说。DevSecOps需要重大的文化变革,并涉及对每个参与人员激励措施的转变。如果没有高层的支持,DevSecOps要求的文化变革可能无法实现。

集装箱安全公司StackRox的产品负责人Hillaryaryson解释说:“ 每当您必须改变人们的思维或行动方式时,这将是最艰难的战斗。” “而且,关于如何获得DevSecOps必杀技,还没有真正的既定蓝图。”

改变安全性的角色

Newcomer说:“安全是No团队的声誉。” DevSecOps的目标是改变这种动态,以使安全性不再是部署路径上的障碍。但这涉及更改安全专业人员的工作方式。

首先,DevSecOps需要高度的自动化。安全团队根本不应该运行手动测试,而应该将测试集成到CI / CD管道中,应该在没有安全专业人员干预的情况下获得有关应用程序或功能的安全风险的反馈。

相反,在DevSecOps模型中,安全团队的作用是创建安全策略,帮助开发人员和操作员了解安全自动化工具和服务器作为顾问的输出。开发人员不需要成为安全专家,但是他们确实需要变得对安全性更加了解。毫无疑问,安全专业人员还必须更加熟悉基础架构和软件开发。

这并不总是一条容易走的路。Benson解释说:“如果您是安全专业人员,并且花了很多时间来学习这些技能,那么对于进入使您学习完全不同的技能的东西,您可能不会感到非常兴奋。”

统一激励措施

DevSecOps的主要挑战之一是,它涉及将以不同方式激励的团队召集在一起。开发人员希望快速推出新功能,安全团队希望解决每一个潜在的安全风险,运营商希望获得超级可靠的应用程序。

这种紧张局势是成功收获DevSecOps所必须获得高层支持的核心原因之一。即使将安全性集成到DevOps团队中,共享KPI还是很重要的,这些KPI汇集了团队中每个人的传统目标。

但是,谁最终对安全负责呢?这是一个棘手的问题。有些人认为安全性仍然应该是安全专业人员的责任,有些人认为责任应该转移给开发人员,而其他人则认为这应该是每个人的责任。当然,“每个人的责任”的风险在于,安全不会成为任何人的责任。

如何衡量DevSecOps的成功?

考虑到大多数公司采用DevSecOps的动机,因此开发速度是DevSecOps成功的关键指标就不足为奇了。使用开发指标的另一个优势是:很难增加安全性。

Benson解释说:“特别是在安全性方面衡量任何事情的困难之处在于,您有点在衡量反事实。” “如果什么都没有违反,这意味着您做得很好,或者这意味着您很幸运。”

但是,如果DevSecOps至少在文化转型方面与在技术方面同样重要,那么用组织指标衡量成功的意义就至少一样重要。例如:安全专业人员是在花费时间自己运行测试还是在为DevOps团队创建或配置工具来使用?安全专家在提出建议时是否了解并考虑了功能的业务原理?开发、安全性和操作之间多久通信一次…… ……

了解更多

安全性只是辅助效果?解读DevSecOps的核心动机的更多相关文章

  1. 外媒解读Web安全核心PKI的四大致命问题

    Web安全的立足根基在于复杂的PKI部署体系,但实际生活中得到正确部署的比例却非常有限,而且这一切都将随着摩尔定律的滚滚洪流灰飞烟灭. 我个人算是PKI(即公共密钥基础设施)的忠实拥护者.我热爱数学与 ...

  2. 深度解读 - Windows 7核心图形架构细致分析(来自微软)

    编辑:马志文 时间: 2009-12-29 如现在大家所想的那样, Windows7 其实是 Windows Vista 的改进版. Windows 7 在 Windows Vista 的基础上进行了 ...

  3. 用js实现动画效果核心方式

    为了做好导航菜单,有时候需要在菜单下拉的时候实现动画效果,所以这几天就研究了研究如何用js实现动画效果,实现动画核心要用到两个函数,一个是setTimeOut,另一个是setInterval. 下边我 ...

  4. Redis核心解读(转)

    原文:Redis核心解读 Redis是知名的键值数据库,它广泛用于缓存系统.关于Redis的信息已经不用我多介绍了.这个系统的Redis文章主要从另外一个角度关注,Redis作为一个开源项目,短短2W ...

  5. ThreadPoolExecutor源码解读

    1. 背景与简介 在Java中异步任务的处理,我们通常会使用Executor框架,而ThreadPoolExecutor是JUC为我们提供的线程池实现. 线程池的优点在于规避线程的频繁创建,对线程资源 ...

  6. 民生银行十五年的数据体系建设,深入解读阿拉丁大数据生态圈、人人BI 是如何养成的?【转】

    早在今年的上半年我应邀参加了由 Smartbi 主办的一个小型数据分析交流活动,在活动现场第一次了解到了民生银行的阿拉丁项目.由于时间关系,嘉宾现场分享的内容非常有限.凭着多年对行业研究和对解决方案的 ...

  7. fastclick.js源码解读分析

    阅读优秀的js插件和库源码,可以加深我们对web开发的理解和提高js能力,本人能力有限,只能粗略读懂一些小型插件,这里带来对fastclick源码的解读,望各位大神不吝指教~! fastclick诞生 ...

  8. 详解Tomcat核心配置、http协议

    Tomcat服务器 Tomcat配置与部署(IDEA) https://www.cnblogs.com/gonghr/p/14731266.html Tomcat手工创建和打包第一个Web工程 在ap ...

  9. Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果

    Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果 前言: 每次写之前都会来一段(废)话.{心塞...} Google Play首页两个tab背景 ...

随机推荐

  1. 5分钟入门pandas

    pandas是在数据处理.数据分析以及数据可视化上都有比较多的应用,这篇文章就来介绍一下pandas的入门.劳动节必须得劳动劳动 1. 基础用法 以下代码在jupyter中运行,Python 版本3. ...

  2. libevent(二)尾队列 && 最小堆

    本文主要研究libevent中用来存储事件的两个结构体. 尾队列 具体定义位于queue.h中. #define TAILQ_HEAD(name, type) \ struct name { \ st ...

  3. MySQL安装(linux)

    Centos 安装mysql 安装mariadb yum install mariadb mariadb-server mariadb-devel 安装mysql rpm -qa | grep MyS ...

  4. js Date对象日期格式化

    dateFormat(d, fmt) { var o = { 'M+': d.getMonth() + 1, 'd+': d.getDate(), 'h+': d.getHours(), 'm+': ...

  5. springData表关系:一对一

    一.编写两个实体类 1.一对一关系实现:a:使用外键关联 b:使用主键关联,两个表的主键相同 2.外键方案:配置关联关系:两个实体类互相关联,并且在关联的属性上添加一个@OneToOne代表一个对一个 ...

  6. python--递归函数的学习

    递归:函数间接或者直接调用自己 递归分两个过程 1.往下调用,分解的过程 2.往上回溯,综合的过程 递归的条件: 一定要有结束的条件 例子:阶乘: def fun_a(n): #print(n) if ...

  7. spark机器学习从0到1特征抽取–CountVectorizer(十三)

        一.概念 CountVectorizer 旨在通过计数来将一个文档转换为向量.当不存在先验字典时,Countvectorizer作为Estimator提取词汇进行训练,并生成一个CountVe ...

  8. Django之AJAX简单使用

    AJAX简介: AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输 ...

  9. [前端进阶课] 构建自己的 webpack 知识体系

    webpack webpack 最出色的功能之一就是,除了 JavaScript,还可以通过 loader 引入任何其他类型的文件. Webpack 核心概念: Entry(入口):Webpack 执 ...

  10. CodeChef - TELEPORT

    题目链接:https://vjudge.net/problem/CodeChef-TELEPORT 题目大意: 有\(Q\)个指令,指令为:\(+\) \(x\) \(y\)(在二维平面内添加一个点, ...