快速的数字化和越来越多的远程业务运营给开发人员带来了沉重的负担,他们不断面临着更快推出软件的压力。尽管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. Nacos注册中心有几种调用方式?

    Spring Cloud Alibaba Nacos 作为近几年最热门的注册中心和配置中心,也被国内无数公司所使用,今天我们就来看下 Nacos 作为注册中心时,调用它的接口有几种方式? 1.什么是注 ...

  2. C++常见算法&数据结构模版

    各种常见算法 & 数据结构模板 1. 最长不下降子序列(LIS) 1.1 \(O(n^2)\) 做法 点击查看代码 for (int i = 1;i <= n;i++) { cin &g ...

  3. 持续进化,快速转录,Faster-Whisper对视频进行双语字幕转录实践(Python3.10)

    Faster-Whisper是Whisper开源后的第三方进化版本,它对原始的 Whisper 模型结构进行了改进和优化.这包括减少模型的层数.减少参数量.简化模型结构等,从而减少了计算量和内存消耗, ...

  4. CSS display属性的作用

    作者:WangMin 格言:努力做好自己喜欢的每一件事 网页上的每个元素都是一个矩形框.CSS中的display属性决定了矩形框的行为.display属性是我们在前端开发中常常使用的一个属性. dis ...

  5. 《流畅的Python》 读书笔记 第8章_对象引用、可变性和垃圾回收

    第8章_对象引用.可变性和垃圾回收 本章的主题是对象与对象名称之间的区别.名称不是对象,而是单独的东西 name = 'wuxianfeng' # name是对象名称 'wuxianfeng'是个st ...

  6. 滚动更新和回滚部署在 Kubernetes 中的工作原理

    公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 在过去的几年中,Kubernetes 在生产环境中被广泛使用,它通过其声明式 API 提供了大量解决方案,用于编排容器. ...

  7. Modbus 转PROFIBUS DP网关在工厂自动温度控制系统中的应用案例

    Modbus 转PROFIBUS DP 网关PM-160 在工厂自动温度控制系统中的应用案例 摘要 随着科技的发展和工业生产水平的提高,自动温度控制系统在纺织.化工.机械等各类工业控制过程中得到了广泛 ...

  8. SpringBoot整合数据可视化大屏使用

    整合数据可视化大屏是现代化应用程序中的一个重要组成部分,它可以帮助我们更直观地展示和理解大量的数据. 在Spring Boot框架中,我们可以使用一些优秀的前端数据可视化库来实现数据可视化大屏,例如E ...

  9. Mock基础知识

    使用的框架:moco框架下载地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/1.1.0/ 启动方式:java -j ...

  10. centos虚拟机安装

    目录 一.准备工作 1.vmware workstation软件安装 2.准备ios镜像 二.创建Centos虚拟机 三.进行Centos7的系统安装 四.虚拟机快照的使用 1.创建虚拟机快照 2.还 ...