许多人对CI/CD以及其相关的协议可能不够了解。首先,CI/CD的意思时候持续集成(Continuous Integration)以及持续交付(Continuous Delivery),或者在某些时候也能理解为持续部署(Continuous Deployment)。当然,在CI/CD的实践过程中,还需要进一步了解自身是否存在安全风险。

持续集成

持续集成是指开发者以及所有对项目有贡献的人员,将代码共同整合到一个共享平台的过程。这类平台有时也被看成是代码库。这一流程发生得非常频繁,有时候可能一天会进行5到20次不等。

在代码被推送到代码库的时候,一般都会马上有自动化的测试服务器对输入的代码进行检查;然后,测试服务器会给相关的开发人员反馈代码在服务器上的表现情况,包括一些表现参数、检查项目等重要信息。

开发者可以通过这一流程,在每一次有新代码入库的时候,一点点分析他们的代码,并对其进行改进。代码里总会有点小毛病,持续集成可以无缝地快速发现代码中的问题并快速修复。这一流程同样使得稳定的持续代码部署有机会实现。

持续交付 vs. 持续部署

持续交付和持续部署之间依然是有一些小区别的。这些区别主要和自动化、效率、以及代码部署有关。

先看持续交付,这一流程有数个目标,但主要目的是保障软件需要的时候能高效地被发布。

这个功能使得能快速、持续地在软件需要的时候输出成果。为了实现这个目标,需要一个完全自动化部署的系统。市面上有许多新的工具都是可以辅助是实现持续交付。

持续交付需要格外注意一点,那就是这个流程可能在自动化交付过程中需要一个许可过程;这意味着可能需要某些人员在部分情况下进行最终部署——这是持续交付和持续部署的一大区别,因为持续部署中的代码升级是直接从CI/CD管道部署到产线上的。

持续部署和持续交付的差异并不是很大:持续部署中,所有东西都更加自动化,因此部署代码的时候没有许可要求。所有的代码变化都会通过自动化进程快速达到产线,不会需要任何许可或者受到任何影响。

因此,尽管持续部署和持续交付非常接近,但潜在的能否有其他干涉会影响进程这一点,将两者区分了。但是,这两者始终都需要基于自动化能力频繁地升级代码变动。

安全风险

能够基于全自动流程改善交付软件的工作流,这是CI/CD公认的关键优势。但是,毫不例外的,CI/CD本身也存在安全隐患。

首先是对CI/CD管道的管理。传统的CI/CD管道当中使用了大量的工具,那就难以避免地会出现一些漏洞,成为网络攻击的入口。全时监控CI/CD管道是最好的解决方法之一。这样做的好处在于能够迅速发现异常情况,从而在安全事件发生前采取措施。虽然说CI/CD管道难逃已存的威胁,但是关闭管道系统还是可以阻止网络威胁的。

另一方面,需要关注管道中的代码。市面上有不少代码分析工具可以对管道中的代码进行监控,从而防止攻击者利用潜藏的漏洞。企业需要对管道和代码定时进行审计,时刻保持一个高安全等级。这些工作可以降低网络攻击的可能性,从而改善CI/CD的安全性。

总结

以上是对CI/CD管道的大致介绍。从安全角度来看,尽管说CI/CD会有一些潜在的安全隐患,但是好消息是已经有不少安全工具能够对攻击进行防范。代码库、自动化系统、CI/CD管道工作流等概念都是CI/CD的核心。相关管理人员必须清楚这些概念,才能知道如何安全、有效地管理CI/CD管道。

数世点评:

这两年,国内DevSecOps的概念开始盛行。DevSecOps是DevOps的延伸,而CI/CD管道则是当下DevOps的核心之一。CI/CD管道固然能给产品的开发、迭代带来更高效的方式,但是如果无法恰当理解CI/CD以及其面临的威胁,就无法真正做好DevOps流程中的安全,更遑论DevSecOps的落地实践。

声明:本文来自数世咨询,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。