保密+完整+可用+安全,规避代码安全「马奇诺防线」,构建软件供应链整体安全

news2024/11/20 7:10:07

近日,在「江狐会」广州站上,极狐(GitLab) 高级解决方案架构师武让分享了如何通过三大阶段 + 四大要点,规避代码安全「马奇诺防线」,真正确保软件供应链安全。以下内容整理自本次演讲。Enjoy~

先跟大家分享一个故事

一战结束后,曾遭到德国重创的法国,为了防止德军再次入侵,举国之力,耗时 10 年、耗费 50 亿法郎,在东北边境构筑延绵数百公里的马奇诺防线,堪称军事上的一大奇迹。

然而实战中,德军并没有去死磕马奇诺防线的正面防区,他们绕道至法国北部进而长驱直入。这座“世界上最强防线”成了摆设。

现在,“马奇诺防线” 被用来比喻劳神费力而没有用处的东西。

图片来源:https://www.douban.com/note/711063488/?type=like&_i=4225104GznZ_E5

代码数据作为企业核心数据资产,同样要避免 “马奇诺防线” 式的保障,那么应该如何保证代码数据安全呢?我们基于 300+ 家企业的实践经验,总结出保障代码数据安全的四大要点:

保密性 + 完整性 + 可用性 + 安全性

代码数据保密性


保密性即要确保数据不能够泄漏

近年来,国内外知名科技企业源代码泄露事件屡见不鲜,不仅对企业造成直接的经济损失,也损害了品牌形象。如何避免类似事件?极狐GitLab 提供覆盖「事前 - 事中 - 事后」三个完整阶段的代码防泄漏总体思路

「事前」主要是对整个代码仓库及代码平台进行权限控制,包括:

事前:注册安全 - 注册限制

可通过 Email 黑白名单限制账号注册:

可关闭注册,通过与企业内的 AD / LDAP / SSO 等权限系统或单点登录系统打通,不允许用户自由创建用户。

极狐GitLab 专业版中的 AD/LDAP 组同步、SAML 组同步等高级功能,还可以实现将第三方用户管理系统中的用户组直接同步到极狐GitLab 群组中,更便于企业管理

事前:登录安全 - 2FA 双因素认证

2FA 双因素认证开启后,除了用户名密码外,还需要提供第二层认证因素(比如手机验证码)才可以登录账号,能够有效防止用户在不小心丢失用户名密码的情况下,账号被恶意登录使用。

事前:网络安全 - IP 访问白名单

该功能限制用户在指定网络环境下才可以访问代码仓库。

例如企业有外包团队,那么代码需要对其开放,可通过在群组中添加公司内网或某办公区 IP 地址为 IP 访问白名单,不同群组可设置不同的 IP 访问白名单。这样,外包团队只能在指定办公区网络下才可以访问代码仓库。

非 IP 访问白名单网络则无法访问:

事前:授权安全 - 用户角色授权

极狐GitLab 用户角色授权功能具有高灵活性,可以根据组织或项目团队的实际情况选择以群组授权或用户授权,不同的用户角色具备不同的可执行权限。

在实际应用中,极狐GitLab 建议系统管理员遵循最小特权原则(Least Privilege),只给用户分配所需功能的最小权限,同时定期对用户权限进行审查,避免权限管理失控。

事前:提交安全 - GPG 证明提交人身份

GPG 或 GnuPG (GNU Privacy Guard) 是一个遵照 OpenPGP 协议的用于加密、数字签名以及认证的软件工具。

GPG 在代码提交中主要用来确定提交人身份,防止被恶意篡改的代码进入源代码仓库。它需要在用户本地生成一对密钥(公钥/私钥),将公钥上传到极狐GitLab 中,并在代码提交时用对应的私钥进行签名,当代码上传到极狐GitLab 服务器时,极狐GitLab 会用公钥进行验证签名是否匹配。

使用方式:git commit -S -m "My commit message" 

事中:DLP 工具集成

「事中」则是需要通过 DLP 网关来保障数据安全。

极狐GitLab 可以与 DLP、零信任网关集成,从根本上解决了代码泄露问题。

如下图,不论是 OA、ERP 或极狐GitLab,所有数据都会经过 DLP(Data leakage prevention,数据泄漏防护)网关,才可以被读取到开发人员电脑上。

通过 DLP 网关拉取下来的代码在磁盘中是加密状态,即便通过 U盘或者其他方式发布到外网也无法直接打开,只能通过 DLP 网关信任的客户端、IDE 打开,在内存中是解密状态,可进行正常的开发工作,一旦落盘存储就又变为加密状态,从而实现数防泄漏。

DLP 网关虽然在代码防泄漏的效果上表现最佳,但 DLP 成本往往比较高,对使用人员的用户体验也有一定程度上的影响,所以比较适合对数据保密要求高的的企业或项目团队。

极狐GitLab 可以集成行业内主流的 DLP 网关如 IPGarud、绿盾等,并且可以关闭在极狐GitLab 网页上下载代码,限制获取代码的渠道,以便更好的与 DLP 工具集成,进一步提高数据保密性。

事后:审计事件-人员行为分析与告警

最后是「事后」措施。它主要是对极狐GitLab 中所发生的事件、人员行为进行记录、分析、追踪,甚至是告警,以实现对代码泄露事件的防范或追溯。

例如,谁在什么时间,通过什么 IP,从代码库中拉取了什么代码,拉取了多少次等,这些信息都可以记录下来。有了这些信息,则可以进行规则设置。

举个🌰,在 “晚上 12 点之后,早上 6 点钟之前” 这个时间段,如果有用户超过 5 次去拉取代码,判断为一个高风险的事件,触发一个邮件通知。系统管理员或指定人员可以将这个用户的状态变成冻结,阻止其访问;同时可以对该行为进行分析和追踪。

图:审计事件

图:审计告警

这里的「事后」是相对于「事中」而言的,它具有一定的延后性,但它的成本相较于「事中」的方式大幅降低,依然可以作为绝大多数企业或团队实现代码数据保密性的主要手段

代码数据可用性与完整性 


  • 可用性表示能够访问数据,并能够满足持续的用户增长;

  • 完整性表示数据不能够损坏、不能被篡改。

曾有企业客户在极狐GitLab 数据库上做了错误操作,致使数据库无法使用,并由于只有一个实例,没有任何备份,导致数据全部丢失,无法挽回。如何避免这种 “悲剧” ?

极狐GitLab 高可用扩展性架构

极狐GitLab 提供高可用扩展性架构,其源自全球最大代码托管平台之一的 GitLab.com 十多年的技术实践沉淀,该架构通过了全球 3000 万注册用户的检验。

极狐GitLab 高可用扩展性架构通过把极狐GitLab 中所有组件单独抽出来,以分布式集群的方式部署,每一个服务和组件都是多副本的,在整体架构设计上不存在单点故障,并结合负载均衡、水平伸缩、分布式架构、主从多副本机制和云原生等多种机制,实现理论上无限扩展的能力

极狐GitLab 提供支撑从 1000 人到 50000 人规模架构最佳实践参考和专业服务支持,为企业构建高度可靠 DevOps 研运平台保驾护航。

近期,极狐GitLab 正式发布《中国企业研发高效能白皮书 · 企业级软件架构篇》,基于 10 万+ 企业客户成功实践经验,为不同企业规模、集中或分布式团队,量身定制成熟的企业级软件架构方案。

极狐GitLab 在数据存储方面使用了多个组件,如 PGSQL 用于存储用户信息、仓库路径等元数据、Redis可作为缓存或消息队列,因为 PGSQL 和 Redis 作为主流中间件都有自己的高可用方案,所以不少客户已经将极狐GitLab 实例中的这些组件替换为第三方的高可用组件,这是一个好事,说明大家对高可用很重视。

但极狐GitLab 中最核心的存储组件却不是 PGSQL 也不是 Redis,而是 Gitaly,这是GitLab 自研的组件,用于对代码仓库进行管理和指令互动,因此它的地位最重要,负载也最高。

因为有些企业的数据量多达 30 T 级别,使用单个磁盘或单个节点的成本很高,且性能无法保证。Gitaly Cluster 高可用 Git 仓库服务持多副本和分片,把不同的代码库分到不同的存储片上,这也是提高可用性和性能的方式。

极狐GitLab GEO 多地域部署架构

相较于支持 1000 人起步的高可用可扩展架构,极狐GitLab GEO 多地域部署架构则更为轻量和简单,更加适合中小型企业。

GEO 多地域部署架构实现一主多从,主从之间的数据实时同步

不同于传统数据库冷备份,RTO(Recovery Time Objective,恢复时间目标) 基本上是 24 小时,可能就丢失了一天的数据。

极狐GitLab GEO 多地域部署方案是热备份,即便主节点宕机,也可以把从节点处将其恢复,或提升从节点为主节点,那么丢失的数据最多是 1~2 分钟的数据。

所以 GEO 多地域部署的时效性和可靠性大大高于传统冷备份方式,属于准高可用,同时是灾备架构,并支持异地容灾

代码安全性


近年来,软件安全问题日趋严重,其类型也不尽相同,如勒索软件事件

1. 2021 年 2 月,起亚汽车遭勒索,黑客要求支付 1.35 亿赎金,若当天不支付,将追加至 2 亿元。

2. 2021 年 3 月,黑客组织攻陷了特斯拉摄像头供应商 Verkada,特斯拉以及美国监狱、警察局、医院和学校等 15 万个监控摄像数据遭泄露。

3. 2021 年4 月,黑客通过勒索攻击,窃取了苹果的设计蓝图,索要 5000 万美元(约 3.25 亿元)赎金。

还有软件漏洞和开源及第三方组件风险,据统计,国内有 90% 以上公司都使用了第三方开源代码,这个数字还在逐年增高。这些开源代码本身可能存在安全问题。

数据来源:漏洞知识库(CVE)&中国国家信息安全漏洞共享平台(CNVD)

传统软件安全主要关注软件运行过程中的安全,一般是在软件发布、交付前后对软件应用的安全进行测试和评估。鉴于以上种种,传统软件安全测试和评估已经无法定义现阶段的软件安全了。软件供应链安全,应需而生。

什么是软件供应链安全?

“供应链” 一词来源于制造业。如何评估一辆汽车是否安全?

  • 首先,上游提供的发动机、玻璃、刹车片等部件本身必须安全,必须通过汽车企业的测评和检测;

  • 其次,汽车生产链条必须规范,比如说丰田主推精益生产,保证汽车制造环节安全可靠;

  • 最后,汽车到达消费者手上,还需要定期到 4S 店进行保养,保障汽车安全。

软件供应链安全与制造业供应链安全如出一辙。

在软件领域的供应链是指的是软件从开发到交付的全过程,软件的供应链安全是软件安全威胁的源头

在 CNCF 的《软件供应链安全白皮书》中,强调了分层防御实践的重要性,并提供了从以下五个维度来提升软件供应链安全的整体方法。

如何实现软件供应链安全?

SDL(安全开发生命周期):重量、高成本、低效率

SDL 是过去 20 年中普遍使用的一种方式。

如下图,华为内部有一套安全红线,包括了安全基线、规范标准指导书、各种各样的扫描工具,每个项目研发流程需要遵循这一套机制,运行各种审核,各种节点确认,来保证产品和项目交付安全,可想而知其成本之高和效率之低。

DevSecOps:轻量、低成本、高效率

DevSecOps 相较于 SDL ,成本更低,效率更高。

DevSecOps 在软件开发过程的每个阶段集成安全测试的实践,它包括鼓励开发人员、安全专家和运营团队之间协作的工具和流程,以构建既高效又安全的软件。DevSecOps 带来了文化转型,使安全成为开发软件的每个人的共同责任。

这个机制是如何运转的呢?

极狐GitLab 将安全扫描集成到 DevOps 工作流中,通过流水线自动化执行,将安全实践融入软件开发的每个阶段,在代码上线前,就能够帮助用户更高效地发现问题、追踪问题,更低成本地解决问题。

  • 完整性:内置 7 种类型安全扫描,覆盖软件全生命周期,配置简单,开箱即用。

  • 统一性:统一管理界面,安全规则、漏洞报告、漏洞追溯、任务分配,开展端到端的安全实践。

  • 领先性:Gartner、Forrester 等全球知名测评机构给予高度评价,在 DevOps 产品中处于领先水平。

  • 高性能:契合敏捷项目管理机制,能够与 DevOps 结合,支持大规模用户的高并发检测。

  • 可扩展:可以接入不同的商业化安全产品及解决方案,如 Black Duck、Fortify 等。

以往工作流程中,安全工程师测试后,将漏洞报告发送到工作群,请研发工程师逐个修改。但研发工程师只看到了漏洞,而具体的漏洞所在的位置等信息全然不知,修复起来十分低效和繁琐。

极狐GitLab 提供的漏洞详情和报告如下图,清晰展示了漏洞所在项目、在哪个文件的第几行、漏洞级别等信息;针对需要修复的漏洞,安全工程师一键「创建议题」,研发工程师即可 “对症下药” 开始追溯和修复漏洞,高效明了

那么,极狐GitLab 到底是怎么真正把安全问题左移到开发阶段,并且强制要求开发人员去解决呢?

这里用到安全策略和安全门禁设置

如下图例子,在这个项目中,要求 SAST 静态应用测试不允许超过 1 个严重漏洞,依赖扫描不能超过 2 个高等级漏洞,如果超过了,代码则不允许被合并或发布。设置了这样的安全策略后,研发人员就必须遵守,否则代码合不上去。

但如果真的有紧急的事情,或是发版迫在眉睫,客户催得很紧,怎么办?可以通过评审人员人工确认,共同担责

代码数据安全的思考


对于代码数据安全,除了上面提到的一些措施,还有哪些方式可以提升代码数据的安全性?这里列出一些方案,供大家参考和思考:

  • 堡垒机:通过审计方式对运维人员进行控制和追溯,防止运维人员对代码数据造成威胁;

  • 分级部署:把涉及企业机密与核心的代码,单独放一个极狐GitLab 的实例,并通过各式手段加强安全保护能力;

  • 网络隔离:常见于金融行业,在内网下部署,并有严格的网络访问策略;

  • 专用设备:在指定的设备上进行数据访问;

  • 备份加密:防止备份文件被拿走后使用;

  • 安全意识培养:人员安全意识与能力培训。

大家可以发现,对于数据安全需要考虑的事情、能做的事情实在是太多了。所以我们常说没有 100% 的安全。安全是一场博弈,需要综合考虑可能造成的损失成本与保障安全的成本,来决定采用何种安全措施。不可一叶障目,也不可矫枉过正,唯有先事虑事、因地制宜才可在有限的资源下获取最大化的安全。

想了解更多极狐 GitLab DevSecOps 7 大实用功能?点击参与活动👉 DevSecOps 7 大直播课程正在进行中 ,立即上车,启程软件安全开发实践之旅!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/541236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机体系结构|MIT6.175和MIT6.375学习笔记

在2023年初,达坦科技发起成立硬件设计学习社区,邀请所有有志于从事数字芯片设计的同学加入我们的学习互助自学小组,以理解数字芯片设计的精髓,强化理论知识的同时提升实操技能,继而整体提升设计能力。现在,…

Vmware虚拟机安装MacOS13-Ventura详细教程

小编亲测 前提准备 功能强大的 Windows 电脑(不能太差,不然会卡)至少8GB内存默认是80GB的存储空间VMWare Workstation(版本应该没什么需求,我装的是VMware Workstation 17 Pro)Unlocker解锁软件MacOS Ventu…

最快的 Houdini 和 V-Ray 云渲染服务

Houdini是SideFX开发的一款3D动画软件应用。Houdini 最常用于 FX 部门,用于在电影和游戏中创建视觉效果。它被主要的 VFX 公司使用,例如 Walt Disney Animation Studios、Pixar、DreamWorks Animation、Double Negative、ILM、MPC、Framestore 等。Houdi…

推荐几款音频转文字软件给你

不知道小伙伴们有没有遇到过这种情况,在上学时期,我们经常需要记录老师上课的板书内容,但是边听边记可能速度会跟不上,还会遗漏掉一些内容,而且效率也不高。其实这时候,我们可以将老师讲话的内容先录制下来…

鸿蒙Hi3861学习十三-Huawei LiteOS-M(STA模式)

一、简介 AP(Access Point)无线接入点 AP是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就是一个AP。 STA(Station)站点 STA也可以理解为终端的意思&#xff…

高性能零售IT系统的建设10-一个系统日志记录搞崩了整个公司的O2O交易系统

背景 绝大多数业务系统其实都是一座屎山,本人接手的这座屎山目前已经成了一座金山。这其中的幸酸只有那些从0参与过并活到现在的一些“老人”们心中自知其中的滋味。 在3年半前,本以为买来的一套将近600万行代码、达800张表、几乎用到了所有的互联网中间…

分布式系统:高并发

目录 1.什么是高并发 2.术语 3.如何应对处理高并发 3.1.提升系统的并发能力 3.3.1.垂直扩展 3.3.2.水平扩展 3.2.流量控制 4.削峰 4.1.怎样来实现流量削峰方案 4.2.限流 5.总结 1.什么是高并发 高并发是指系统在同一时间内处理大量请求的能力。在软件开发中&a…

CRM管理系统在线用

一、CRM管理系统是什么 CRM是客户关系管理的缩写,是指企业通过建立客户档案、跟进客户需求、提供优质服务来维系客户关系的一种管理模式。是企业以客户关系为重点,通过开展系统化的客户研究,优化企业组织体系和业务流程,提高客户…

Jina AI全新Inference服务,LangChain开发体验从未如此丝滑

由于 Token 的限制,在开发 LangChain 问答机器人应用时,我们经常需要将文档切割,接着使用 Embedding 引擎 分别将分割后的 Document 变成 Embeddings,即向量表示。 同时输入的问题,也需要用到 Embedding 引擎 变成向量…

linux调试知识:手把手教你SSH怎么链接

在机器装机后,如果没有显示,有没有串口,通常很难区操作调试,本文总结一篇通过搭建SSH链接去为调试做服务: 首先第一步:安装必要的软件,CRT或者XSHELL。 下面将举实际案例,手把手搭…

Axure rp9 引入Echarts图表 |手动引入图表 Apache Echarts

Axure rp9 引入Echarts图表 |手动引入图表 Apache Echarts 1.拖入一个矩形lable,调整合适大小,并命名为test 2.给test新建交互载入时,打开链接,并将下方code贴入 如果想在无网的情况下运行,需要在axure软件的安装目录DefaultSet…

深度学习笔记之递归网络(三)递归神经网络

深度学习笔记之递归网络——递归神经网络 引言回顾:潜变量自回归模型递归神经网络思想困惑度 引言 上一节介绍了基于统计算法的语言模型。本节将介绍基于神经网络的序列模型——递归神经网络。 回顾:潜变量自回归模型 关于潜变量自回归模型&#xff0…

记一次 Visual Studio 2022 卡死分析

一:背景 1. 讲故事 最近不知道咋了,各种程序有问题都寻上我了,你说 .NET 程序有问题找我能理解,Windows 崩溃找我,我也可以试试看,毕竟对 Windows 内核也知道一丢丢,那 Visual Studio 有问题找…

揭秘市场热销的4款问卷调查工具

当谈到进行在线问卷调查时,选择正确的工具可以使调查过程完全不同。市场上有这么多可供选择的产品,要找到一款符合我们需求的工具不是一件容易的事儿。在本文中,小编将和大家一起讨论4款市面上好用的问卷调查工具盘点,并比较它们的…

基于C语言设计一个叫号系统

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 这道题的重点在于怎么处理患者的治疗过程。大二上学期的理论课上,我们在第一节的研讨课上对于这道题的实现进行了探讨。本题的患者排队与数据结构中的队列结构完全符合,当患者挂号后,检查该…

语音工牌:从线下沟通过程入手,实现运营商上门安装流程监管

近年来,随着网络的飞速发展,宽带越来越成为人们生活中必不可少的一部分,相应的,宽带上门安装、迁机及检修服务也成为运营商业务场景里重要的一环。 随着业务需求的增加和上门服务工程师队伍的壮大,以及消费者对服务质…

印度也开始自研 CPU ,5nm工艺、功耗是i9好几倍

前两天的新闻估计大家都看了,国内又一个科技巨头公司终止「造芯」。 OPPO 子公司哲库从成立到解散用了4年时间,这期间做出的马里亚纳X影像芯片也小有名气。 显然其目标不只是影像这一点,今年年初就有消息称 OPPO 自研 Soc 已经快到流片&…

Go语言中sync.Cond、atomic原子性和sync.Once的用法

目录 【sync.Cond】 【atomic原子性】 【sync.Once】 使用sync.Once实现单例模式 在 上一篇文章 中分析了Go语言sync 包中 sync.Mutex、sync.RWMutex和sync.WaitGroup的用法,这篇文章继续来讨论下sync包中关于 sync.Cond 、atomic原子性 和 sync.Once 的用法。…

23 KVM管理虚拟机-使用VNC密码登录虚拟机

文章目录 23 KVM管理虚拟机-使用VNC密码登录虚拟机23.1 概述23.2 前提条件23.3 操作步骤 23 KVM管理虚拟机-使用VNC密码登录虚拟机 本章介绍使用VNC密码登录虚拟机的方法。 23.1 概述 当虚拟机操作系统安装部署完成之后,用户可以通过VNC协议远程登录虚拟机&#…

【数据分享】2014-2023年全国监测站点的逐月空气质量数据(15个指标\shp\excel格式)

空气质量的好坏反映了空气的污染程度,在各项涉及城市环境的研究中,空气质量都是一个十分重要的指标。空气质量是依据空气中污染物浓度的高低来判断的。 我们发现学者王晓磊在自己的主页里面分享了2014年5月以来的全国范围的到站点的逐时空气质量数据&am…