中兴通讯云基础设施开源与标准总监李响:面向企业的开源风险与开源治理

如今,大部分企业所使用的基础软件都是基于开源软件实现然而不同于有供应商提供一站式服务的商用软件,开源软件通常来源于开源社区或各大代码托管平台,如何保证这些软件的安全性与合规性,就成为每个使用开源软件的企业必须思考的问题。

2022年7月21日,在中国开源软件推进联盟主办,赛迪传媒、《软件和集成电路》杂志社联合承办,CSDN 独家直播的“第十七届开源中国开源世界高峰论坛”上,中兴通讯云基础设施开源与标准总监李响带来了《面向企业的开源风险》的主题演讲。

以下为李响演讲实录:

大家好,我是来自中兴的李响,很荣幸有机会与大家交流一下面向企业的开源风险与应对。

不可或缺的开源

开源已经成为软件行业的基础,在操作系统、编程语言、开发测试工具链等方面,都有非常多的开源软件已经成为行业中的主流。

开源已经成为当前最前沿的技术发展的强大推动力,在当前最前沿的技术领域如云计算、人工智能等方面,都有非常多优秀的开源软件成为技术领域最强大的载体。

开源为企业带来诸多的有利之处,企业可以利用开源快速研发和搭建技术方案,降低成本。

中国企业当前已在广泛使用开源软件,据统计,2020年我国使用开源技术的企业占比已达到88.2%。与此同时,各行各业也在广泛地使用开源软件,开源代码在代码库中的占比也非常高。

  

开源风险概述

事情总会有好和坏两个方面,开源软件在给我们带来很多好处的同时,其中也潜藏了很多风险。

构成完整性风险

开源软件识别是企业产品开源治理的基石,如果出现遗漏,特别是到底使用了哪些依赖软件不能明确,就可能遗漏未识别的软件中存在漏洞的风险。所以,我们需要通过某些方法来保证避免构成完整性的风险:

  • 引入第三方开源软件扫描工具(BlackDuck、FossCheck等);
  • 制定流程和制度,产品发布之前必须使用第三方工具扫描,确保SBOM完整性;
  • 建立完善的企业对开源软件的生命周期管理。

许可证风险——开源传染性

对于基于开源软件开发的闭源商业项目,使用传染性较强的开源许可证的开源软件时,自身私有代码可能被迫开源。这就对企业提出了相关要求:

  • 指定允许使用的开源许可证清单(包括有传染性的许可证);
  • 制定企业内部的开源许可证使用规范,针对于每个有传染性的开源许可证,明确如何规避开源传染性的方法,知道企业内部研发项目工作。

许可证风险——许可证兼容性

对于企业自发开源的项目以及产品项目中的需开源部分,其中包含的许可证不兼容导致项目无法满足所有这些包含的许可证的要求,从而造成违规。这需要企业做到:

  • 在项目需要引入和依赖新的其他开源软件时,就要考虑许可证兼容性问题,确保新引入的开源软件与项目自身许可证以及已经包含的开源软件的许可证兼容;
  • 借助第三方扫描工具,明确自己开源项目的成分结构,分析所有组成本项目的开源软件的兼容性,避免不兼容问题。

知识产权风险——专利

在使用开源软件时,开源软件中可能埋藏有专利技术,会使得企业再使用时无意中侵权。从企业角度来说,有以下方式可以避免:

  • 项目在引入使用开源软件前尽力完成其中包含的专利调研;
  • 尽量引入使用有专利条款的许可证的开源软件;
  • 加入研发专利保护联盟,如OIN(Open Invention Network),获得免费的专利交叉许可授权。

知识产权风险——著作权

编写代码时引入开源软件,但对开源许可证中著作权条款没有完全遵守,引发侵权风险。对此,有以下两种方式可以对风险进行规避:

  • 遵循开源许可证要求,禁止删除引入的开源软件的著作权信息;
  • 引入开源软件应该以完整的形式引入,禁止以片段的形式引入,并通过第三方开源软件扫描工具检查和治理。

安全风险——安全漏洞

安全漏洞实际上是使用开源软件过程中面临的最大问题,也是各个企业最重视的问题。软件Bug等问题导致的安全漏洞会影响产品安全性。它有什么解决方式呢?

  • 引入第三方开源软件扫描工具(BlackDuck、FossCheck等);
  • 制定流程和制度,产品发布之前必须通过工具扫描确认并清除所有有影响的安全漏洞;
  • 对已经使用的开源软件,特别是已经商用部署的开源软件,需要对安全漏洞进行有效的跟踪,有漏洞出现时,及时发布补丁;
  • 在开源软件选型时,应倾向于选用对安全漏洞处理能力比较强的开源软件;
  • 对比较重要的开源软件具有修改能力,在开源社区不能及时提供补丁填补漏洞时,可以自行开发补丁。

安全风险——开源投毒

开源投毒风险可以分为两类:

  • 非特定危害对象:一些别有用心的人在开源代码中或者制作的开源制品中埋藏病毒和后门,放在非官方的仓库中;
  • 特定危害对象:个别开源社区的个别贡献者出于某些原因,提交了有破坏功能的代码贡献,针对特定国家、特定地区、特定用户、特定场景等产生效果等同于病毒的破坏性结果。

对于这种情况,具有以下规避方法:

  • 研发项目只从可靠的开源库中下载代码和制品;
  • 加强测试,特别是增加与国家、地区等不同场景相关的测试;
  • 使用稳定版本构建产品项目;
  • 引入灰度发布等方式,一旦出现问题使其影响限制在最小范围。

孤立风险——无法良好使用国外开源扫描工具

如果是在线方式使用,可能无法立即使用国外的开源扫描工具;如果是离线方式使用,License到期后无法续约,License有效期间也无法获取技术支持。有两种解决办法:

  • 企业内部开源治理系统必须与开源扫描工具解耦,可以在必要时替换;
  • 使用国内的开源扫描工具。

孤立风险——出口管制

某些企业可能遭受量身定做的特殊出口管制,将源自某些国家的开源软件无条件列入管治范围。这个可能性相对比较低,但也并非绝对没有可能。一旦出现,将使得大多数含有开源软件的产品无法出口。

针对该风险,当前并没有较好的解决方案,只能尽量采用国内主导的开源软件。

企业开源治理

开源存在的诸多风险,就要求企业必须建立一整套开源治理的制度以及相关的人员和资源保障体系。

主要可以分为三个领域:

  • 制度方面,要建立完整的开源生命周期管理制度和风险管理制度;
  • 人员方面,各个领域的专家需共同来参与到开源治理中来;
  • 资源方面,基础配置上要得到充分保障,如建立开源仓库、购买扫描工具等。

总之,企业的开源治理,其实主要的目的就是对风险的管理和管控,这是我们开源治理的主要目的之一。今天我就和大家分享到这里,如果大家后续有交流可以直接与我联系,谢谢大家。

点击2022(第十七届)开源中国开源世界高峰论坛-CSDN直播,查看更多精彩演讲内容!

猜你喜欢

转载自blog.csdn.net/csdnopensource/article/details/125921217