直播回放 | 周幸:开源治理实践如何实现自动化和智能化落地(四)
第三部分是许可证分析。开源促进组织OSI颁发了上百个开源许可证协议。要对这些开源协议进行风险梳理,尤其当引用了强传染性的协议时,要特别注意通过智能化的分析去找到相应的组件。当然通过组件也可以找到相应的许可证协议。这样就能够及时确定组件或者项目的知识产权风险。
在开源治理过程中,针对三个风险点需要掌握相对应的治理能力,同时也需要将能力和流程结合。安全和开发之间有时会有矛盾,当安全尝试介入时,原有的快速发布和快速迭代更新的目标可能会受到影响。所以安全工具、安全治理体系的引入要在不改变现有开发和测试模式的前提下,不影响业务发展流程,要给整个流程带来附加价值,这就需要结合整个软件研发流程去进行。
在编码阶段用户可以引入IDE插件,比较多的是Eclipse和IDEA。在编译器上,当引入组件包时做实时分析,将结果直接反馈给开发人员,也就是用插件的方式进行及时审查,在开发侧发现问题后做及时修复。
在提交代码到代码仓库的环节中,可以对接Git/SVN仓库。在这个过程中,可以对提交的代码做全量的检测。
在使用的过程中,可能会用到Jenkins或者商业化的DevOps平台,可以用插件化或者是流水线脚本的方式,结合引擎进行实时检测。这样做的好处是可以结合现有的发布流程做一些卡点设计等。当通过引擎的集群检测,与代码、组件、漏洞的仓库进行关联匹配之后,可以把数据同步到可视化界面上,甚至可以同步到用户内部的bug管理平台比如Jira、禅道,这样用户不需要登录其他平台就能查看漏洞。
最后,在这些基础之上,建立整个制度体系。其实在每一个阶段都可以通过工具化的方式实现自动化和智能化。比如引入阶段,在本地库里没有找到对应组件,那么在向上申请的过程中,可以用自动化工具做能力的审核,检测组件是否存在漏洞问题。在软件使用的过程中,可以形成组件清单,当漏洞爆发时,可以快速定位到那些有问题的或者受影响的组件。在运维或者安全漏洞持续评估阶段,当发现安全漏洞时,可以通过相应的治理工具能力去告诉用户哪些项目是受影响的,有哪些修复的方案。