6个步骤强化 CI/CD 安全
快速的数字化和越来越多的远程业务运营给开发人员带来了沉重的负担,他们不断面临着更快推出软件的压力。尽管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 安全的更多相关文章
- 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
- 唱吧DevOps的落地,微服务CI/CD的范本技术解读
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
- Docker: Jenkins与Docker的自动化CI/CD流水线实战
什么是CI/CD 持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈.持续部署(Continuous Deployme ...
- 7款不错的 CI/CD工具
时至今日,越来越多的工程团队开始实行敏捷开发,借以推动更短.更快的发布周期.而代码库的增长与更高的生产构建频率,也带动持续集成与持续部署/交付工具快速兴起.如果您有意提升发布频率,或者是不太清楚哪些工 ...
- Jenkins 配置CI/CD任务
本文演示如何通过Jenkins创建CI/CD任务,部署一整套微服务体系结构,并运行在之前搭建的mini云平台上. 如果是初始尝试实践,可能需要参考 快速搭建云原生架构的实践环境 和 Jhipster技 ...
- 使用go mod结合docker分层缓存进行自动CI/CD
本文地址:https://www.cnblogs.com/likeli/p/10521941.html 喜大奔的go mod 官方背书的go mod拯救了我的代码洁癖症! 环境 go v1.12 do ...
- 8款不错的 CI/CD工具
Jenkins Jenkins是CI市场中最知名且最常见的名号之一.其最初是由Sun公司的一位工程师打造的一个辅助项目,并迅速扩展为最大的开源CI工具之一,可帮助工程团队实现自动化部署.顺带一提:我们 ...
- 【Devops】【docker】【CI/CD】2.docker启动jenkins环境+安装必要的插件
[注意:]jenkins的docker镜像,需要从官网进入直接获取,其他地方获取到的docker镜像,可能因为Jenkins版本过低,导致后续插件安装失败等问题!!! ================ ...
- [转] gitlab 的 CI/CD 配置管理
[From] http://blog.51cto.com/flyfish225/2156602 gitlab 的 CI/CD 配置管理 (二) 标签(空格分隔):运维系列 一:gitlab CI/CD ...
- 开发.NET Core NuGet包并实现CI/CD
实际开发中我们需要对一些公共类库进行开发,并基于Jenkins进行CI/CD(CI:持续集成,CD:持续部署),其他项目通过NuGet引用.上文讲述了如何搭建本地NuGet服务器并发布NuGet包,这 ...
随机推荐
- 如何去掉桌面快捷方式左下角的小箭头(Win11)
在对系统重命名之后,在快捷方式的左下角莫名的出现了小图标 如果想要去掉这个小图标 (1)首先在桌面上创建一个txt文件 (2)打开后输入指令 reg add "HKEY_LOCAL_MACH ...
- STL容器详解
详细总结STL 为什么C++比C更受人欢迎呢?除了C++ 的编译令人感到更舒适,C++的标准模板库(STL)也占了很重要的原因.当你还在用手手写快排.手写二叉堆,挑了半天挑不出毛病的时候,C++党一手 ...
- 牛客多校第二场 I.Penguins
题意 两个企鹅,一个从地图的右下角走右上角,一个从另一个地图的左下角走到左上角,我们操控左边的企鹅,右边的企鹅与左边企鹅运动规则如下. 左边企鹅向左,右边企鹅向右 左边企鹅向右,右边企鹅向左 左边企鹅 ...
- 全屏API及vue3 hook封装
最近在一个大屏项目遇到一个需求:用户可以通过一个按钮,触发页面部分模块全屏.通过以下API可以实现: Element.requestFullscreen()方法用于发出异步请求使元素进入全屏模式. 且 ...
- C#/.NET/.NET Core推荐学习书籍(已分类)
前言 古人云:"书中自有黄金屋,书中自有颜如玉",说明了书籍的重要性.作为程序员,我们需要不断学习以提升自己的核心竞争力.以下是一些优秀的C#/.NET/.NET Core相关学习 ...
- 小闫s人格大爆发 | 坐椅子上?study:sleep
hadoop视频 搭建环境 刷单词 看电影
- Datainside数据分析,基于大数据分析学生成绩综合评价
Datainside是一种基于大数据分析的学生成绩综合评价方法,通过对海量学生成绩数据进行深度挖掘和分析,为学生的学习表现提供全面.客观的评价.以下是对Datainside数据分析学生成绩综合评价的详 ...
- 构建一个语音转文字的WebApi服务
构建一个语音转文字的WebApi服务 简介 由于业务需要,我们需要提供一个语音输入功能,以便更方便用户的使用,所以我们需要提供语音转文本的功能,下面我们将讲解使用Whisper将语音转换文本,并且封装 ...
- JWT简单使用
创建一个Maven项目,并导入jar包 <?xml version="1.0" encoding="UTF-8"?> <project xml ...
- 开源不挣钱?这个项目上线半年月入超 30w
很兴奋的告诉大家,Sealos 自从 6 月份上线以来,仅半年时间注册用户已经突破 7万,月收入超过 30w,本文来向大家介绍我们是怎么做开源商业化的.每月平均增速超过 40%,而且这些收入大部分来自 ...