近年,开源技术在我国发展迅速,对于处在数字化转型期的各传统行业,开源技术及理念一直发挥着积极作用。开源技术犹如一把双刃剑,在给金融行业带来便利的同时,也带来了诸多问题。金融行业相较于其他传统行业更加注重安全、稳定、可控,所以在金融机构应用开源技术的同时,安全可控是无法回避的首要问题。北京银行在开源技术应用方面一直保持稳健谨慎的态度,采取了多种举措保证开源技术的安全可控性,在积极推广企业内部统一技术平台的同时,严格控制开源软件的引入,从多方面保证开源软件、代码使用的安全性和稳定性。
北京银行软件开发中心副总经理 代铁
打造严进宽出控制体系,统一制度、二类评审、三百组件
从金融从业人员的层面来看,建立规章制度,设置检查机制,制定惩罚措施,都是为了提升金融从业者应用开源技术的能力,加强金融从业人员应用开源技术的风险意识。所以在制度流程执行的同时,也需定期组织开展开源技术应用相关的风险培训,提高人员对应用开源技术的风险意识。只有人员风险意识增强,应用能力提升,才能从入向减少开源软件的安全隐患,做到安全可控。
北京银行建立了详细的技术方案评审机制。在开源技术评审方面,针对成熟产品引入类项目,召开评审会分析并审查产品中所使用的开源技术,对不符合北京银行技术标准的开源软件、组件进行替换后才允许进入开发阶段。要在制品提交时扫描代码工程,对通过评审但扫描结果中仍出现不安全开源组件的项目进行严肃处置。
同时,技术方案评审也会对新兴开源技术方案的选型和引入进行相应的评审,除了比较同类技术方案的通用性、高效性、高可用性等,会重点关注知识产权风险。各行业在使用开源软件或组件时,都非常关注该项技术的开源协议,开源协议也有严格和灵活之分。如果金融机构使用了严格开源协议下的软件,那么需要按照严格开源协议执行,例如开放源码等。对于此类产权保护存在的安全隐患,金融行业需建立相关制度,在开源技术使用过程中遵从开源协议,以避免版权经济纠纷。以北京银行为例,在统一行内技术栈的同时,将顺天技术平台应用的开源技术,以及统一技术标准中要求的开源技术,全部做了统计归类。在300余个开源软件及组件中,94.5%的开源技术基于Apache、BSD等自由类开源协议,而对剩余5.5%的组件,也都使用自由类开源协议组件代替。故而平台与技术标准发布后,使用顺天技术平台开发的系统,或改造后满足统一技术标准的产品,会规避开源产权保护安全风险。
构建企业级技术平台,一致技术栈、二次封装、三层控制
1.规范一致技术栈,避免开源组件不可控。2021年北京银行发布了顺天技术平台,同时配套发布了技术标准,包括统一的开源技术栈和开源软件使用规范等。北京银行规定新建系统必须使用顺天技术平台进行开发,存量系统需按照技术标准进行改造。其中顺天技术平台囊括的、与技术标准中要求的300多个软件、组件全部经过漏洞扫描以及业界验证。并且针对开源组件,北京银行同样在CNNVD(中国国家信息安全漏洞库)进行校对,将有漏洞记录的组件进行替换或版本升级,保证实施团队使用顺天技术平台开发时,使用的开源技术完全安全可控。
2.增加二次封装,减少开源技术直接依赖。除开源软件本身有着诸如漏洞、兼容性、代码后门、供应链等安全风险,开发人员使用开源软件或集成开源组件方面,也同样存在风险。若开发人员对开源技术使用不当,如未按开源组件官方提供的方法调用组件开放出的API,或没有真正理解官方操作手册的使用规范,则很容易引起使用风险,造成严重后果。此外,如果由于开源技术升级而暴露出了新的接口,或者后续为了解决发现的安全问题而使用开源技术的替代品时,项目组需要修改对应接口代码以适应新的版本或替代的开源技术,会耗费大量的人力物力。
北京银行针对此种情景,避免将原生开源组件API直接暴露给实施项目组,而是在顺天技术平台加入解耦层,由业务系统调用顺天技术平台暴露的二次封装API,以便后续开源组件升级、版本不兼容的情况发生时,在解耦层抹平兼容性问题,使项目组可以平滑升级。
除了API接口的二次封装,北京银行顺天技术平台对开源技术组件的配置也进行统一自动生成,保证参数最优化,以解决由于参数配置不规范而导致开源组件使用不正确的问题。北京银行强制要求实施项目组使用顺天技术平台脚手架生成项目基础工程。脚手架会将开源组件的正确调用方式、配置项以框架代码的形式生成,保证开发人员以正确的形式使用组件,降低了开源技术在使用方式上的安全风险。
3.版本三层控制,下沉平台技术整合能力。对开源技术的版本控制,北京银行通过三级控制,即技术评级、制品晋级、应用升级来完成。
开源组件更新往往意味着功能新增、升级或漏洞修复,那么对于使用者来说,通过组件升级也可以屏蔽一些安全问题。当然,对开源组件升级也要关注官方的更新信息,切不可盲目追新。有条件的金融机构应对升级后的组件进行功能测试和源码差异性比较,以防止类似政府机构使用开源组件触发节日彩蛋的问题发生。
目前,北京银行以月为单位对所使用的开源软件、组件进行“评级”,即升级评审,收集顺天技术平台使用组件中当月内有升级的组件列表,查看组件升级说明,评审升级内容对平台的影响。升级内容包含漏洞修复的通常都会优先选择升级。若只是功能优化或新增方法,北京银行通常会等待官方发布组件的成熟版本后再进行升级。同时北京银行会在组件升级后对使用到的组件功能进行回归测试,既保证了兼容性,又验证了开源组件升级说明中未提及的功能是否会对原功能产生影响。
为了避免开源技术的升级给应用项目组带来的影响,整体升级的工作和内容完全由专门的团队负责,且升级整合完成后,在行内制品库统一发布新版本制品和对应的版本控制信息以完成“晋级”,应用项目组仅需修改父POM的版本号即可进行全量的版本“升级”工作。
完善DevSecOps安全拼图,一条流水线、二级制品库、三中心同步
加强开源技术安全管控,同样体现在DevSecOps流程标准化方面。利用标准化自动流程平台,减少开发人员的手工误差,在一定程度上规避开源技术安全风险。北京银行已经将一些开源技术治理流程集成在DevSecOps流程平台上,例如开发脚手架、制品扫描等。正在着力将一些有助于开源技术治理的流程纳入DevSecOps流程平台统一管理。例如开源软件升级时的API接口自动化回归测试等。
北京银行在项目工程代码提交制品库时,流水线会强制扫描项目制品,通过扫描结果可以分析出是否引用了不安全的开源组件。北京银行使用了“两级制品库”机制,只有在开发环境中流水线没问题的情况下,才能将制品晋级到生产环境制品库,以此保证制品的安全可控性;同时,为了支持重点项目的两地三中心部署,三中心的生产制品库互相进行同步。
发展与展望
综上,金融行业开源技术的安全可控,在于建立健全开源技术安全可控规章制度,通过不断探索实践,制定出一套可执行、可落地的管控方案,具备执行情况度量能力,尽可能让开源技术应用流程标准化、自动化,同时提升人员的开源技术安全风险意识。在此之上,开源技术应用横跨采购、选型、研发、运维等多个环节,涉及商务、法规、开发、运维等多组织多部门协同工作。同时建议具备条件的机构或企业设立开源技术管理组织,掌握业界开源技术动态,定期审查相关部门开源技术应用执行情况。
从金融业大环境看,建议金融行业监管机构出具开源技术应用白名单,标注业界可以信赖的开源软件、组件及对应版本,金融从业人员可以参照白名单选择开源技术,为开源规范尚未健全的金融机构做良好指引,提高金融业开源风险下限,有效规避一定的开源技术安全隐患。
金融行业在开源技术应用方面的安全可控依然任重道远。如何在享受开源带来敏捷与便利的同时,把控风险,维持金融行业技术稳定,仍需广大金融从业者共同努力。
声明:本文来自金融电子化,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。