今年来,开源的热度持续快速上升。开源给各大企业、组织带来了诸如迭代更快、成本更低、质量更高的收益;然而,企业在合规使用开源软件的过程中,也会面临一系列知识产权风险,这些风险主要源于开源许可证的传染性特征、不同开源许可之间可能存在的不兼容性,以及开源软件使用规则中所蕴含的不确定性等因素。
01.什么是开源许可
开源许可是一种针对开源软件使用者的约束,目的在于规范受著作权保护的软件的使用或者分发行为。
常见的开源许可,如下图1中所示。这些许可证,主要分为permissive license(宽松许可)和Copyleft许可(作者保留一定的版权,在任何派生作品中继续应用相同的条款),它们对知识产权使用、修改和分发的场景作出相应的约束。
这些不同的许可之间,上文已提及可能会存在不兼容、传染性(即某个开源组件被某个应用使用后,该应用必须遵循该开源组件所使用的许可证或部分许可规则)差异等因素,如图2中所示。因此,在企业或者组织中,使用开源组件或依赖时,往往会面临各种合规性风险。那么,如何在研发过程中提前识别并规避此类许可风险呢?下文将接着展开论述。
02.怎么做来规避许可风险
对于企业、研发组织或者个人而言,为了规避上文提到的许可风险,应该做好哪些工作呢?笔者从以下三点给出建议:
对于企业或者个人而言,要做到以上三点,实际上都需要借助一个工具或方案来识别实际研发过程中所使用的开源软件是否合规。接下来,我们将进一步详细介绍开源制品的许可扫描的处理方案。
03.制品扫描的方案
在实际生产中,为了应对许可风险,我们可以借助类似Trivy、Murphysec等开源工具,来扫描项目中使用的依赖,这些工具能够一键识别出项目中所有的开源组件,并且列出它们所对应的许可证信息。
获得扫描结果后,我们可以在许可证信息的基础上,进一步补充说明许可风险信息。在这一步骤中,不同的组织或者团队会有两种不同的处理方式:一种是明确标记出许可证合规的风险等级;另外一种则是不标记等级,而是直接标注是否合规。这样,在项目中可以通过查看许可证合规风险的提示信息,来判断项目是否存在不合规的情况。
在项目实践中,上述的扫描方案通常会被集成于制品库产品中,与制品的安全扫描(即漏洞扫描)场景合为一个场景进行处理。制品的扫描结果(涵盖了漏洞安全扫描和许可证扫描)可以被整合为制品的质量规范,依据该规范,可以指定制品的准入或者准出的门禁。基于这样的门禁机制,制品的合规性在很大程度上可以通过自动化的方式有效避免。
综上所述,各企业和个人若能做到文中所述的几点,那么在制品合规风险上就不必再如履薄冰;此外,文中提及的制品扫描解决方案和实践方式,在一定程度上能够提升制品合规的生产效率和准确性。
申请演示