文 / 中信银行数据中心 李鑫
前 言
当今IT环境的高速发展下,物联网、大数据、5G、AI等科技主题都已经深入应用到各个行业领域,而这些主流技术采用了大量的开源技术以及开源生态产品。随着金融行业的不断深入探索,实现以科技赋能为主,优化创新架构的新一轮数字化转型,势必会借助开源新科技手段进行应用、整合,形成自有技术体系。这就使得金融行业必须面临原先由采用大型服务软件厂商的闭源性商业软件的管理模式,逐渐过渡改革到开放、开源的免费软件的思维管理模式。这种管理模式的改变挑战很大,新的管理模式必须能够在享受开源软件给我们带来技术红利的同时,可以应对开源软件带来的“副作用”,可以合理应对开源软件在安全、代码、政策等方面带来的影响,最终确保系统运行稳定,提升终端用户的使用感受。
谨慎引入选型
开源软件产品的特点属于产品迭代快,技术更新快,版本发布快,因此开源软件的技术选型工作尤为重要。而针对选型要求目前也没有统一的业界标准可以参考,对于金融行业,涉及的软件使用产品一般有自身的技术路线要求,不能轻易进行产品级别的替换,这就对开源软件产品前期的调研引入流程要求严格,一旦选择有误,后期替换的成本会加倍显现。关于选型要求,建议从以下几个层面进行开源软件产品的引入选型考量。
1.识别开源软件许可协议
目前经过OSI认证的开源协议有80余钟,其中常用的开源许可协议有:GPL、LGPL、BSD、MIT、Apache等。在进行开源软件产品选型时,一定要优先识别软件的开源许可协议。不同的协议,涉及的传染性规定、知识产权、兼容性、排他性等有不同程度的要求,对软件产品引入后的运维使用、二次代码开发都有重要影响,需要优先进行识别。并且在引入后,也需要随时进行关注,有些开源软件产品会进行开源许可协议的修改,需要判断修改内容是否会对目前使用造成影响。
2.开源软件的功能、技术路线
待引入的开源软件产品使用的功能、技术路线必须符合该领域的技术主流发展方向,并且必须符合企业自身对于该领域的技术发展需求。不能因为熟悉、用过就进行引用,而要将目光放长远,结合现有架构匹配程度并考虑长期选型要求,引入时就要考虑维护成本、成员角色分工、支持能力等问题。要同时考虑迁移成本,引入后是否可以进行平滑替换迁移,还是需要较大经历进行重构。
3.开源软件的社区活跃度
社区活跃度也直接体现了该开源软件的技术主流程度、使用群体情况、软件版本更新频率等。不同于闭源软件,有厂商可以提供成体系化的技术支持,出现问题可以及时有效地处理。针对于开源软件,更多的是要依靠自身解决问题的能力以及向软件社区反映发布问题进行解决。因此社区的成熟度是衡量开源软件是否引入的较为重要的指标。
4.软件安全性
在引入前,需要了解所需引入软件是否有因重大安全漏洞而被攻击的事件,在近期版本当中是否有被修复。针对密码、用户信息等敏感内容,是否设置加密处理。最好结合开源软件漏洞扫描平台以及开源软件代码扫描工具进行全面扫描梳理,根据扫描结果进行全盘分析。
增强管理体系
基于开源软件的定义,不仅仅涉及成型独立,可以单独部署的软件产品,还包括细粒度更高的、融入到应用代码当中的开源功能组件、开源框架等,并且基于敏捷迭代开发,使得运维和开发部门联系越发紧密。因此,对于开源软件的管理体系和维度,一定要比闭源软件更加精细,更加主动,形成全生命周期流程管理,严格把控引入、集成和使用。
1.制订开源管理制度要求
针对开源软件管理,一定要形成统一的管理办法,务必考虑到开源软件的各个生命周期的工作内容。包括但不限于软件定义分类、各部门职能详细分工、引入管理、使用管理、代码二次开发管理、运维支持管理、版本管理、退出管理、风险管理等。最好可以有独立的部门进行统一调度,组织考核,各执行部门分配专人负责开源软件的治理工作,定期上报工作成果。在制订管理办法的过程当中,除了规定说明外,最好设置一些使用限制要求,做到管理可控(见图1)。例如,限制同一功能的开源软件引入数量,便于有效控制开源软件在使用过程中过于分散,不利于运维管理的情况。
图1 开源软件治理能力成熟度模型
2.建立开发运维体系
需要建立适应开源软件管理的开发运维体系。该体系需要从开源软件引入、制品库的管理、制订相关技术规范、开发代码要求、运维使用、监控覆盖、技术支持等方面开展。需要定期对已使用的开源软件进行跟踪,考察使用情况以及产品、社区最新状态,对于存在风险的软件必须及时整改甚至退出。定期进行开发规范要求审查,包括应用代码开发以及开源软件产品二次开发,组织开发代码以及组件扫描,确保代码级别安全合规。定期执行开源软件产品安全漏洞扫描,及时修复安全漏洞,确保产品级别安全合规。定期组织软件版本统计,合理设计符合企业需求的升级计划时间要求,即不能升级频次过高,给运维工作增加负担,也不能频次过低,导致使用版本存在安全隐患。定期组织培训,交流,在软件引入时,根据使用情况指定软件掌握能力等级。
注意管控风险
中国人民银行在《金融科技(FinTech)发展规划(2019-2021)》中,要求“做好新技术金融应用风险防范”,要求正确把握金融科技创新与安全的关系。因此,我们需要严格贯彻落实安全风险管控,保护好产品安全、用户安全以及数据安全。同时,当今发布的部分开源软件在安全风险方面确实存在薄弱环节,在《金融行业开源治理白皮书》当中也提到,开源软件隐含的安全风险较为显著。利用开源软件漏洞进行敏感信息盗取的真实案例数不胜数,需要全面提高安全风险防控水平,并将其作为头等工作落实狠抓。
在执行方面,可以利用第三方开源软件扫描工具,针对开源软件或者开源组件进行产品以及源代码层级的漏洞扫描,对于已扫描出的CVE漏洞需要及时提供修复方法;同时结合渗透工具进行拦截和获取http信息进行筛选检查,防止目录遍历、SQL注入、页面劫持等安全缺陷。针对端口隔离、用户文件权限、密码加密等需要在运维规范当中进行体现。针对应用代码进行定期安全审计,不断筛选代码,修补漏洞。
增加交流、培养专项
由于开源软件的源代码处于公开状态,开发使用者可以轻松获取,并且在协议允许的情况下,进行二次开发改造,对于企业而言,相比较其他闭源类产品,更能促进整体软件架构的多样性、灵活性和创新性,更能深入自主掌控所使用的软件产品,不强依赖于产品供应商,增加了对支持厂商的选择性。但与此同时,针对不同开源技术的掌握,对企业自身提出了更高的要求,不仅仅停留在使用层面,需要更深层次地学习掌握。遇到使用问题不能再向原厂申请支持,更多依靠自身的技术能力。企业内部可以成立开源部门或者小组,定期组织培训、交流,技术维护人员学习了解开源软件的制度规范,运维开发团队一起进行某一开源软件的知识分享。企业外部需要更多机会参与行业内、企业间组织的沟通交流,通过分享会或者开源标准制订的专项研讨会,了解整个行业内开源软件的引入方向、使用情况等。同时在运维、二次开发过程中,可以针对发现的问题向公共社区进行代码提交、问题交流等社区贡献,增加社区活跃度,也是提高自身在该软件方向知名度、吸引开源人才的有效途径。
结 束 语
随着开源技术的不断深入发展,迭代更新,开源软件的品质不断提升,其已经成为金融行业软件生态系统当中不可或缺的一部分。通过对开源软件的自主掌控,可以有效地帮助企业实现降本增效,风险可控,系统可用程度更高,实现了IT架构的全面升级。但与此同时,针对金融行业要求IT环境高稳定性、高安全性的使用特点,我们也要对其灵活性、开放性加以严格管控,降低不确定性,保证“可高用、低风险”,真正做到为我所用,使其顺应业务的发展,助推企业的智能创新。
(栏目编辑:张丽霞)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。