王旭

蚂蚁资深技术专家

读完需要

10

分钟

速读仅需 1 分钟

在前不久的上海外滩大会上,蚂蚁资深技术专家、Kata Containers 创始人王旭向参会者分享了开源、开放协作与软件安全可信的话题,本文根据演讲内容编辑整理而成。

今天,我想在这里和大家探讨开源与安全的话题。在过去,人们一直有一些疑问:开源是否比闭源更安全?开源项目如何保证自己的安全?如何通过开源社区促进业界改善安全性?

这里,我将以KataContainers项目以及蚂蚁基础设施团队的实践为例,对这些问题做一些探讨,来看看社区和业界是怎么做的。

1

开源项目如何保证安全性?

首先是开源比闭源更安全吗?

你可能从哪里听说过:开源软件相比闭源软件的一个优越性在于,开源软件更安全。

开源运动的一位颇具话题性的早期领军人物Eric S·Raymond,在他的著作《大教堂与集市》中写道:

“在一群足够多的beta测试者与共同开发者的情况下,几乎所有问题都可以被快速定位,并且由某个人迅速解决。”

“有些所谓安全系统,只有在其不为人所知时才是安全的,当心这些虚假的隐秘性。”

这些论点几乎是无可辩驳的。然而,争论就在于——开源是否意味着更多专业的review,更多的人看到代码甚至是发现漏洞了,他们是否会第一时间来帮助开源项目改善质量而非第一时间利用漏洞进行入侵?开源项目是如何第一时间处理漏洞的?

下面让我们来看一个例子。

这是KataContaienrs 项目的 VMT 流程图,描述了项目漏洞事件响应团队接收到安全报告后是如何处理的。

所谓VMT,是 Vulnerability Management Team,这是一个应对安全事件的“特权”工作组,成熟的、社区化的开源项目都有这样一个核心团队。当安全研究人员发现在他们的研究中发现项目存在安全漏洞的时候,会向VMT工作组发出报告,而VMT收到之后,会在寻求修复方案的同时,对问题进行评估、去权威机构分配CVE编号,在patch merge之后,还需要确保主要用户的安全,然后再对外公开修复信息。

这里的一个关键点是,开源项目VMT团队和安全人员的配合。只有规范运作的开源项目和白帽子们良好互动,才能真的做到第一时间修复漏洞、保护用户,而不是放出0-day漏洞。这中间的响应流程,即使对于“开源”软件,也是不开放的。

所以,这里我们的结论是——不是你把代码放在 GitHub 上开源了,安全就随之而来了,你要有吸引安全人员的活跃社区和可以响应问题的机制。这里我们知道,有些个人化的开源项目是没有这样的响应机制的,这样的开源项目并没有让用户得到安全,相反,一旦有大量用户使用,得到的是很多惊险。

VMT机制保证了开源项目本身的安全,那么,在一个庞大的开源社区,比如云原生社区,它由数量繁多的开源项目组成生态,关于社区的整体安全性,还会有哪些有趣的互动呢。

2

如何提升开源社区的安全水位

开源的一个便利之处就是,如果你觉得哪里不够好,可以自己去弥补。在云原生 landscape 里,搜一下安全相关的品类,立刻可以得到一大片的开源安全组件或工具:

需要说明的是,这些项目不是预先设计的目标,而是社区互动产生的结果。它们反映了一个自组织生态里的演化规律,而不是操作守则。在开源协作里,这样的项目会自然的涌现出来。

这里,我想以KataContainers为例,来介绍下如何开发一个开源项目并融入社区。

首先我先来简单介绍一下 Kata Containers——

Kata Containers 首先是一个容器运行时引擎,在生态中的位置和 runc 是一致的。但是,和 runc 不同的是,Kata 用轻量级虚拟化技术来做隔离,这个强隔离带来的不仅是安全隔离,也包括性能隔离和故障隔离。

不过我要强调的一点是,Kata 仍然是一个容器引擎,在系统中是完全对等替换 runc 的,对云原生应用来说,它是完全透明的,即使从性能和开销角度说,我们也已经对它进行了很多轻量化的改造。

所以,我们说,它同时兼有虚拟机和容器两者的优点,secure as VM, fast as containers。

三年来,KataContainers最让我感到骄傲的,是通过开源社区,我们撬动了社区里的其他大玩家,提升了整个云原生世界的安全水位,利用开放协作提升了云原生领域的安全性、改善了社区的信任。

Kata创立之前的虚拟化容器技术的发展并不快。2015年上半年,我们就开源了 hyperContainer 和 runV,Intel 也同时开源了clear containers。不过,当时我们的影响还是非常有限的,想加入CNCF都被拒之门外,但我们还是在 Kubernetes 社区里制造了一些影响。比如在 2016 年的时候,我们和 kubernetes node 团队一起推动了 CRI 接口,来抽象化容器引擎。

2017年9月份,我在一个会议上遇到当时 Intel OTC 的时任 GM,也是Intel 的 SSP VP, Imad Sousou,我们决定一起合作一个开源项目,在基金会的帮助下,我们一起工作了三个月,最终在2017年12月的 KubeCon 大会前一天,发布了Kata Containers这个项目。

随后的故事可以用峰回路转来形容,在2018年上半年,也就是紧接着Kata发布之后的下一次KubeCon,Google发布了gVisor安全容器项目,再之后半年,在2018年AWS发布了轻量虚拟化VMMFireCracker,并引用了 Kata Containers项目来做对比。而在这之间的2018年中,Google 推动containerd 改进了 Shim API,来进一步让安全容器可以和runC一起被支持,随后这个被称为 shim-v2 的 API 也得到了 CRI-O 的支持,加上 RuntimeClass 和其他一些改进,可以说,2018年是安全容器的爆发年。

今天,Kata拥有了不小的用户社区,得到了 RedHat,SuSE 和 Ubuntu 三大主流 distro 的支持,也在很多不同行业进入了生产之中,不仅我们蚂蚁、阿里用上了,百度的 Kata 案例也在去年的 OpenInfra Summit 上得到了超级用户大奖,在今年10月19日的OpenInfraSummit大会上,我在Keynote里会正式宣布KataContainers 1.x在12个稳定发布之后,正式发布2.0版本。不仅 Kata,Google GKE 的用户还可以用上 gVisor,它帮助用户躲过了前不久的 CVE-2020-14386漏洞。

可以说,开源的力量就在于此——代码只是它对世界的影响力的冰山一角,在水面之下的那些开放协作和互动,让社区的用户受益,得到了更多的好项目,让社区向更好的方向发展。

3

基金会如何让开源世界更安全?

要想促进整个开源世界的安全,开源社区的治理组织不能不提。其中,基金会不仅可以接纳安全项目,还可以安全为目的建立基金会,将天南海北的开发者聚集到一起,攻克共同的安全课题,也是开源安全的重要一环。

让我们以Linux旗下的机密计算联盟CCC为例来说明,蚂蚁通过将项目捐献给CCC、参与这样的组织从而对开源社区的安全作出贡献。

在数据安全和隐私保护越来越受到重视的今天,机密计算(Confidential Computing)是一个具备广泛应用前景的前沿技术领域,可信执行环境(Trusted Execution Environment)作为其重要分支,受到业界科技巨头的重视。

机密计算联盟就是在这样的背景下诞生的,CNCF中国区总监Keith Chan告诉我们:CCC的任务和目标之一是在公有云上实现机密计算,这样我们可以做到以前无法做到的事情,其中比较典型的就是在云上运行敏感数据的计算,机密计算将作为安全体系的核心手段来保护这些敏感数据。

要实现这一目标并不容易,因为机密计算仍然处于早期,业界鲜有应用,几家企业各自推进自己的研发应用,但难以对业界形成示范效应。因此需要基金会这样的组织来推进这一过程。

CCC希望通过开源开发的原则聚集全世界的人一起来共建机密计算的技术和平台,具体的做法包括:

  • 定义机密计算,并通过开源的方法让全世界的人可以参与,构建生态圈,加快提高市场的接受度和采用率;

  • 通过开源的方法简化企业对机密计算应用的开发和管理;

  • 定义一些基础的服务和框架,并让开发者能够放心地采用这些技术。

作为CCC关键成员的蚂蚁集团也将捐赠Occlum LibOS,这是来自中国的第一个机密计算开源项目,也是目前易用性最好的机密计算LibOS。

通过将其捐赠给基金会,Occlum将成为社区主导的开源项目,将吸引更多业界专家共建,并将和社区其它开源项目合作,如与HyperLedger的avalon项目的合作,在更广泛的应用场景中落地。

另外,不仅仅是Occlum,蚂蚁集团还正式开源了KubeTEE,解决机密计算在集群中的问题,还有正在研发中的HyperEnclave,解决TEE部署环境问题。这些机密计算的组件,也是蚂蚁对提升整个社区和业界的安全性所做的努力。

正是有开发者、组织、业界机构的共同努力,才让开源项目和社区更加安全,而更安全的开源社区,也将让整个世界变得更加安全。

- EOF -

想要加入中生代架构群的小伙伴,请添加群合伙人大白的微信

申请备注(姓名+公司+技术方向)才能通过哦!

阿里技术精彩文章推荐

往期推荐

深度:揭秘阿里巴巴的客群画像

多隆:从工程师到阿里巴巴合伙人

阿里技术专家楚衡:架构制图的工具与方法论

蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点

阿里文娱技术专家战獒: 领域驱动设计详解之What, Why, How?

阿里专家马飞翔:一文读懂架构整洁之道

阿里专家常昊:新人如何上手项目管理?

蚂蚁集团沈凋墨:Kubernetes-微内核的分布式操作系统

阿里合伙人范禹:常挂在阿里技术人嘴边的四句土话

阿里技术专家都铎:一文搞懂技术债

支付宝研究员兼OceanBase总架构师杨传辉:我在数据库梦之队的十年成长路

阿里技术专家麒烨:修炼测试基本功

阿里计算平台掌门人贾扬清:我对人工智能方向的一点浅见

蚂蚁资深算法专家周俊:从原理到落地,支付宝如何打造保护隐私的共享智能?

阿里高级技术专家箫逸:如何画好一张架构图?

阿里高级技术专家张建飞:应用架构分离业务逻辑和技术细节之道

蚂蚁科技 Service Mesh 落地实践与挑战 | GIAC 实录

阿里6年,我的技术蜕变之路!

蚂蚁集团涵畅:再启程,Service Mesh 前路虽长,尤可期许

阿里P9专家右军:大话软件质量稳定性

阿里合伙人程立:阿里15年,我撕掉了身上两个标签

阿里高工流生 | 云原生时代的 DevOps 之道

阿里高级技术专家邱小侠:微服务架构的理论基础 - 康威定律

阿里P9专家右军:以终为始的架构设计

阿里P8架构师:淘宝技术架构从1.0到4.0的架构变迁!12页PPT详解

阿里技术:如何画出一张合格的技术架构图?

   END
#架构师必备#点分享点点赞点在看

蚂蚁资深技术专家王旭:开源项目是如何让这个世界更安全的?相关推荐

  1. 蚂蚁金服王旭:开源的意义是把社区往前推进一步

    互联网技术发展速度之快是所有从业者甚至非从业者都能感受到的.尤记得在世纪之交时,那时候互联网刚刚在中国开始向民用普及,不说支撑大规模的网站访问量的相关技术,就连 Linux.负载均衡甚至都没有被普遍使 ...

  2. 蚂蚁资深技术专家刘晓莹十年支付宝回忆录

    当"母亲"."coding"."技术Leader"的标签同时存在于一个人身上,会带来怎样不可预知的化学反应?母亲节来临之际,我们特地采访了& ...

  3. 蚂蚁金服资深技术专家经国:云原生时代微服务的高可用架构设计

    经国 蚂蚁金服数字金融线担任技术风险架构师 读完需要 15 分钟 速读仅需 5 分钟 经国,蚂蚁金服资深技术专家,毕业于浙江大学. 2014 年加入蚂蚁金服,先后负责过支付宝的单元化.弹性.去 ORA ...

  4. 阿里云开源项目 OAM 负责人张磊入选「中国开源先锋 33 人」

    来源|阿里巴巴云原生公众号 2020 年 12 月 23 日,由 SegmentFault 思否发起的第二届"中国技术先锋"年度评选结果揭晓,CNCF 应用交付领域小组 Co-ch ...

  5. 对话 Apache 巨咖 - 如何做好一个开源项目?

    编辑|常郁松 责编|王福政 前言 这是一篇两年半前的活动记录,应该最早的一批Apache 项目 Committer 参加的 Meetup,在这次会上跟大家分享了很多 Apache 项目孵化的相关的经验 ...

  6. 视频相关十大开源项目

    视频相关十大开源项目 1. OpenH323项目 (★★★★★) 上榜理由:最著名的H.323开源协议栈,视频会议开发必备协议栈,强烈推荐 最著名的H.323开源协议栈,包含了全部的H.323协议功能 ...

  7. 视频会议十大开源项目

    在视频会议领域,有许多可以值得参考的开源项目,这些开源项目有的是协议栈.有的是编码器或者是传输协议,由于视频会议系统是一个综合性的应用系统,里面包含功能较多,如能把这些开源项目选择性的加入我们的视频会 ...

  8. 视频会议及流媒体十大开源项目

    在视频会议领域,有许多可以值得参考的开源项目,这些开源项目有的是协议栈.有的是编码器或者是传输协议,由于视频会议系统是一个综合性的应用系统,里面包含功能较多,如能把这些开源项目选择性的加入我们的视频会 ...

  9. 我们找阿里云资深技术专家李响聊了聊开源和云原生

    简介:去年,全球顶级开源社区云原生计算基金会CNCF正式宣布其技术监督委员会席位改选结果.阿里云资深技术专家李响入选,成为该委员会有史以来首张中国面孔. 李响是 CoreOS 最早期的工程师之一,参与 ...

最新文章

  1. python读取文件r_python read文件的r和rb的区别
  2. nginx 修改html header,nginx 安全笔记 (修改nginx的header信息和错误显示版本号)
  3. iOS多线程之7.NSOperation的初识
  4. java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^
  5. 由浅入深:自己动手开发模板引擎——解释型模板引擎(二)
  6. 乐理 music theory
  7. 【转】在Asp.net中弹出对话框,然后跳转到其他页面问题
  8. 《OpenGL编程指南(原书第8版)》——计算着色器
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的校园多媒体大赛设计平台
  10. c++读取.dat文件_Python之旅,Day5 - 文件操作
  11. kafka--Struct Streaming--console案例入门
  12. pytorch 中nn.MaxPool1d() 和nn.MaxPool2d()对比;nn.functional.max_pool1d
  13. python编写音乐标签_如何用PYTHON代码写出音乐
  14. java基础教程 吴仁群 试读_清华大学出版社-图书详情-《Java基础教程》
  15. python端口扫描|C++ 扫描端口|编程实现端口扫描器|扫描指定端口
  16. win10无法新建文件夹怎么办?(已解决)
  17. PCL学习笔记(3)——openni2_grabber从相机获取点云数据
  18. C++程序设计语言学习笔记:名字空间
  19. SEO优化推广的特点
  20. 网络共享存储器巴法罗BUFFALO的LS-WXL/E出现EM模式的解决方案

热门文章

  1. android 桌面视频播放器,ZY-Player ,一款跨平台桌面端视频资源播放器
  2. C语言的单向链表的操作方法
  3. 浅析libcurl多线程安全问题
  4. GLIBC中NPTL线程实现代码阅读
  5. 64位汇编中的布尔指令
  6. Java IO流练习题-获取文本上每个字符出现的次数
  7. Python3回调函数
  8. ubuntu下安装mssql(sqlserver)客户端及使用
  9. 纯干货:Linux抓包命令集锦(tcpdump)
  10. Python学习笔记--8.6 函数--递归