随着DevOps、云计算、人工智能、平台工程等各种新思想及新技术逐渐得到众多企业的认可,这些新技术也推动社会从信息化向数字化演进,而在整个演进的过程中,所需的技术体系构建需要海量的知识与技术能力的支撑。开源(Open Source)以开放、平等、协作和共享的模式,加速技术迭代升级,逐渐形成技术主流。开源可以突破技术壁垒,推动技术创新;但也因为生态的多样性与不确定性,导致更多的不稳定因素的引入,提高了问题与风险发生的概率,给企业带来机遇的同时也带来了多重挑战。因此,如何进行有效地治理,成为目前企业亟需解决的问题。
从目前的发展形势来看,开源应用主要面临的风险为:管理风险、技术风险、安全风险及合规风险。
1、管理风险
开源应用相较于传统应用有着更为复杂的供应链,而在使用过程中,通过各种组合、依赖等形成了错综复杂的供应关系,而使用者往往很难直观地理清其中的脉络。同时,企业因缺乏体系化的治理理念,导致全生命周期缺乏有效的管理规则及对应的管理手段,如:权责不清、引入及退出机制不够完善、分析评估权重合理性存疑、合规性检查缺乏时效性、错综复杂的关联依赖关系缺乏有效记录等。从而导致治理工作难以覆盖使用过程中的方方面面,使整个管理风险无限放大。
而其中最具代表性的是开源应用的多版本管理,从最初的版本到最新的版本可能都会存在使用,从而导致收敛度差,关系混乱。当出现漏洞时,为了明确哪些资产受到影响,往往需要使用人力去排查、统计及追溯,导致效率低下,且准确性、时效性、全面性都无法得到有力保障。
2、技术风险
首先,从目前开源的类型来看,开源应用包含产品、组件、框架、工具、代码等多种类型,涉及软件开发、云服务、数据服务等诸多领域,因为更新迭代快,相互之间存在错综复杂且隐蔽的依赖关系,从而给企业的自主掌控、运行维护带来巨大的挑战;其次,由于很多开源应用是独立开发者凭兴趣开发与支撑,没有商业盈利模式,从而无法保障安全与可靠性;再次,在使用过程中,企业因为更多的是外部采购,无法控制供应商对开源技术的引用,而自身技能储备不够,存在配置不当,导致运行故障,从而影响系统的正常运行,引发一系列的业务震荡问题。最后,日益复杂的国际形势也对很多开源软件的国内外供应链带来较大影响。
3、安全风险
开源应用从出生起就秉持“开放、共享”精神,因其开放的特性,在安全性上天然不足,而从业者的素质参差不齐,产品质量良莠不齐,导致漏洞更容易被发现并被利用,甚至会出现恶意代码、被人恶意“投毒”也见怪不怪,这也正是很多开源软件提出免责声明的重要原因。因此,在企业引用开源应用后,如不能精准掌握并及时修复对应的漏洞,就会把漏洞流入到生产环境,从而成为被渗透、攻击的对象,引起服务中断、数据泄露等严重事故,如何解决安全风险也必将成为开源治理的重中之重。
4、合规风险
开源应用虽然代码是对外公开的,但是同样受开源许可协议的保护,开源许可证一样是具有法律效力的合同。因此,在使用开源应用的时候,需要清晰了解许可证的使用范围。但是,因开源背后的许可问题专业性较强,而企业往往因为生存压力、业务发展需求,以及提供业务应用的供应商能力高低不一,无法提供完整的使用清单,许可问题极易被忽略。稍有不慎就会让使用开源应用的企业面临法律合规风险,引起知识产权纠纷,甚至被迫开放代码,给企业带来不可估量的损失。
对开源应用进行治理已逐渐成为各行各业的共识,嘉为蓝鲸作为业界领先的数字研运解决方案品牌,以“安全、合规、高效”为基本原则,结合开源治理方法论,从组织架构、管理体系、工具平台等方面构建开源治理体系,开展开源治理的探索,逐步形成一套开源应用管理和使用的最佳实践。
1、组建管理机构,明确分工权责
首先,可以根据企业自身发展需要,成立对开源治理的组织(实体、虚拟都可),统筹规划治理体系,同时协调架构、运维、安全、质量与配管等过程管控团队,依据“谁引入、谁负责”及“谁使用、谁保障”的方针原则,结合软件产品全生命周期理念,制定开源应用全生命周期管理办法,并按照各管控团队特性,分工制定对应的规范、量化规则及评估模型。
其次,组织运行机制上设立管理方、评审方、使用方;管理方统筹规划治理流程、维护标准、方案实施决策与仲裁、同时推动治理工作;评审方为各方技术专家组成的评审团队,负责引入评审工作及制定对应的评估机制、评估规则,同时负责日常问题解决、持续改进、技术决策等技术性工作;使用方一般为项目方,负责发起引入申请、完成使用中的漏洞处理和其他日常性功能事务。
最后,建议在评审团队中引入法务人员对合规性进行研究,并提供法务支持。同时,为了确保业务发展的安全性,应引入安全及质量人员,负责识别和跟踪安全漏洞,提出解决方案,避免造成严重的安全风险。
2、制定管理制度,规范使用流程
科学、完备的管理制度是体系建设的前提条件,因此,构建合理、可执行的开源治理体系需要从制度与规范开始设计,确立规范以支撑制度落地,健全制度以保障规范严格执行,确保全生命周期做到“有法可依”。在制度层面,需要制定覆盖开源应用全生命周期的管理规程,对开源应用的引入、使用、更新、退出全流程提出明确的规定,以保障引入的开源应用处于安全可控范围;同时,也需要制定对应的紧急处理流程,建设“逃生通道”,以确保在风险发生时可以及时处理,将风险扼杀在萌芽。在规范层面,需要结合企业自身特色,制定对应的选型依据、评分标准、漏洞定级、检测方式等多维度的执行标准。
除此之外,还需要打通全生命周期数据链。全过程数据联动,以此来建设从引入到运营的关联关系可视化视图,提升追溯能力;同时建立从引入到运营管理节点的负责机制,落实责任,进一步提高引入及运营管理的质量。
3、融合管理规范,建设管理平台
体系化的开源治理,将“安全、合规、高效”作为整个建设的顶层战略目标。为了实现这个目标,除了需要完备的管理制度,规范化的流程,用来落地实践的工具平台也是必不可少的。制度、流程、平台三者应该相辅相成,相互闭环,形成三位一体的立体化开源治理体系方案(如图1)。具体体现如下:
为了使上述管理架构、规范制度真正落地,持续提升开源治理能力,建议围绕资产库打造“1+2+3”整体解决方案。即:1个统一资产库(由1个前置子库,1个过程子库,1个生产子库组成1个虚拟统一资产库),2个生命周期(开源治理生命周期、软件研发生命周期),3个核心工具平台(DevOps平台、安全工具平台、流程管控平台)。其中最重要的资产库架构设计如图2。
使用统一的资产库的目的在于结束重复建设后带来的管理混乱,同时达到资产统一管控的目标,统一资产库收纳的资产内容主要包含:自研、开源、供应商提供的资产;各资产库作用如下:
而各库之间的交互关系如下:
同时,建议各资产库按照开源类型进行分类,各类型库分类存储的开源应用类型如图4。
为了实现开源治理从“引入、使用、退出”全生命周期的管控,同时为了提高整体治理效率,建议将整个治理过程按照研发生命周期阶段进行划分及对应;通过流程进行结合,将整个治理能力嵌入端到端研发过程中,进行分类、分阶段管控,从而实现安全、高效的管理;同时按照引入的内容建立内部的关联依赖关系,便于在出现问题后的快速追溯及定位。
整个实现过程为:
流程是管理制度现实的保障手段,严谨、科学、符合发展的开源治理流程可以有效地降低冲突、控制风险,开源应用生命周期管理所涉及的引入、使用、退出流程建议按照最新的价值流理念,将流程中有价值的活动进行组件化,便于后期灵活适配与标准化;因此,流程大致上应该包含:引入、检测、审核、查询、上传/同步、下载/引用、清退等活动。而引入流程建议参考图5。
为了实现“安全、合规、高效”的目标,将整个治理过程分成三个阶段进行。
第一阶段管理机制建设;包括组织级团队建设与规章制度建设
第二阶段:能力建设;主要包含基础能力、平台能力、过程能力建设
能力建设应以场景建设为出发点,逐步在各领域建设构建治理能力;以“以点带面,横纵结合”的方式,逐步从试点到推广分步走,同时与开发、安全、质量、合规、运维等多部门配合,确保平台建设方案落地,给治理工作提供平台支撑。
第三阶段:全场景覆盖能力建设
逐步将开源治理工作从组织级往项目级管控转变,将治理的具体工作通过赋能、规则等方式将职责与权限下放到项目级;同时覆盖自研、供应商、供应商+自研等所有应用场景。
从2022年6月到目前为止,嘉为蓝鲸辅助某大型金融企业进行开源治理体系建设,已经基本完成了企业级治理体系建设;并通过对组织架构、规范化流程、管理平台等方案的落地实践,验证了方案的可行性与可靠性,在确保了治理体系的高效运转的同时,化解了开源应用引入带来的安全风险,有力地保障了全生命周期管理过程可追溯、可度量、可评价。在整个建设过程中,累计清退开源应用已超500个,总计完成200次以上的版本升级,消除潜在风险隐患100余次。
然而,由于开源的特性,开源生态中良莠不齐,现有的安全漏洞无法全面涵盖整个生态,存在明显的局限性。同时也不能排除别有用心的个人和组织从源头“投毒”,也给整个治理工作带来了很多不确定的因素,出现了很多不可预料的状况。尽管如此,但可视化的依赖关联关系图谱在应对风险时发挥了巨大作用。通过该图谱,整个使用过程变得清晰可见,实现了真正的端到端联动,并能在秒内定位问题。这大大缩短了沟通时间,总计超过300小时,使整个治理工作更加高效。
开源的技术发展日新月异,同时也是一个不断演化的过程,也就导致了开源治理体系建设注定是一个长期而艰苦的过程。因此,一方面需要适应新技术的迭代与变化,持续改进治理体系;另一方面,通过持续完善治理体系,加强规范化管理能力,提高应用的整体安全可控性。可以进一步满足业务发展需求,同时促进企业自动化、数字化的转型需要。
随着新技术的发展,AI、智能化的不断演进,未来在开源治理体系中可以引入对应的技术,通过风控模型、态势感知、大数据匹配、智能判断等手段进一步促进开源治理体系的发展。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。