开源组件已成为软件应用程序的基本构件,占软件项目的60%-80%。由于使用开源已成为行业标准和软件生产的默认选择,因此软件开发组织需要制定开源战略。 标准实践是随机选择开源组件,而不考虑检查安全漏洞或开源许可证的日子已经一去不复返了。这种没有深入研究依赖关系,也没有附加任何条件的实践,给组织带来了安全漏洞和开源组件的不合规使用。现在,开发团队受命为他们的开源使用制定一个策略,来确保他们产品的安全性和合规性。他们需要建立一个开源策略,解决开源使用的所有方面,从选择组件、与专有代码集成,到错误检测和许可证管理。
采用开源战略的重要性
选择去投资开源战略主要是一种商业策略,它的逻辑从其他业务开发领域扩展而来,这些领域在形式化、标准化和文档化方面也有类似的发展。一旦一家公司的活动达到临界数量,它很容易陷入无尽的疏忽、漏洞和人员伤亡。也就是在那时,公司开始感觉到制定战略的必要性;对效率、盈利能力和增长前景采取“首先考虑”的方法。 考虑到补救工作的成本和金钱,组织通过数学计算,了解到建立一个开源战略,使他们在安全性和合规性方面保持正确的立场,比修复已经造成的损害更划算。
开源项目办公室
各行各业的公司都在引入“开源项目办公室”,该办公室实施了一项组织战略,以确保所有团队都能安全、合规地使用开源组件。 作为公司内部使用开源的中枢神经系统,这些中心组建了一个实现围绕代码选择、组件采用和使用以及审计实践的开源策略。开源办公室就公司的开源战略对新开发人员进行培训,并确保遵循开源安全和许可政策。
这样的办公室正在以越来越快的速度出现,许多企业正在选择寻找开源领导者来领导这些团队。他们利用这些开源战略领导者在团队层面管理他们的政策,在本地而不是公司范围内运作。
开源战略:一路走来的关键考虑因素
在规划组织的开源战略时,需要将以下这些步骤付诸实施。#1 建立开源办公室
开源办公室应该设在哪个部门、哪个位置?首席开源官将向谁汇报工作?
这不仅仅是一个简单的命令链问题,而是一个需要检查和映射公司重点的问题。软件公司希望将办公室置于其研发部门之下,而拥有广泛知识产权组合的公司可能希望将办公室置于其法律部门之下。 一旦做出涉及开源办公室的决定,就会为随后的开源战略定下基调。使用开源的规则和指南也是在这一步制定,并在公司范围内分发。 #2 制定开源战略
您的战略将如何解决开源安全和许可证合规性问题?您将需要决定您愿意在产品中使用哪些开源许可,以及应该阻止哪些许可证进入您的代码。具有多个许可证的代码数量要求您使用自动化解决方案来执行您的策略,确保哪些您不希望开发人员使用的许可证将被禁止进入系统。
同样,您需要设置安全限制,设置治理策略,允许不需要额外审查就可以使用的开源组件,而其他人可能需要一个团队负责人来签署潜在风险的组件。在更严重的情况下,您可以使用自动化来阻止有风险的开源组件进入产品,甚至在需要时,使构建失败来保持代码库的安全。在整合开源组件之前,需要解决的另一个战略问题是公司的开源报告政策。作为为客户提供服务的供应商,任何销售包含开源元素产品的公司都必须以归属报告的形式,向客户提供尽职调查。公开规则将要求公司向客户提供软件包名称、版本、原始下载URL、许可义务、包含的依赖项和开发人员在其软件中使用的每一个开源的接触点。 #3 实施开源战略
建立开源战略首先要了解开源管理有其特定的挑战,这些挑战与专有甚至第三方商业代码的挑战不同。 虽然大多数的安全更新依赖于国家漏洞数据库(NVD),但通常,重要的信息会首先发布到各种其他安全公告或问题跟踪器上。为了确保开发人员正在使用更新和安全的开源组件,组织必须集成正确的工具来识别开发环境或产品中的组件,并将它们与分布式信息源相匹配,了解哪些已知漏洞会对您的产品构成风险。 只有软件成分分析(SCA)工具才能提供自动化解决方案,聚合所有相关信息,大规模识别和监控开源组件,在出现新问题时发出警报,并以DevSecOps的速度运行。开源战略:行动计划
建立开源战略始于一个里程碑事件:在公司中为开源管理开辟一席之地。在采取这一步骤时,必须理解开源代码安全和许可证合规性都具有其特定的挑战,这些挑战与专有代码甚至第三方商业代码的挑战都不同。有目的地采用开源应该是公司更大的治理策略的一部分,只要它涉及到第三方和开源贡献的安全性和许可。公司的开源专家有责任为开源自动化、文档编制、漏洞检测、补救和许可合规性制定战略。