概述
一、什么是开源协议?
开源因其惊人的优势在开发人员中得到了广泛的应用。数据表明,97%的软件应用程序依赖于开源组件,而且根据GitHub的调查统计,目前每一个项目的平均依赖项高达203个之多。
简单的来说,开源协议(许可证)就是将代码(项目)转化为开源软件的东西。开源协议基本上可以看作是开源依赖项的作者和使用服务的客户之间合法的绑定契约,约束的内容就是开源代码。开源协议往往会制定一些特定的条款,只有在满足这些条款的前提下,该软件才能用于商业分发。
作为一名开发人员,你不能只是使用、复制、修改或分发开源依赖项。为了在你的软件中正确且合法的使用开源组件,必须了解你在代码中使用的每个开源依赖项的协议的权限、限制与使用条件。
二、开源协议有哪些类型?
每个开源软件都包含一个(或多个)协议,而且现在各种协议的数量甚至达到了上百个之多。但这些协议大致上都可以分为两大类:宽松的(Permissive)和严格的(Copyleft)。
- Permissive:顾名思义,这种开源协议提供了更多的自由权限来使用、复制、修改和分发开源代码。这些限制对于第三方软件的使用只有很小的限制,并且允许在专有派生项目中进行使用。
- Copyleft:这些类型的协议就不那么宽松了,它们通常包含种种对于开源依赖项的限制。在这种类型的协议下,我们可以将代码视为开源依赖项作者的知识产权,你需要得到“批准”才能进一步使用。因此,使用这种依赖项最明显的限制之一就是使用者有义务且必须完全开源他们的代码,这对于一些个人和企业来说是很难接受的。
以下是一些最流行的许可证及其类型:
举例比较:
- GPL:由Richard Stallman创建,目的是保护GNU软件不被侵犯。这个协议属于Copyleft类型,它要求任何使用GPL许可证的开源依赖项的人必须以开源的方式发布他们的代码。
- Apache:由Apache软件基金会创建,目的是允许免费试用、修改和发布Apache许可的产品。Apache2.0属于Permissive类型的许可,但是为了合法的使用其产品,还是有一些基础的限制和许可条件。
在下表中,我们可以看到这两种许可证之间的具体细节比较:
(在GPL 3.0中,GNU组织将专利使用方面添加到了权限列表中,允许开发者添加本地免责声明,并扩展了开发选项。所有这些妥协都是为了在全球范围内扩大GPL的使用。)
三、为什么开源协议很重要?
毫无疑问,编写和发布一个不合规的软件可能会使你的业务处于危险之中。一个不符合协议要求的企业所面临的风险不仅仅是诉讼,还可能被迫对一些项目进行开源。这会损害你在开源社区和客户中的商业声誉,并阻碍某些产品的商业销售。
- 法律诉讼案例
有一个近期的诉讼案例,Elastic VS Amazon。Elastic不得不将其协议更改为一个不同的、限制性的类型,以防止Amazon使用其服务分发来自Amazon Web Services的Elastic构建的软件。
“阻止用户从Amazon Web Services购买Elastic内置软件,并转而使用限制性的软件许可证。这一举措为两家公司之间长达数年的争端画上了句号。这场争端始于2015年,当时Amazon的云部门推出了自己基于Elasticsearch代码的竞争产品,并将其命名为Amazon Elasticsearch Services。这导致人们对哪家公司开发了这款软件产生了困惑,并使Elastic的用户产生了分流。 ”
Elastic将他们的许可证从Apache2.0更改为SSPL,官方解释是:“我们的许可证更改旨在防止公司采用我们的Elasticsearch和Kibana产品,并在没有与我们合作的情况下直接提供相关的服务。”
四、如何解决?
每个组织都必须合法且正确的管理他们的开源许可风险,但这实际上是一个非常乏味且富有挑战性的工作,因为:
- 公司项目内的代码存在大量开源依赖项
- 收集他们正在使用的每个开源协议
- 将这些协议分类
- 优先考虑这些协议可能存在的风险
- 修复合规性问题
行业内对于解决开源安全问题其实已经有了一个共识,那就是SCA工具。市场上现在存在不少专业的SCA工具与平台,但基本上都是国外厂商,如新思科技、checkmarx等等。这些舶来的SCA工具我相信他们的质量都很好,但如果我们国内没有可以替代的国产化软件,只会面临更加严峻的“卡脖子”危机,毕竟谁也不想“微软黑屏”事件再次发生。
此时,我们不禁想问,在此严峻的行业背景之下难道就没有一款国产本地化代码审查工具/平台吗?
是泛联新安的CodeAnt开发安全平台就是其中较好的一款产品,CodeAnt采用SaaS模式,试用方便使用成本低,做到完全本地化的同时尊重不同语言用户需求,具备专业响应及时的中文客服团队。从能力上来说,CodeAnt能自动识别软件代码组成成分(如开源组件、商用组件、自研代码)和代码漏洞,自动分析溯源二进制样本中包含的恶意代码家族、APT组织、恶意代码类型等信息,清晰展示相关数据。最重要的是,CodeAnt核心代码均为自主研发,拥有完全自主知识产权。
国产基础软件自主可控任重道远,开源组件和代码安全问题不容忽视。仅仅知道开源协议还远远不够,如果规避开源风险才是摆在每个企业面前最重要的问题。
最后
以上就是大胆野狼为你收集整理的开源协议概述和SCA解决方案一、什么是开源协议?二、开源协议有哪些类型?三、为什么开源协议很重要?四、如何解决?的全部内容,希望文章能够帮你解决开源协议概述和SCA解决方案一、什么是开源协议?二、开源协议有哪些类型?三、为什么开源协议很重要?四、如何解决?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复