返回文章列表

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

极狐GitLab
一体化安全 DevOps 平台

近日,在「江狐会」广州站上,极狐(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 一体化DevOps平台 专为中国用户研发,免费试用60天专业版高级功能
售前咨询
联系电话
在线支持
预约演示