快速的数字化和越来越多的远程业务运营给开发人员带来了沉重的负担,他们不断面临着更快推出软件的压力。尽管CI/CD 加速了产品发布,但它容易受到网络安全问题的影响,例如代码损坏、安全配置错误和机密管理不善。通过应用最佳实践来保护 CI/CD 流水线,可以确保代码质量、管理风险并保持完整性。鉴于 CI/CD 在管理软件生命周期中发挥的关键作用,因此保护 CI/CD 流水线应该是企业的首要任务。

CI/CD 安全的重要性

Sonatype 近期发布的报告表明旨在渗透开源软件供应链的网络攻击激增了 430%。报告还发现,51% 的受访企业需要一周以上的时间来修复新的零日漏洞。CI/CD 安全性在于识别和减轻软件交付流水线中的安全风险,以产出可靠且无风险的高质量软件产品。每个企业或产品都有基于其关键流程和工具的独特 CI/CD 流水线,但强化 CI/CD 安全性的基本理念是避免数据泄露和应用程序中断。

CI/CD 流水线的核心包括源代码、应用程序代码存储库、容器和构建服务器等关键开发组件,使其成为攻击者的主要目标。随着流水线复杂性的增加,以及多个生产环境的出现,实施安全措施变得具有挑战性。但如果没有实施 CI/CD 安全措施,攻击者可以利用其漏洞进行重大攻击。流水线安全漏洞可能造成的一些风险包括:

  • 不安全的代码: 缺乏代码扫描程序会引入恶意代码和漏洞,网络攻击者可以利用这些漏洞造成严重破坏。
  • 软件供应链攻击: 对开源和第三方代码库的过度依赖是数据泄露事件的主要原因之一,由此造成的软件供应链攻击将会给企业带来巨大影响和损失。
  • 泄露机密: 不当的安全管理可能允许企业里的任何人在流水线中使用的多种工具来利用敏感数据,例如凭据。
  • 不安全的系统配置: 未能准确配置基础设施、网络或应用程序可能会使企业的系统容易受到网络攻击。
  • 缺乏访问控制: 不实施基于流水线的访问控制使恶意行为者可以访问关键资源和资产。

强化 CI/CD 安全的6个步骤

1. 识别 CI 流水线错误配置

错误配置是网络攻击的主要原因之一,恶意攻击者积极寻求错误配置来侵入企业系统。最近的一份报告发现(参考链接),截至 2021 年,63% 的第三方代码模板包含不安全的配置。通过持续检测和修复错误配置,可以显著减少针对企业应用程序的恶意尝试。使用强大的编码、开发策略和自动化工具来阻止引入流水线的风险并确保每个工作负载的完整性,可以发现流水线的弱点。

大多数企业通常采用 IaC(基础架构即代码)和 PaC(策略即代码)来管理错误配置。作为 DevOps 原则,企业需要限制对配置的访问。可以通过对关键功能(例如将代码更改提交到存储库、创建容器和部署代码)执行最低权限访问控制来做到这一点。

2. 可疑编码模式标记为拉取请求

通过在开发周期的早期阶段检测代码中的错误,可以显著增强应用程序的安全性。这是通过在流水线中建立强大的代码审查实践,来提高代码质量。虽然遵循安全编码原则可以避免产品缺陷,但恶意攻击者可能还是会发现漏洞并利用它执行恶意代码。这也就是企业必须监控、定位和标记可疑编码模式的原因。可以通过模式匹配等策略或使用自动代码安全工具来识别正则表达式或字符序列来做到这一点。

通过使用已配置的代码扫描机制在存储库中使用拉取请求检查,来识别拉取请求中的缺陷、查看突出显示的代码段并启动补救措施。此外,可以使用代码扫描来识别打开的拉取请求并添加警报。

3. 将自动化与人工相结合

自动化已成为现代应用程序开发环境中的必需品。自动化提高了产品开发效率,从而为企业提供了竞争优势。这同样适用于安全管理。企业可以通过实施自动化显着改善企业的流水线安全状况。IaC(基础设施即代码)和 PaC(策略即代码)是两种广泛使用的 DevOps 实践。

IaC: IaC 是通过自动化基础设施配置而不是容易出错的手动过程来确保安全配置的过程。使用 IaC,企业可以对基础架构状态进行编码,创建配置需求模板以轻松管理、监控和分发资源。除了提高团队的工作效率外,IaC 还有助于代码跟踪和审查以避免代码损坏。

PaC: 随着安全成为关键问题,PaC 的概念被引入。与 IaC 类似,可以通过编写策略、规则和工作流来自动执行安全和合规性法规。由于企业将策略代码保存在版本控制系统中,因此可以轻松跟踪对安全要求所做的更改。

4. 积极利用现有工具和框架

DevOps 依赖自动化来加速开发、配置、测试和部署,从而更快地发布产品。如此快速的步伐是通过使用多种工具和框架来实现的,这些工具和框架不仅可以加快流程,还可以快速识别和解决错误、漏洞和缺陷。这些工具还能够自动化关键流程,如监控、测试和基础设施管理,以减少不准确的范围。企业可以使用多种类型的 CI/CD 工具来加强流水线,例如:

  • CI 工具: 持续集成工具能够将代码集成到共享存储库中,以自动化构建、测试和报告。CI 工具可以促进多个代码集成并自动化验证过程以审查和识别代码问题。
  • CD 工具: 持续部署和交付工具可在将软件推入生产阶段之前进行自动化测试和手动审查。使用 CD 工具,可以加快软件发布并提高产品的质量和可靠性。
  • 配置管理工具: 这些工具可帮助有序地跟踪和管理更改,帮助企业自动批准和拒绝对配置所做的更改。

5. 在流水线中构建持续测试

传统开发流程上,开发人员会将测试留到软件开发的最后阶段。然而这种测试方式效率并不高,因为每发现一个问题开发人员就需要回到原点进行排查,以便从根本上解决它问题。实施持续测试策略是加强 CI/CD 流水线安全性的更有效方法。这意味着在开发周期的每个阶段都注入软件测试并采用左移流程。例如,SAST、DAST 以及渗透测试。

6. 自动化数据安全

除了自动化安全管理之外,企业还应该自动化安全程序,包括数据安全。这主要是因为产品发布与新数据库、数据模型或新数据集是相关联的。从生产中提取数据以运行测试和验证功能时,必须保护敏感数据,例如违反数据治理策略的个人身份信息。企业可以采用多种策略来自动化数据安全。例如:

 

数据屏蔽

虽然开发和测试团队需要生产中的真实数据,但他们可以避免在流程的其他阶段访问这些数据。数据屏蔽有助于解决这个问题。它会生成看似真实的敏感数据版本,以便可以继续进行训练或测试,而不会影响实际数据。数据屏蔽通过更改数据的值但以相同的格式显示它来工作。这样,就可以自动化数据混淆。

 

合成数据

合成数据是另一种降低数据风险的方法,其中 AI 算法会创建全新的字符序列。这意味着不使用原始数据的任何部分,从而实现零泄露风险。

 

服务虚拟化

服务虚拟化是另一种数据安全策略,可减少对敏感数据进行测试的依赖。它会创建由于数据治理准则、维护问题或第三方依赖性而无法使用的应用程序组件的模拟行为。

6个步骤强化 CI/CD 安全的更多相关文章

  1. 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

  2. 唱吧DevOps的落地,微服务CI/CD的范本技术解读

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

  3. Docker: Jenkins与Docker的自动化CI/CD流水线实战

    什么是CI/CD 持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈.持续部署(Continuous Deployme ...

  4. 7款不错的 CI/CD工具

    时至今日,越来越多的工程团队开始实行敏捷开发,借以推动更短.更快的发布周期.而代码库的增长与更高的生产构建频率,也带动持续集成与持续部署/交付工具快速兴起.如果您有意提升发布频率,或者是不太清楚哪些工 ...

  5. Jenkins 配置CI/CD任务

    本文演示如何通过Jenkins创建CI/CD任务,部署一整套微服务体系结构,并运行在之前搭建的mini云平台上. 如果是初始尝试实践,可能需要参考 快速搭建云原生架构的实践环境 和 Jhipster技 ...

  6. 使用go mod结合docker分层缓存进行自动CI/CD

    本文地址:https://www.cnblogs.com/likeli/p/10521941.html 喜大奔的go mod 官方背书的go mod拯救了我的代码洁癖症! 环境 go v1.12 do ...

  7. 8款不错的 CI/CD工具

    Jenkins Jenkins是CI市场中最知名且最常见的名号之一.其最初是由Sun公司的一位工程师打造的一个辅助项目,并迅速扩展为最大的开源CI工具之一,可帮助工程团队实现自动化部署.顺带一提:我们 ...

  8. 【Devops】【docker】【CI/CD】2.docker启动jenkins环境+安装必要的插件

    [注意:]jenkins的docker镜像,需要从官网进入直接获取,其他地方获取到的docker镜像,可能因为Jenkins版本过低,导致后续插件安装失败等问题!!! ================ ...

  9. [转] gitlab 的 CI/CD 配置管理

    [From] http://blog.51cto.com/flyfish225/2156602 gitlab 的 CI/CD 配置管理 (二) 标签(空格分隔):运维系列 一:gitlab CI/CD ...

  10. 开发.NET Core NuGet包并实现CI/CD

    实际开发中我们需要对一些公共类库进行开发,并基于Jenkins进行CI/CD(CI:持续集成,CD:持续部署),其他项目通过NuGet引用.上文讲述了如何搭建本地NuGet服务器并发布NuGet包,这 ...

随机推荐

  1. Kubernetes:kube-apiserver 之启动流程(二)

    接着 Kubernetes:kube-apiserver 之启动流程(一) 加以介绍. 1.2.2 创建 APIExtensions Server 创建完通用 APIServer 后继续创建 APIE ...

  2. 拓展欧几里得 edgcd 模板+简易推论

    LL exgcd(LL a,LL b, LL &x, LL &y) { if(b == 0) { x=1,y=0; return a; } LL d = exgcd(b, a%b, x ...

  3. this.$router 与this.$route的区别

    this.$router是Vue-Router的实例,需要导航到不同路由则用this.$router.push方法 this.$route为当前路由的跳转对象,包含当前路由的name.path.que ...

  4. C语言求100以内的全部素数,每行输出10个。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。要求定义和调用函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0。

    /* 开发者:慢蜗牛 开发时间:2020.5.28 程序功能:求100以内的素数 */ #include<stdio.h> int prime(int m); int prime(int ...

  5. 赛意SMOM和金蝶云星空单据接口对接

    赛意SMOM和金蝶云星空单据接口对接 数据源系统:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式:通过标准的业务架构:多会计准则.多币别.多地点.多组织.多 ...

  6. 解决启动Typora时候,出现This beta version of Typora is expired,please download and install a newer version.

    一.问题说明 出现以下问题说明,该软件进行了对系统的时间检测,如果是最新的时间,就会报错,如果是之前的时间就不会.(比如2021年的时间) 二.问题解决 1.手动更改系统时间 打开"控制面板 ...

  7. GSM/WCDMA/LTE/NR网元架构

    1.GSM系统网元架构: 一套完整的蜂窝移动通信系统主要是由交换网络子系统(NSS).无线基站子系统(BSS).移动台(MS)及操作维护子系统(OMS)四大子系统设备组成. NSS 包括: MSC: ...

  8. NLP项目实战01--之电影评论分类

    介绍: 欢迎来到本篇文章!在这里,我们将探讨一个常见而重要的自然语言处理任务--文本分类.具体而言,我们将关注情感分析任务,即通过分析电影评论的情感来判断评论是正面的.负面的. 展示: 训练展示如下: ...

  9. 87 GB 模型种子,GPT-4 缩小版,超越ChatGPT3.5,多平台在线体验

    瞬间爆火的Mixtral 8x7B 大家好,我是老章 最近风头最盛的大模型当属Mistral AI 发布的Mixtral 8x7B了,火爆程度压过Google的Gemini. 缘起是MistralAI ...

  10. MySQL运维16-双主双从读写分离

    一.双主双从架构介绍 在MySQL多主多从的架构配置中和双主双从是一样的,学会了双主双从的架构部署,多主多从的配置也同样就回了.下面以双主双从作为示例演示.其中一个主机maste1用于处理所有写请求, ...