一、开源软件及生态对企业IT建设的挑战和影响
随着互联网的发展,开源生态越来越丰富,开源软件在企业中的应用越来越广泛。然而开源软件也是一把双刃剑,它在为企业带来多方面积极影响的同时,也给企业带来了各种新的风险挑战。
1.积极影响
(1)降低运营成本
对于企业来说,降低成本一直是最重要的考虑因素之一。使用开源软件可帮助企业降低软件开发、维护和托管等方面的成本。由于开源软件是免费使用的,企业可以避免购买商业软件许可证的费用;并且由于源代码是公开的,企业可自行修改软件以满足自己的业务需求,而无需支付额外的软件定制开发费用。
此外,由于开源社区通常拥有大量的开发者资源,企业可以从中获得技术支持,获取解决方案,并参与到开源项目的开发过程,提升技术实力。
(2)改善开发速度和质量
使用开源软件也可以改善软件开发速度和质量。例如,开源软件中存在众多编写良好的代码库和工具,可以提高开发人员的生产力,节省开发时间。并且由于源代码是公开的,开发人员可以轻松地理解和修改其他开源软件的代码,提高代码质量和可维护性。
此外,开源软件往往经过了广泛的测试和审查,因此在代码质量和安全方面表现更好。当企业在其业务运作中采用这些软件时,其系统将更加可靠和安全。
(3)促进互动和创新
开源软件的另一个重要特点是其社区活动和开放性,这在某种程度上促进了企业和社区之间的互动和创新。例如,在某些情况下,企业可以在使用开源软件的同时向开源社区做出贡献,为其开发和改进做出自己的贡献。这种贡献对于企业来说是一种回馈,也可以提高企业在开源社区中的知名度和认可度。
此外,开源软件还可以促进企业的创新发展,因为任何人都可以在既有软件代码的基础上进行开发和改进。这种开放性促进了创新和技术发展,为企业带来更广阔的可能性。
(4)扩大市场影响力
通过向开源社区贡献代码或参与开源项目,企业可以提高其在技术领域的影响力,建立品牌声誉,并吸引优秀的开发人才。
2.风险挑战
(1)安全和数据风险
开源软件是由多个开发者共同完成的且其协议存在免责条款,在给企业带来便利的同时,也会引发一些安全漏洞及数据安全问题。2020年Synopsys的报告[1]中指出,在经过审计的代码库中,75%包含具有已知安全漏洞的开源组件,而2018年这一比例是60%。此外,49%的代码库包含高风险漏洞,前一年则是40%。由此可见,开源软件存在一定的安全漏洞,且近年来持续增高。如果企业不能及时地发现安全漏洞,将会出现严重的数据泄露等安全风险问题。
使用开源软件可能带来的安全漏洞类型较多,主要包含以下几种:
代码注入:开源软件可能存在代码注入漏洞,攻击者可以通过输入恶意代码,导致系统被黑客攻击。
跨站脚本攻击:攻击者可以利用开源软件的跨站脚本漏洞,在用户浏览器中执行恶意脚本,窃取用户信息。
文件上传漏洞:开源软件可能存在文件上传漏洞,攻击者可以利用该漏洞上传恶意文件,进而控制服务器。
权限提升:攻击者可以利用开源软件的权限提升漏洞,从低权限用户升级为高权限用户,进而窃取敏感信息或破坏系统。
(2)运维和技术风险
使用开源软件对企业运维和技术支持工作带来了很大的挑战,主要包括:
技能要求:开源软件往往涉及特定领域的技能和知识。技术支持人员需要具备多样化和跨领域的技能以处理各种问题,这增加了人才选拔和培训难度。
资源和支持:与商业软件相比,开源软件可能没有官方支持,获取帮助和解决方案的途径主要靠论坛和社区。技术支持人员在解决问题时,可能需要花费更多的时间和精力寻找资源、参考实践案例和社区中的经验。
软件兼容性和稳定性:由于开源软件的更新迅速和多样性,可能导致版本兼容性问题。技术支持人员需要评估不同版本之间的兼容性,处理软件升级、补丁和依赖关系的问题。
安全管理:开源软件可能会引入未知的安全风险。技术支持人员需密切关注漏洞和修补程序,保持软件的安全性。
许可证合规:处理开源许可证和法律要求,确保软件的合规使用,避免潜在法律风险。
由此可见,企业在使用开源软件时,对技术人员提出了更高的技能要求,要求需要配备具有更广泛的知识、技能和能力的各方面人才,以有效应对可能遇到的挑战。同时,需要灵活利用和参与开源社区,不断提升技术水平,以应对这些挑战。
(3)许可证知识产权等法律风险
尽管开源软件具有代码公开透明、“免费”使用等优势,然而它仍然受到许可证的制约。近年来,由开源许可证引发的知识产权的案例逐年增多。2019年11月6日,中国第一个关涉GPL许可证的诉讼案件“柚子案”由北京市高级人民法院作出二审终审判决,开源许可协议的法律效力在我国得到证实。
2020年Synopsys公司发布的开源软件安全和风险分析(OSSRA)报告[1]中详述的经过审计的代码库中67%的代码库中包含某种形式的开源代码许可证冲突,33%的代码库中包含没有可识别许可证的开源组件。开源许可证被认为是具有法律效力的合同,如果违背相关协议,会导致一系列的知识产权等法律风险问题,造成企业产品召回、被迫对外公开自有知识产权代码等。
使用开源软件时要关注知识产权问题,遵守许可证规定,确保合规使用,以降低潜在法律风险。使用开源软件可能会涉及到的知识产权问题主要包括:
许可证选择和管理:开源软件有不同类型的许可证,每个许可证都有其使用、分发和修改的相关规定。在使用开源软件时,确保遵守许可证要求至关重要,以避免侵犯作者和贡献者的知识产权。
代码混合:在开发过程中,将开源代码与自有代码或其他专有软件结合可能导致知识产权问题。这可能需要对软件的整体许可证进行评估,并确保与各种许可证要求保持一致,以防止意外侵权。
第三方依赖:开源软件可能引用或依赖许多外部库或组件。企业需要了解并审查这些依赖项的许可证要求,确保它们与项目的其他部分兼容,并遵循相应的权限要求。
专利问题:虽然开源软件源码是公开的,但并不意味着其所涉及的所有技术都免除专利保护。在使用开源软件时,需要注意潜在的专利侵权风险,特别是在高度竞争性和专利敏感的领域。
遵守贡献者协议:在为开源项目提供代码或修复时,可能需要签署贡献者许可协议(CLA),表明贡献者同意遵守项目的许可证并放弃对贡献的部分或全部知识产权。企业需要熟悉并遵守这些协议,以确保合法贡献。
知识产权审计:企业需要定期进行知识产权审计,评估其产品和服务中所使用的开源代码和许可证,并确保合规。这有助于防止法律纠纷和潜在的商业损害。
(4)管理风险
2023年OSSRA报告[2]中揭示了几乎各行各业的代码库中都存在开源代码,且89%的代码库中包含至少已过期四年的开源代码,91%的代码库包含两年内未更新的组件,88%的代码库包含在过去2年内未活动的组件,并且包含非最新版本的组件。这导致大部分代码库都很脆弱,非常容易被利用和攻击,如果企业不能定期去更新或废除一些不用的版本或产品,就会引发一定程度的安全漏洞风险。
二、企业如何应对开源生态跟企业带来的风险挑战
为了更好地规避开源软件带来的安全风险和合规性问题,保障企业安全、高效地使用开源软件,企业内部可以通过建立配套的开源治理组织架构,来统筹推动开源治理工作[3];制定开源软件全生命周期的管理制度,明确开源治理的流程、规范和风险点;然后企业从业务和技术等方面出发,对开源软件进行评估,选择符合企业内部要求的开源软件;最后建立开源治理管理平台,来更好地引入开源软件进行持续的管理和评估,提高管理效率。
1.搭建开源治理组织架构
为做好开源治理,企业首先应建立相应的组织架构,明确开源治理职责分工。通过设立开源管理、技术、安全、法务等多个专门团队,建立组织之间的沟通机制,准确把控和控制相关风险点,从管理层面出发统筹规划、推动和实施企业开源治理工作。
2.建立开源治理管理机制
在搭建好组织架构后,企业内部应制定一套开源软件全生命周期的管理机制,规范开源软件的引入、使用、更新或退出的流程;对开源软件进行分级分类的管理,明确开源软件的引入和使用风险点,制定统一的管理制度。通过全流程的管理制度来对开源软件的全生命周期管理提出明确规定,使企业内部对开源软件进行统一管理,规避相应风险。
3.形成开源软件评估机制
面对众多的开源软件,企业应对开源软件从多维度进行评估和考察,选择适合企业内部业务需求和技术的软件。参考开源软件成熟度模型(OSMM)、国家软件质量评估等评估体系中的评估标准,结合企业自身特性,从基本要素指标(包含社区活跃度、软件活跃度、许可证、运维支持等)、软件技术、安全等方面开展全面评估,为企业自身量身定制开源软件评估评价机制,指导开源软件引入和选型。
4.建设开源治理技术平台
为加强对已选型开源软件和组件的持续跟踪管理,企业也需建设可支撑开源软件治理的平台系统,用于实现开源软件全流程、多领域一体化、自动化管理,并借助扫描工具和其他管理工具,有效提升开源软件管理质量和效率,为整个开源治理工作高效运行提供技术保障。
5.开展同业治理交流合作
为更加有效地开展开源治理,在认真做好企业自身开源治理工作的同时,企业也应积极开展同业开源治理工作交流,分享同业开源治理成果,不断提升开源治理效能。
三、结语
开源已成为当前和未来IT技术发展的主流趋势,开源技术生态的建立和持续发展为企业带来诸多积极影响的同时,也为企业带来了一系列风险挑战。企业为有效应对引入开源软件生态带来的各种风险挑战,应在企业内部建立开源治理工作机制,完善开源软件全生命周期管理制度,通过建立开源治理平台实现开源软件全流程自动化管理,并通过开展同业交流合作、共享治理成果,推动完善企业内部开源治理工作。
参考文献:
[1]《Synopsys 2020开源安全和风险分析报告》
[2]《Synopsys 2023开源安全和风险分析报告》
[3]金融业网络安全与信息化“十四五”发展重点问题研究之《金融科技开源治理》。
备注:文章分享自“twt企业IT社区”,转载的目的在于信息的分享,如有侵权请联系我们删除。