首页 > 其他分享 >什么是DevSecOps

什么是DevSecOps

时间:2022-12-05 21:00:59浏览次数:39  
标签:DevSecOps 流程 管理 什么 安全 团队 代码

在软件企业中,通常包含几个不同的团队,分别负责产品的客户需求与市场推广、产品的设计与开发、产品的运维和客户服务。这几个团队之间相互协作,以软件产品生命周期管理的形式,完成解决方案的交付。在典型的DevOps流程中,开发工程师、IT运维工程师、质量工程师等不同角色参与与协作,共同完成产品需求-设计-开发-部署的生命周期管理。

DevOps协作模式对于频繁交付的企业,面临持续版本迭代和快速响应周期的压力时,既能使客户需求快速地传导到后端,提高工作效率,又能通过自动化工具降低软件发布过程中的风险。但随着安全在软件质量中逐渐被重视,各个团队协作往往会出现安全团队与其他团队协作不畅、安全工作滞后、研发流程缺少安全控制环节等尴尬局面,于是就有了DevOpsSec的概念。

DevSecOps真正被业界关注是近几年自动化部署技术成熟之后才逐步被推广开来,2017年在亚洲DevSecCon大会上,演讲嘉宾Shannong Lietz提出“安全左移”的概念,其核心理念是DevSecOps,强调安全是整个IT团队(包括开发、运维及安全团队)每个人的责任,通过管道化流程、加强不同人员之间的协作,以工具、技术手段将重复性的安全工作自动化地融入研发体系内,让安全属性嵌入整条IT流水线。

与SDL所强调的系统性安全设计不同,DevSecOps更注重安全文化建设和全流程的能力打通,通过工具化、平台化的管道流,集成各种安全能力,达到多个团队链式协作的效果。在DevSecOps中,安全更接近于当前业界提出的“原生安全”概念,是从软件生产、软件供应链的源头,构建内置的安全能力。比如在原有的DevOps流程中,添加威胁建模,引入代码质量检查,通过静态代码分析检查代码缺陷,使用Docker容器构建部署安全能力等。

在传统的协作模式中,安全通常是滞后的。一种情况是产品发布或交付后,产品在线上发生了安全问题,再由开发人员回溯问题产生的原因,完成问题整改另一种情况是软件的编码开发已经结束,安全团队才介入产品的发布流程,对软件产品做发布前的安全审查。这两种情况中,无论是哪种,与其他团队的合作都是滞后的。但随着各行各业对安全越来越的重视,面对诸多问题开发团队感到无从下手,开发团队的管理层希望安全团队更早的介入研发流程,以帮助他们生产出高质量的软件,这也是DevSecOps所期望达到的目的。

在DevSecOps实施过程需要关注以下关键要点。

  • 安全左移:DevSecOps致力将安全引入开发阶段,通过在API开发早期引入安全环节来降低传统模式下安全工作滞后带来的返工成本。在DevSecOps安全共同担责的文化下,鼓励开发工程师参与安全工作,分析安全需求,熟悉安全缺陷用例,编写出可信任的代码;鼓励质量工程师尽早参与安全质量管理过程,关注安全问题产生的原因、安全问题的数量、安全问题危害等级以及安全问题修复情况,从整个生命周期的开发与维护的视角关注安全质量与成本。
  • 安全自动化:DevSecOps关注整体流程的工具化和自动化,对于安全工作来说,为了减少对研发流程的影响,可以利用API网关、微服务、持续集成与部署(CI/CD)、容器化以及云原生技术,将安全工作规范化、组件化、自动化,通过定点监控和审计来跟踪流程的执行和覆盖情况。
  • 持续运营:DevSecOps并非解决所有安全问题的灵丹妙药,通常在组织内的推进过程是循序渐进的,在推进过程中,逐步添加或调整安全活动的数量与安全活动在流程中的位置,建立数字化运营指标,对DevSecOps执行过程的数据进行采集、分析,直到监控的数据能表明当前可以发现的安全问题数量足够少,有足够的安全能力能保障API的安全性。同时,当内外部环境发生变化时,及时调整安全需求的输入,帮助企业关注API安全工作的重点,获取最佳的投入产出比。

在DevOps管道中,开发人员面向持续集成平台(CI),当代码提交后,关键评审环节与自动化单元测试或集成测试同时进行,当最后都确认没有问题,审核通过,合并到中央源代码存储库供持续发布阶段使用。当代码合并到中央源代码时,将触发持续发布(CD)流程,质量管理人员介入,同时自动启动安全测试。当最后都确认没有问题时将新的代码打包到软件中,创建自动化发布需要的基础设施组件。

而在DevSecOps中提倡持续安全,安全在管道流中融入更深,基本分布在持续集成、持续发布、基础设施运营中的每一个阶段。安全团队会和DevOps团队一起,定义和实施安全控制要求,明确安全基线。CI/CD持续运行,静态检测、动态扫描、运营监控,伴随着版本迭代持续运转。理想状态下,大多数安全工作已经自动化,只有在应急或特殊场景下才需要手工操作。

DevSecOps管道中各个关键活动的串联,在流程上依赖于平台与工具,在单点能力上依赖于SDL。一个典型的DevSecOps平台包含如下功能模块。

  • 流水线管理:主要为各个角色提供统一入口,包含任务编排与配置、过程数据的统计度量、组织机构与用户的基础信息以及权限访问控制等。
  • 工程管理:从项目的角度,管理需求和任务以及整体缺陷,包含功能缺陷、安全缺陷、质量缺陷等。
  • 代码管理:主要为代码仓库的管理,管理代码的分支、代码的存储、代码静态检测以及代码评审的协作流程等。
  • 构建管理:为持续集成地构建环境,管理编译选项配置、容器构建参数配置等。通过编译与构建,生成代码制品。
  • 制品库管理:构建完成后生成的代码制品,统一存放的制品库,并对代码制品进行持续检测,关注组件依赖与组件安全问题、组件许可协议以及供应链的安全性。
  • 部署管理:管理自动化部署的各种环境,如应用所需要的环境、主机环境、基础设置环境等。管理部署架构以及部署前的各项自动化测试,比如功能测试、安全测试、性能测试等。
  • 运维管理:通过线上的周期性监控,及时发现线上问题,做出应急响应。

每一个功能模块中,都涉及不同的工具,为平台提供能力支撑。常用的工具如下。

  • 工程管理:主要有Jira、Confluence、禅道等。
  • 代码管理:主要有SVN、GitLab、SonarQube、Fortify、Coverity、Checkmarx等。
  • 构建管理:主要有Jenkins、Nexus、Hudson、Maven、JUnit等。
  • 制品库管理:主要有Protecode SC、Dependency-Check、Artifactory、Harbor等。
  • 部署管理:主要有Kubernetes、Docker、OpenShift、OpenSCAP、ZAP、AppScan等。
  • 运维管理:主要有Zabbix、Prometheus、SkyWalking、Nessus、ModSecurity等。

标签:DevSecOps,流程,管理,什么,安全,团队,代码
From: https://blog.51cto.com/key3feng/5913287

相关文章

  • 抽象类为什么不能实例化对象
    抽象类为什么不能实例化对象第一点:回归问题最初,我们为什么要实例化?我们先逆向思维来考虑,从面向对象的思想来看:我们需要完成实现一个功能,而功能中的方法,是由对象来调用的......
  • 【计算机追本溯源】「底层原理系列」 回归与本质,让本文带你认识什么是计算机软件系统
    前提概要如果希望可以把计算机编程技术提升到另外一个高度,,那么想要搞清楚什么是软件设计,首先就要理解什么是计算机软件,在这之后,再去考虑为什么对软件进行设计,以及在通常情......
  • AMS和Zygote通信为什么采用socket而不是Binder
    参考:为什么SystemServer进程与Zygote进程通讯采用Socket而不是Binder1、AMS、WMS等系统服务处于SystemServer进程中2、SystemServer(SystemService)与ServiceManager勿混......
  • 咨询第三方软件测试机构报价时,软件企业应该准备什么?
    软件企业在选择第三方软件测试机构时,往往最关心的就是软件测评服务的报价了,而软件测试机构的报价主要与客户的测试项目大小或者测试点数量有关,因此具体报价因人而异,行业......
  • 什么是网络钓鱼攻击以及它如何影响我的网站?
    如今,网络安全是一个备受关注的话题,“网络钓鱼”这个词也被广泛使用。即使您对病毒、恶意软件或如何在线保护自己一无所知,您也可能在某个时候遇到过这个术语。大多数人都知......
  • 什么是DNS域名解析?
    什么是DNS域名解析?因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,得到该主机名对......
  • 什么是云原生架构?他和传统架构有什么区别
    什么是云原生应用?云原生是一种方法,用于构建和运行充分利用云计算模型优势的应用。云计算不再将重点放在资本投资和员工上来运行企业数据中心,而是提供无限制的按需计算能力......
  • 人工智能、机器学习、深度学习、神经网络,都有什么区别
    人工智能、机器学习、深度学习、神经网络,都有什么区别人工智能(AI)、机器学习(ML)、深度学习(DL)、神经网络(CNN)人工智能、机器学习、神经网络和深度学习有何关联?或许思考人工智能......
  • BI软件是做什么用的,有哪些好用的BI软件?
    BI软件是用来将其他业务系统上的数据整合起来做数据可视化分析,帮助企业数字化运营决策的工具。因此一般来说BI软件都具备可处理大量复杂数据的能力,且具有较高的数据分析效率......
  • 除了 filter 还有什么置灰网站的方式?
    大家都知道,当一些重大事件发生的时候,我们的网站,可能需要置灰,像是这样:当然,通常而言,全站置灰是非常简单的事情,大部分前端同学都知道,仅仅需要使用一行CSS,就能实现全站置灰的方......