系列 | 默安科技谈云原生安全之变 (五) : DevSecOps

2022-06-22

云原生技术带来巨大价值的同时,也带来了诸多基于云原生视角的新型安全挑战。为了让广大客户更加详细地了解云原生安全,默安科技推出“云原生安全之变”系列文章,为各位逐一介绍云原生技术各阶段所面临的风险挑战与解决方案。本篇文章是本系列的最后一期,主要对云原生下的DevSecOps进行阐述。


1 DevOps是云原生的重要构成


CNCF将云原生定义为——“使组织能够在现代化和动态的环境(例如公共云、私有云和混合云)中,构建和运行可进行容量伸缩的应用程序。其代表技术包括容器、服务网格、微服务、不可变基础设施和声明性API”。而DevOps被认为是云原生的重要技术构成。

云原生下的DevOps才真正实现了快速、高效、弹性等优势:

容器和Kubernetes的出现将底层计算、存储和网络资源进行解耦,基础设施抽象化程度提高,有利于资源的弹性伸缩。云原生下开发和运维效率将得到大幅提升,开发人员可以更加专注于开发本身而无需担心程序运行在什么环境中,运维工作变得更加规范和标准化。同时虚拟化和容器化进一步拉通了开发和生产环境的一致性,从技术角度来说构建和部署阶段不再割裂,符合DevOps的自动化、持续集成与持续部署诉求。

云原生下应用程序的构建和运行,DevOps是最佳选择:


云原生应用程序通常是频繁且快速开发构建、自动部署到云基础架构上的,其独特的特性使得应用程序必须基于一组跨越开发和生产的工具集合与流程,而DevOps是所有开发模式中最符合云原生场景的。DevOps不仅集成了全部工具、在容器和Kubernetes技术的加持下通过CI/CD管道实现开发、构建、部署到运行全流程的自动化,打通了开发阶段与运维阶段的壁垒。总之,DevOps使应用程序的开发和部署更加灵活高效。

DevOps能支撑更快速的需求响应:

看IT架构发展的本质,都是为了更快速的业务迭代,以更迅速地满足用户需求,由此来吸引更多的用户,抢占更大的市场。云原生架构也是为了这个终极目标而诞生的。开发过程体系,在目前的时代下最快速的方式就是DevOps,因此云原生才会明确把DevOps纳入其中。可以试想一下,如果开发模式仍然采用瀑布模式,但是运行时又采用微服务架构,那么瀑布式的开发模式必然将拖慢迭代速度,部署和运行时做得再灵活快速,也于事无补。


2 云原生DevOps面临的风险


DevOps本就面临着诸如安全合规、开源漏洞、软件供应链投毒等风险,为适应DevOps的工具化和自动化的需求,采用DevSecOps将安全控制和流程嵌入到 DevOps 工作流程中,力求实现自动化的安全风险闭环。

云原生将容器化架构引入DevOps全流程,在生产、构建、发布、运维阶段均需要考虑云原生带来的风险,如:

> 构建的容器镜像是否安全

> 上线的IAC是否有缺陷

> 开发过程中的开源组件安全问题

> 开发过程中的应用安全漏洞

> 持续优化流水线策略


3 云原生下的DevSecOps如何实践


从DevOps的必要性与风险性可以看出,要建设安全的云原生体系,必然离不开DevSecOps体系的建设。默安科技建议云原生DevSecOps可从以下几点重新考量应用程序安全:


01 开发过程中的镜像安全

云原生DevOps在测试和生产前自动拉取的镜像,应经过严格检测,防止镜像仓库中的镜像被篡改、或违规拉取第三方不安全的镜像。

02 容器资源的配置安全

在开发过程中,往往已经准备好了DockerFile、Mainifest等文件,这些文件用于生成运行时的资源与配置,因此在DevSecOps流水线中,应该对这些IAC文件进行扫描,详细核查文件中对资源的配置选项,是否足以支撑应用程序的安全运行。另外,本系列之前的文章中多次提到IAC扫描的重要性,也多次阐述:IAC扫描虽然属于基础设施安全的一部分,但其扫描过程往往是在开发过程中进行的。因此,应该同时把IAC扫描能力纳入流水线中。

03 开源组件安全问题

即便不是云原生环境下的DevSecOps,也应该包含开源组件安全检查能力,当转向云原生环境下更快速的迭代模式后,开源组件的使用率只会不断增加,因此SCA能力必不可少.

04 DevSecOps 对应用漏洞治理的新要求

开发过程中的应用漏洞发现、确认、推进修复,不管在SDL还是DevSecOps过程都是必备的,只不过DevSecOps对工具能力提出了更高的要求,主要集中在三点:第一,工具必须具备良好的集成性,能够一键与CI/CD平台对接,与开发过程中的各种公共服务对接,例如Jira、Confluence等;第二,工具的一次检测时间不能太长,试想整个Job完成时间大部分在10多分钟,如果一个安全工具运行时间在小时级,没有开发人员能够忍受这样的消耗;第三,由于DevSecOps的快速与敏捷,工具的准确率更为重要,如果误报率太高,导致安全人员不得不与研发人员多次核对漏洞有效性,其中的沟通成本是DevSecOps难以接受的。因此在DevSecOps过程中,IAST与轻量级的SAST产品,更适合作为应用漏洞发现工具,集成进入CI/CD中。

05 持续优化流水线策略

一个有效的DevSecOps流程需要不断优化安全策略,特别在云原生架构下,一开始极容易出现安全偏差,必须通过不断优化策略来达到更精准的安全标准与能力配置。

下图描述了云原生环境下的DevSecOps,相较于非云原生环境,需要新增的安全与控制能力(并不是DevSecOps的全流程图,仅描述新增项)。在云原生基础上,DevSecOps最大的区别在于改变了基础架构,容器化和微服务对DevSecOps的影响不仅是运维阶段,甚至延伸至构建环节。云原生DevSecOps实践,需要深刻理解云原生的概念,进而才能理解DevOps是如何在云原生架构下流转、DevSecOps又需要解决哪些问题。




4 更进一步,开发、部署、运行时安全贯通


在目前国内很多企业处于云原生体系的建设阶段,安全更是处于起步建设阶段,因此用户会将更多的目光放在运行时阶段,这与传统安全的建设思路比较类似,先建设防护设备、再建设漏洞检测设备、最后到SDL建设。但在云原生体系中,开发与运行时,更多的是一体化的过程,皮之不存,毛将焉附,应用云原生体系的企业,其软件开发过程基本都是DevOps方式。因此在云原生安全建设的初期,可以先建设云原生运行时安全,但也应在规划阶段就考虑DevSecOps的建设,以及如何把开发安全->部署->运行时安全过程打通。

默安科技尚付CNAPP云原生保护平台(以下简称“尚付CNAPP”),具备完整的云原生DevSecOps能力,可以将开发阶段、部署阶段、运行时阶段的各类安全数据在统一平台上进行统一处理和计算。

01 从开发关联运行时

在很多企业中,开发过程中的信息,往往与运行时中的信息割裂,开发过程中的平台与运行时的运维平台也区分得非常明显,其原因在于传统的开发模式中,开发与运维本就是不同的阶段与工种,互相之间的联系更少,但在DevSecOps提出后,开发、测试、运维过程在加速融合,更加强调一体化。默安科技尚付CNAPP,既有开发阶段的安全能力,也有运行时阶段的安全能力,通过数据关联,能做到将开发阶段信息与运行时阶段关联,能够直接在开发项目中看到此项目发布后是运行在哪些资源中、资源的安全状态如何。

同样,尚付CNAPP也可以从运行时阶段,直接透视到此资源上,清晰地展示出所运行的应用程序在开发阶段存在哪些风险、哪些已修复、哪些未修复。

这对于安全治理、漏洞响应而言,尚付CNAPP同样具备很高的使用价值。以A组件高危漏洞爆发为例,用户可在“开发项目管理”中,筛选出使用了A组件的开发项目,由于开发项目能够直接关联到运行时资源,企业管理员可以立即确认哪些资源受A组件漏洞的影响,不需要跟通过人工excel表格来进行关联,再找一个又一个开发组进行沟通推进修复。

02 从开发关联部署

在部署阶段,往往会进行“准入卡点”,多数厂商对容器准入部分的控制项有三个维度:容器基线、镜像安全、签名校验,并没有判断应用是否带病上线;默安科技尚付CNAPP,除以上维度之外,还将开发过程中未修复的安全风险作为准入的控制项之一,如微服务在开发测试期间是否存在高危风险漏洞、是否使用了带有漏洞的第三方组件库或带有错误配置的IaC等等,这些在开发测试期间发现的安全风险都有可能致使微服务上线后产生安全风险,因此在准入阶段就需要再次做好安全卡点,防止应用带病上线。

尚付CNAPP在开发、部署、运行时的关联分析与控制能力,兼具创新性和独到性,是行业中同类产品所少有的。




默安科技自成立之初,就开始了DevSecOps、CWPP等能力的布局,经过多年沉淀,成为DevSecOps领域的国内优秀产品和方案提供商,加上公司对容器安全、CSPM等方面的产品创新,在2022年正式推出了“尚付 CNAPP云原生应用保护平台”,帮助客户打造完整、体系化的云原生安全解决方案。默安科技希望对未来的一些预见,能够帮助广大政企客户建设更安全、更稳定的云原生体系。