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包,这 ...
随机推荐
- 2023云栖大会议程&体验攻略
2023云栖大会倒计时1天 将围绕"计算,为了无法计算的价值" 为大家带来一场有用.有趣科技盛宴 City Walk 不如云栖Walk 今日,送上一份参会指南 给所有参会者& ...
- alibaba fastjson的JsonObject有序的实现和源码分析
介绍 FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.在使用的过程中, ...
- jenkins原理篇——成员权限管理
大家好,我是蓝胖子,前面几节我讲述了jenkins的语法以及我是如何使用jenkins对测试和正式环境进行发布的.但正式环境使用jenkins还有一点很重要,那就是权限管理.正式环境的权限往往不能对所 ...
- Dash应用浏览器端回调常用方法总结
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/dash-master 大家好我是费老师,回调函数是我们在Dash应用中实现各种交互功能的核心,在绝大 ...
- ML.NET 3.0 增强了深度学习和数据处理能力
.NET团队在 2023.11.28 在博客上正式发布了 ML.NET 3.0::https://devblogs.microsoft.com/dotnet/announcing-ml-net-3-0 ...
- serdes IP集成使用常见踩坑问题
1.不支持小数分频,或者小数分频后频偏过大部分速率配置无法使用. 2.CDR 不稳定,经常无法锁定,或者温变时出现失锁情况,以及cdr lock信号无法准备上报状态. 3.CORE内部多个lane之间 ...
- Tensorflow2.0实战之GAN
本文主要带领读者了解生成对抗神经网络(GAN),并使用提供的face数据集训练网络 GAN 入门 自 2014 年 Ian Goodfellow 的<生成对抗网络(Generative Adve ...
- v0.12.0-敏感词/脏词词标签能力进一步增强
拓展阅读 敏感词工具实现思路 DFA 算法讲解 敏感词库优化流程 java 如何实现开箱即用的敏感词控台服务? 各大平台连敏感词库都没有的吗? v0.10.0-脏词分类标签初步支持 v0.11.0-敏 ...
- LIS和LCS算法分析
LIS(最长上升子序列) 常规的解法就是动态规划. mx[ j ]表示长度为j的上升子序列最小的值a[i]; dp[ i ]表示前i个数的最长上升子序列长度多少. 1 for(int i=1;i< ...
- Android对接微信登录记录
Android对接微信登录记录 - Stars-One的杂货小窝 Android项目要对接下微信登录,稍微记录下踩坑点 代码 1.添加依赖 implementation 'com.tencent.mm ...