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

先跟大家分享一个故事

一战完结后,曾受到德国重创的法国,为了避免德军再次入侵,举国之力,耗时 10 年、消耗 50 亿法郎,在西南边陲构筑延绵数百公里的马奇诺防线,堪称军事上的一大奇观。

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

当初,“马奇诺防线” 被用来比喻劳神费劲而没有用途的货色。

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

代码数据作为企业外围数据资产,同样要防止 “马奇诺防线” 式的保障,那么应该如何保障代码数据安全呢?咱们基于 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 大直播课程正在进行中 ,立刻上车,启程软件平安开发实际之旅!