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

近日,在「江狐会」广州站上,极狐(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 大直播课程正在进行中 ,立即上车,启程软件安全开发实践之旅!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Cplex的数据类型结构及基本语法功能

本序列将会重开一门新的序列----数学求解器cplex,文章不做简单介绍,不灌水,直接给大家进行讲述如何上手实操,并有针对性的给出相应案例分析。 OPL编程 OPL是ILOG团队为运筹学专家量身定制的一种优化建模语言,语法相对简单&#x…

ChatGPT国内免费使用方法有哪些?

目录 ChatGPT介绍:一、ChatGPT是什么?二、ChatGPT发展:三、ChatGPT 优点:四、国内使用ChatGPT方法五、结语: ChatGPT介绍: 一、ChatGPT是什么? ChatGPT 是一个基于语言模型 GPT-3.5 的聊天机器人,ChatGPT模型是Instruct GPT的姊妹模型(siblingmodel&a…

【5.15】一、软件测试基础—软件概述

目录 1.1 软件概述 1.1.1 软件生命周期 1.1.2 软件开发模型 1.1.3 软件质量概述 1.1 软件概述 软件是相对于硬件而言的,它是一系列按照特定顺序组织的计算机数据和指令的集合。 软件的生命周期:软件从“出生” 到 “消亡” 的过程。 1.1.1 软件生…

Foxit PDF Reader及Editor任意代码执行漏洞复现(CVE-2023-27363)

0x01 产品简介 Foxit PDF Reader是一套用来阅读PDF格式文件的软件,由福建福昕软件所研发,主要运行在Windows操作系统上。 0x02 漏洞概述 Foxit PDF Reader及Editor中存在任意代码执行漏洞,由于Foxit PDF Reader/Editor未验证exportXFAData方…

RocketMQ介绍

一、MQ简介 1.1 项目工程弊端 1.2 MQ简介 MQ(Message Queue)消息队列,是一种用来保存消息数据的队列 队列:数据结构的一种,特征为 “先进先出” 何为消息: 服务器间的业务请求 原始架构: 服务器中的A功能…

Flink学习——基本概述

目录 一、简介 1.1 flink是什么 1.2 flink主要特点 核心特性: 分层API: 1.3 flink vs spark 1.3.1 数据处理框架 1.3.2 数据模型 1.3.3 运行时架构 二、wordcount实例 2.1 项目依赖 2.2 添加框架支持 2.3 批处理 - DataSet API 2.4 有界流处…

DBCO-COOH分子量:305.3,CAS:1353016-70-2,二苯基环辛炔-羧基;类似有DBCO-NH2、SH、MAL、NHS等等

中文名称:二苯基环辛炔-羧基 英文名称:DBCO-acid 英文别称:DBCO-COOH cas: 1353016-70-2 分子式:C19H15NO3 分子量:305.3 DBCO-COOH是DBCO 衍生化的常用构件,在EDC、DCC和HATU等活化剂存在下&#xf…

汇编学习教程:灵活寻址(四)

引言 在上篇博文中,我们学习了 [bxsi] 的灵活寻址形式,由此讲解了汇编中的多重循环实现。那么本篇博文中,我们将继续学习灵活寻址其他实现形式。 本次学习从一道编程案例开始学起。 编程示例如下: assume cs:code,ds:datadata…

【jvm系列-12】jvm性能调优篇---GUI工具的基本使用

JVM系列整体栏目 内容链接地址【一】初识虚拟机与java虚拟机https://blog.csdn.net/zhenghuishengq/article/details/129544460【二】jvm的类加载子系统以及jclasslib的基本使用https://blog.csdn.net/zhenghuishengq/article/details/129610963【三】运行时私有区域之虚拟机栈…

openEuler 成功适配 LeapFive InFive Poros 开发板

近日,openEuler RISC-V 23.03 创新版本在跃昉科技的 Poros 开发板上成功运行。 openEuler 在 Poros 上适配成功,XFCE 桌面启动正常,文件系统、终端模拟器和输入法等相关 GUI 应用也运行流畅,Chromium 浏览器和 LibreOffice 等应用…

大屏只用来做汇报?知道这6个应用场景,直接升职加薪!

五一假几个朋友小聚了一下,好久没联系了,现在才知道大家从事行业五花八门的。知道我从事IT行业好几年,他们非要让我讲讲现在异常火爆的大屏,说是所在企业单位都在研究这玩意儿,有的业务人员焦虑不已不知道如何下手&…

SD-如何训练自己的Lora模型

官方地址:GitHub - bmaltais/kohya_ss 尝试过mac和Ubuntu,装上后都会有问题 Windows按照官方步骤安装即可 第一步 git clone https://github.com/bmaltais/kohya_ss.git cd kohya_sspython -m venv venv .\venv\Scripts\activatepip install torch1.…

SpringCloud Alibaba详解

目录 微服务架构概念 服务治理 服务调用 服务网关 服务容错 链路追踪 SpringcloudAlibaba组件 Nacos 负载均衡 Ribbon Fegin Sentinel 高并发测试 容错方案 Sentinel入门 Feign整合Sentinel 微服务架构概念 服务治理 服务治理就是进行服务的自动化管理&#xf…

pod的基本介绍| harbor仓库的搭建 tomcat镜像拉取

pod的基本介绍| harbor仓库的搭建 tomcat镜像拉取 一 Pod基础概念:二 通常把Pod分为两类:三 Pod容器的分类:四 应用容器(Maincontainer)五 镜像拉取策略(image PullPolicy)六 部署 harbor 创建私…

SpringMVC高手进阶

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎 📚系列专栏:Java全栈,…

解密Netty中的Reactor模式

文章目录 单线程Reactor模式多线程Reactor模式Reactor模式中IO事件的处理流程Netty中的通道ChannelNetty中的反应器ReactorNetty中的处理器HandlerNetty中的通道Channel和处理器Handler的协作组件Pipeline Reactor(反应器)模式是高性能网络编程在设计和架构方面的基础模式.Doug…

Science文章复现(Python):图1 - Aircraft obs(机载的观测 CO2)

之前有写过science文章后处理的复现Science文章复现(Python):在机载观测中明显的强烈南大洋碳吸收 在这里是针对图细节的理解: 首先需要下载这个项目 https://github.com/NCAR/so-co2-airborne-obs 这里的环境配置会比较麻烦 con…

00后卷起来,真没我们老油条什么事了···

都说00后躺平了,但是有一说一,该卷的还是卷。 这不,前段时间我们公司来了个00后,工作没两年,跳槽到我们公司起薪20K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。…

【刷题之路】LeetCode 232. 用栈实现队列

【刷题之路】LeetCode 232. 用栈实现队列 一、题目描述二、解题1、图解主要思路2、先实现栈3、实现各个接口3.1、初始化接口3.2、入队接口3.3、出队接口3.4、取队头接口3.5、判空接口3.6、释放接口 一、题目描述 原题连接: 232. 用栈实现队列 题目描述:…

网站测试的主要方法

网站测试的主要方法 网站测试是保证网站质量的重要手段,通过对网站进行测试可以及时发现问题并修复,提高用户体验和网站的可靠性。本文将介绍网站测试的主要方法。 1.功能测试:测试网站的所有功能是否正常。通过模拟用户的操作,确…