本文作者是黑鸭子软件公司(Black Duck Software)的***技术官兼工程执行副总裁。
现在许多公司越来越明白这一点:想比竞争对手更迅速地开发出质量更好的创新软件,关键在于借助使用开源软件(OSS)。在如今的产品生命周期所需的速度和成本约束下,仅仅使用商用代码、将软件投向市场,这几乎是不可能实现的任务。要是没有能力选择和整合同类中***的OSS,一些最出色的产品点子可能永无出头之日。
不过使用开源也带来了一系列不同的挑战。虽然贵企业的团队能够获得速度和敏捷性,但常常更难查明代码的真正来源、确保代码安全可靠。
正如OpenSSL Heartbleed安全漏洞证明的那样,不知道自己的应用程序或最终产品中使用什么代码,有可能造成严重的安全威胁,需要投入大量精力来补救这些威胁,很耗费时间。反过来,要是查清楚使用了哪些OSS组件和版本、哪里使用了OSS组件和版本,对于迅速应对及补救安全漏洞大有帮助。
里面的代码很重要
Heartbleed软件错误提醒广大开发人员和公司企业安全到底有多重要。虽然之前就有围绕专有软件或开源软件哪个更安全这个广泛的争论,但这个争论基本上没啥意义。事实上,代码缺陷存在于大多数软件当中,不管代码来自专有软件还是开源软件,有些代码缺陷影响安全性。
当开源与内部的专有代码整合起来时,安全挑战可能显得尤为错综复杂。除了未合理管理许可证合规这个明显的风险外,在整个企业组织跟踪代码来源和使用情况可能很快会变得非常困难。
想真正准确地了解贵企业面临的潜在安全漏洞,就要明白三个问题:
1.贵企业目前的产品和应用程序中有什么代码?
2.开发过程的前期使用了什么代码?开发人员又从哪里获得了这些组件?
3.开发过程的后期使用了什么代码?代码在部署之前需要在哪里加以验证?
评估形势
所有公司都应该对照常见安全漏洞数据库核对自己的代码,比如美国标准和技术研究所(NIST)的全国安全漏洞数据库(NVD)。像NVD这些资源可以跟踪安全漏洞,并给出严重性等级,帮助公司企业确保各自的代码安全、***。
如果贵企业之前从未对照安全漏洞数据库审查过自己的代码,这可能是一项艰巨的任务。幸好,有些工具可以充分利用这些数据库,定期自动识别所有的开源安全漏洞,警报并跟踪受影响的组件在哪里使用、在哪里需要补救。
不断密切关注代码库有助于确保识别未知代码、查明代码来源、许可证信息***以及迅速标记未来的安全漏洞,以便尽快解决。如果贵企业查清楚了所使用的代码,就很容易找到安全性薄弱的代码,并加以补救,确保贵企业的业务及顾客处于安全的状态。
防止未来的问题
大多数开发人员之所以被OSS所吸引,原因在于OSS易于访问、随意获取,通常让他们可以摈弃正规的采购流程。不过,虽然许多开发公司对开源使用有相应的政策或准则,但这些政策或准则并不总是得到落实,常常没有受到合理的监控。查明什么代码进入贵企业、代码是否获准使用以及它在贵企业的哪个部门使用,这点很重要。
一旦贵企业知道了拥有的代码,就需要建立治理机制。通过在整个开发过程中实施管理体系,就能确保准确地描述代码,并消除什么代码在哪里、代码是不是***方面的问题。人工管理这个过程几乎不可能,这就是为什么同类中***的公司借助自动化代码管理和审计解决方案,主动管理开源软件的使用。
虽然每家公司和每个开发团队的情况各不相同,但事实证明下列流程可以帮助大大小小的企业管理和保护所使用的OSS:
•自动审批和列入目录――借助自动化扫描、审批和清点流程,记录并跟踪OSS组件的所有相关属性,评估许可证合规,并审查可能存在的安全漏洞。
•维护经过更新的代码版本――评估代码质量,并确保贵企业的产品采用***版本的代码开发而成。
•验证代码――评估使用的所有OSS;审查代码,评估安全、许可证或导出风险,并补救任何问题。
•确保合规――制定并落实一项开源政策,制定一套自动化合规流程,以确保开源政策、规定和法律义务等在整个企业都得到了遵守。
积极管理是关键
由于各行各业使用软件的现象日益普及,开源将继续在开发***创新产品和服务中扮演至关重要的角色。为了防止这个日益复杂的环境出现安全漏洞,公司势必要积极管理整个企业的开源流向,并制定流程,从而对照安全漏洞数据库定期核查代码,以便快速轻松地补救。