热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DevOps进击之后,DevSecOps又在说些什么?

devops,进击,之后,devsecops

我们正站在软件开发史的上独一无二的拐点上。

而对于诸多实践者来说,拐点更像是一个岔路口。一方面,我们希望软件项目开发的速度越来越快;另一方面,我们对软件安全性的要求越来越高。

目前,DevOps已经对开发速度的提升带来了足够的成长和想象空间。然而,安全要如何保障呢?速度和安全谁更重要?能够在安全不到位的情况下,单讲速度提升吗?

很显然,没有安全的保障,DevOps的速度提升价值也会大打折扣,甚至变得阻碍业务发展。“DevSecOps”的概念由此而生。

01 DevSecOps不是加上“安全”就好

知道DevOps含义的人就能很快get到“DevSecOps”。在开发(Developement)和运维(Operations)之间,安全(Security)的重要性被凸显出来。其中,安全不在开发之前,也不在运维之后,充分显示了安全要渗透在软件开发生命周期的每个阶段的意味。

最早是在2021年,DevSecOps由Gartner咨询公司研究员David Cearley首次提出了“DevSecOps”的概念。2016年9月,Gartner发布报告《DevSecOps: How to Seamlessly Integrate Security into DevOps》,对该模型及配套解决方案进行详细分析。其核心理念正是:安全是整个IT团队(包括开发、测试、运维及安全团队)所有成员的责任,需要贯穿整个业务生命周期的每一个环节。此后,2017年美国RSA大会还专门为这个概念和方向设置的议题和讨论会。

近年,“DevSecOps”越来越火。GitLab 2021年度全球DevSecOps年度调查显示,35.9%的组织或公司选择 DevOps 或者DevSecOps 作为开发实践方法论,超过敏捷,高居第一。

但是,安全因素并不应该“生硬地”、“直接地”介入到DevOps之中,而要“无缝”、“无感知”地融入到开发体系当中。也就是说,安全是在每一环节当中都存在的——而非依然作为孤岛存在。DevSecOps是将安全能力融入到DevOps中,而不是将安全人员融入到DevOps中。

首先,不能在DevOps架构之中,单纯地加入安全工具。如果无法在流程当中将安全融入,或者依然需要大量依赖于安全人员解决相关的安全问题(尤其是开发阶段),那么安全依然是独立于DevOps流程之外的元素,成为了DevOps+Sec,而非DevSecOps。

其次,安全应该在开发流程中自动化赋能。也就是通过提前配置的规则,将安全人力从开发流程当中解放出来。提高开发和运营人员的安全意识与安全能力后,只需要通过简单易用的工具,就能达到目的。

再次,在人员上,DevSecOps 的组织应该将网络安全架构师和工程师作为开发团队的一部分。他们可以保技术栈中的每个组件和每个配置项都已修补、安全地配置并妥善记录。

最后,DevSecOps的安全防护,不应该仅仅是在应用和数据层面。如果将安全问题留到开发流程的最后才考虑,就又走回冗长开发周期的老路,这样的DevOps是没有意义的。

其中,左移(shift left)是DevSecOps 中十分重要的一个概念。“左移” 鼓励软件工程师将安全性从DevOps(交付)流程的右侧(末尾)移至左侧(开头)。这使得DevSecOps 团队能够及早发现安全风险,并确保立即解决这些安全威胁。

02 DevSecOps 肩负着4大使命

DevSecOps从提出到如今被广泛关注,其中的原因是多重的。以下4个方面既是 DevSecOps 如此流行的原因,也标志出了 DevSecOps 肩上所扛下的几个使命,从个人到行业 DevSecOps 正在全方位改变着信息技术开发。

  • DevSecOps是DevOps的内在需求,安全性是速度的基石

在过去,安全由单独的安全团队负责,在开发周期结束之后,再添加到软件中,由单独的质量保证 (QA) 团队进行测试。

这样的方式在 DevOps 时代几乎是不可取的,这种传统的、滞后的“添加式” 会拖累整个流程,从而变成 DevOps无法落地的瓶颈。

而DevSecOps 则主张将应用和基础架构安全无缝集成到敏捷及DevOps 流程和工具中。安全不再只是安全团队的事情,成为开发、安全和 IT 运营团队的共同责任,目的就是:在不减慢软件开发周期的情况下自动交付安全的软件。

  • 软件安全性被提到历史新高度,DevSecOps 顺应潮流

在国内,随着《中华人民共和国网络安全法》、《中华人民共和国数据安全法》、《中华人民共和国个人信息保护法》等相关法律颁布并施行,国家对企业安全能力的要求越来越高。国际上,美国等国家亦开始通过法案强调信息安全。

除了政治因素,社会因素也是“安全”被重视的一大推手。近年来,网络攻击频发,被勒索软件勒索、数据泄露、服务器被入侵等网络安全问题引起大众注意,这些事件都指向了应用安全问题。

在GitLab 2021年度全球DevSecOps年度调查中,72%的调查者认为组织在安全方面的投入达到了“良好(good)”和“非常重视(strong)”的程度。而这一数字仅在一年前,还是59%。

  • 开源软件的世界,DevSecOps 能降低开源风险

开源已成为软件技术和产业创新的主导模式。

根据 GitHub 2020 报告,企业开源软件占比已经超过5成,超过专有软件;开源服务市场年复合增长率达 24.2%;开源开发者的数量在 2020 年已经达到五千六百万,将在 2025 年达到一亿。

与此同时,开源带来的风险也不可小觑。国信通院一份报告表明,开源软件漏洞、知识产权及合规问题等安全性问题正在成为阻碍我国企业应用开源技术的“绊脚石”。

同样地,开源软件在帮助DevOps团队节省了大量的时间和金钱的同时,也需要得到DevSecOps 模式来减轻开源软件所带来的风险。比如说:

  1. 在开源软件进入工具链之前,构建一种材料软件账单(a software bill of materials ,简称SBOM),将其作为安全阀门。
  2. 企业提高采购开源软件的安全意识,可借鉴 DevSecOps 的生命周期来制定开源软件的采购战略。
  • DevSecOps改进主动安全性,降低安全投入成本

在DevOps之前,瀑布式研发模式和敏捷研发都有相应的软件安全开发的管理理论方法,比如 BSIMM、SAMM 等。

其中,SDL(Security Development Lifecycle)最为流行。但是,SDL的投入太大了。从需求分析、设计、编码、测试、维护等每个环节都需要安全人员的参与,而且还需要企业的安全团队有一定的规模和实力。

在DevSecOps的理念中,将安全越在开发流程中“左移”,越节省成本。因为,多数潜在安全问题可以在直接在生产环境中被找到,避免了事后纠错带来的昂贵补救费用。

03 实现DevSecOps 的重点——自动化工具

从DevOps到DevSecOps 的转变,并不能独立于DevOps 进行,这个过程更多涉及的是整个开发组织的转变。以下是一个常见的 DevSecOps 实施框架:

  1. 分析、交流与教育:这其中包括分析自身开发流程的成熟度、定义适合自身的DevSecOps 、通过持续不断的反馈培育DevSecOps文化、自动化等等。
  2. 将安全融进DevOps 生态圈中:必须让DevOps 团队与安全团队一起工作。
  3. 引入自动化进入DevOps生态圈中:从小型的开发项目开始,渐渐地拓展至全局的自动化战略。
  4. 有机地添加安全因素至工具链:开发团队和安全团队共同打造DevOps工具链的安全部分。
  5. DevSecOps式地执行:全部团队都必须参与DevSecOps工具链和新流程的打造。
  6. 鼓励保持学习和迭代:为开发者提供系统管理和反馈机制,以保持开发者的状态和工具链的健康。

可以从以上流程中看出, DevSecOps 的实践过程中安全的文化和思维问题十分重要。除了这一内层需要之外,自动化也是关键词之一。

云计算开源产业联盟认为,安全工具自动化以及平台化是DevSecOps的特点。DevSecOps的重点就是在体系中嵌入自动化的安全工具,实现DevOps的体系安全。

譬如说,飞算团队历时五年研发的飞算SoFlu全自动软件工程平台就是一个很好的自动化DevSecOps平台,它从全流程出发,将安全前置在开发环节,每个开发环节都有点测功能,每次修改都在实时项目构建运行,有问题会立刻出现并解决。

除此之外,标准化也是DevSecOps自动化平台的一大利器。飞算平台结合全球当下最先进的行业要求,制定出自己的代码规范。

如此一来,被上传的代码只有在确定没有问题后,才会被提交到代码仓库,而平台内的所有组件也需要经过代码质量管理工具扫描,确认质量后再提供给用户使用。

这就避免了因操作人员原因而带来的“人因”的安全隐患,从代码源头上保证了平台组件的质量和软件产品的品质。

飞算 SoFlu 全自动软件工程平台的组件安全性稳定性已经过金融级别、大规模的实践验证。其质量管理平台上已经有一千多条标准,而新的规则也在不断被加入其中。

据悉,于近期推出的全自动测试平台,作为飞算 Soflu 全自动软件工程平台的一个组成部分,在项目测试时,可以自动识别所有变动的接口,自动查找接口关联的所有测试用例,进行精准回归测试。

从开发、测试到运维,把所有动作规范好,统一管理,是飞算SoFlu全自动软件工程平台的核心,或将成为实现DevOps体系安全的重要抓手。


推荐阅读
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了安全性要求高的真正密码随机数生成器的概念和原理。首先解释了统计学意义上的伪随机数和真随机数的区别,以及伪随机数在密码学安全中的应用。然后讨论了真随机数的定义和产生方法,并指出了实际情况下真随机数的不可预测性和复杂性。最后介绍了随机数生成器的概念和方法。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
author-avatar
2的4次方根God
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有