Home

/

探索新形势下的开源治理体系最佳实践

Post date:2024-01-26 17:52:24

分享到

随着DevOps、云计算、人工智能、平台工程等各种新思想及新技术逐渐得到众多企业的认可,这些新技术也推动社会从信息化向数字化演进,而在整个演进的过程中,所需的技术体系构建需要海量的知识与技术能力的支撑。开源(Open Source)以开放、平等、协作和共享的模式,加速技术迭代升级,逐渐形成技术主流。开源可以突破技术壁垒,推动技术创新;但也因为生态的多样性与不确定性,导致更多的不稳定因素的引入,提高了问题与风险发生的概率,给企业带来机遇的同时也带来了多重挑战。因此,如何进行有效地治理,成为目前企业亟需解决的问题。


01. 开源治理面临的风险

从目前的发展形势来看,开源应用主要面临的风险为:管理风险、技术风险、安全风险合规风险。

1)管理风险

开源应用相较于传统应用有着更为复杂的供应链,而在使用过程中,通过各种组合、依赖等形成了错综复杂的供应关系,而使用者往往很难直观地理清其中的脉络。同时,企业因缺乏体系化的治理理念,导致全生命周期缺乏有效的管理规则及对应的管理手段,如:权责不清、引入及退出机制不够完善、分析评估权重合理性存疑、合规性检查缺乏时效性、错综复杂的关联依赖关系缺乏有效记录等。从而导致治理工作难以覆盖使用过程中的方方面面,使整个管理风险无限放大。

而其中最具代表性的是开源应用的多版本管理,从最初的版本到最新的版本可能都会存在使用,从而导致收敛度差,关系混乱。当出现漏洞时,为了明确哪些资产受到影响,往往需要使用人力去排查、统计及追溯,导致效率低下,且准确性、时效性、全面性都无法得到有力保障。

2)技术风险

首先,从目前开源的类型来看,开源应用包含产品、组件、框架、工具、代码等多种类型,涉及软件开发、云服务、数据服务等诸多领域,因为更新迭代快,相互之间存在错综复杂且隐蔽的依赖关系,从而给企业的自主掌控、运行维护带来巨大的挑战;其次,由于很多开源应用是独立开发者凭兴趣开发与支撑,没有商业盈利模式,从而无法保障安全与可靠性;再次,在使用过程中,企业因为更多的是外部采购,无法控制供应商对开源技术的引用,而自身技能储备不够,存在配置不当,导致运行故障,从而影响系统的正常运行,引发一系列的业务震荡问题。最后,日益复杂的国际形势也对很多开源软件的国内外供应链带来较大影响。

3)安全风险

开源应用从出生起就秉持“开放、共享”精神,因其开放的特性,在安全性上天然不足,而从业者的素质参差不齐,产品质量良莠不齐,导致漏洞更容易被发现并被利用,甚至会出现恶意代码、被人恶意“投毒”也见怪不怪,这也正是很多开源软件提出免责声明的重要原因。因此,在企业引用开源应用后,如不能精准掌握并及时修复对应的漏洞,就会把漏洞流入到生产环境,从而成为被渗透、攻击的对象,引起服务中断、数据泄露等严重事故,如何解决安全风险也必将成为开源治理的重中之重。

4)合规风险

开源应用虽然代码是对外公开的,但是同样受开源许可协议的保护,开源许可证一样是具有法律效力的合同。因此,在使用开源应用的时候,需要清晰了解许可证的使用范围。但是,因开源背后的许可问题专业性较强,而企业往往因为生存压力、业务发展需求,以及提供业务应用的供应商能力高低不一,无法提供完整的使用清单,许可问题极易被忽略。稍有不慎就会让使用开源应用的企业面临法律合规风险,引起知识产权纠纷,甚至被迫开放代码,给企业带来不可估量的损失。


02. 体系建设最佳实践

对开源应用进行治理已逐渐成为各行各业的共识,嘉为蓝鲸作为业界领先的数字研运解决方案品牌,以“安全、合规、高效”为基本原则,结合开源治理方法论,从组织架构、管理体系、工具平台等方面构建开源治理体系,开展开源治理的探索,逐步形成一套开源应用管理和使用的最佳实践。

1)组建管理机构,明确分工权责

首先,可以根据企业自身发展需要,成立对开源治理的组织(实体、虚拟都可),统筹规划治理体系,同时协调架构、运维、安全、质量与配管等过程管控团队,依据“谁引入、谁负责”及“谁使用、谁保障”的方针原则,结合软件产品全生命周期理念,制定开源应用全生命周期管理办法,并按照各管控团队特性,分工制定对应的规范、量化规则及评估模型。

其次,组织运行机制上设立管理方、评审方、使用方;管理方统筹规划治理流程、维护标准、方案实施决策与仲裁、同时推动治理工作;评审方为各方技术专家组成的评审团队,负责引入评审工作及制定对应的评估机制、评估规则,同时负责日常问题解决、持续改进、技术决策等技术性工作;使用方一般为项目方,负责发起引入申请、完成使用中的漏洞处理和其他日常性功能事务。

最后,建议在评审团队中引入法务人员对合规性进行研究,并提供法务支持。同时,为了确保业务发展的安全性,应引入安全及质量人员,负责识别和跟踪安全漏洞,提出解决方案,避免造成严重的安全风险。

2)制定管理制度,规范使用流程

科学、完备的管理制度是体系建设的前提条件,因此,构建合理、可执行的开源治理体系需要从制度与规范开始设计,确立规范以支撑制度落地,健全制度以保障规范严格执行,确保全生命周期做到“有法可依”。在制度层面,需要制定覆盖开源应用全生命周期的管理规程,对开源应用的引入、使用、更新、退出全流程提出明确的规定,以保障引入的开源应用处于安全可控范围;同时,也需要制定对应的紧急处理流程,建设“逃生通道”,以确保在风险发生时可以及时处理,将风险扼杀在萌芽。在规范层面,需要结合企业自身特色,制定对应的选型依据、评分标准、漏洞定级、检测方式等多维度的执行标准。

除此之外,还需要打通全生命周期数据链。全过程数据联动,以此来建设从引入到运营的关联关系可视化视图,提升追溯能力;同时建立从引入到运营管理节点的负责机制,落实责任,进一步提高引入及运营管理的质量。

3)融合管理规范,建设管理平台

体系化的开源治理,将“安全、合规、高效”作为整个建设的顶层战略目标。为了实现这个目标,除了需要完备的管理制度,规范化的流程,用来落地实践的工具平台也是必不可少的。制度、流程、平台三者应该相辅相成,相互闭环,形成三位一体的立体化开源治理体系方案(如图1)。具体体现如下:

  • 用制度规范流程,避免出现管理错位,可以做到“有法可依”;
  • 将流程融入平台,平台固化流程,在实现可视化与自动化的同时,也提高沟通效率;
  • 用流程支撑制度、规范的落地,使制度、规范具象化,在保障制度落地不出现偏差的同时,也使管理有“抓手”;
  • 制度与规范相互支撑,按照制度打造符合的平台,同时将制度中的规则进行量化落地在平台中,持续推动平台;
  • 平台根据实践验证制度的准确性,持续完善制度,最终形成闭环,使开源治理体系在企业内部形成“内循环”以保障业务的持续发展。
图1:立体化开源治理体系

为了使上述管理架构、规范制度真正落地,持续提升开源治理能力,建议围绕资产库打造“1+2+3”整体解决方案。即:1个统一资产库(由1个前置子库,1个过程子库,1个生产子库组成1个虚拟统一资产库),2个生命周期(开源治理生命周期、软件研发生命周期),3个核心工具平台(DevOps平台、安全工具平台、流程管控平台)。其中最重要的资产库架构设计如图2。

图2:平台架构

使用统一的资产库的目的在于结束重复建设后带来的管理混乱,同时达到资产统一管控的目标,统一资产库收纳的资产内容主要包含:自研、开源、供应商提供的资产;各资产库作用如下:

  • 前置库:企业内部私有库,用来存储所有引入的开源应用;
  • 过程库:应用研发过程库,用来存储研发过程中需要的依赖、原生镜像、开源组件;同时用来存储研发过程半成品、送测制品及准出制品等版本的制品;并承担将上线的制品推送到生产库,用于对外发布;
  • 生产库:主要用于存储两部分内容,一是用于发布的上线制品;二是用于存储运维管理的各类镜像、工具等;
  • 备份库:用于备份生产库,按照相关法规保存对应的时长(6个月到3年)。
各库之间的交互关系如下:

① 前置库设置在DMZ区域,用来联通外部源,各类型库启用临时库,当外部的应用需要进入前置库的时候,先进入临时库,并通过安全、质量、合规(开源常见协议许可请参考图3)相关检测工具进行检测,同时,由评审团队对引入的开源应用进行评审,通过后进入正式库;并将对应的开源应用加入清单。

图3:开源协议许可


② 过程库主要用于保障研发过程的需求,依赖库直接将代理指向前置库;同时在使用过程中,对接相关工具平台,对于依赖及依赖间的组合进行检测,并生成对应的关联依赖图,保障整个制品包的稳定可靠;

③ 当上线申请通过后,由流程自动将过程库中的上线制品推送到生产库,保障后续上线及升级。并将对应的服务器信息反馈到资产库,通过资产建立对应的关联关系,便于后期风险排查及追溯。

同时,建议各资产库按照开源类型进行分类,各类型库分类存储的开源应用类型如图4。

图4:资产库分类

为了实现开源治理从“引入、使用、退出”全生命周期的管控,同时为了提高整体治理效率,建议将整个治理过程按照研发生命周期阶段进行划分及对应;通过流程进行结合,将整个治理能力嵌入端到端研发过程中,进行分类、分阶段管控,从而实现安全、高效的管理;同时按照引入的内容建立内部的关联依赖关系,便于在出现问题后的快速追溯及定位。

整个实现过程为:

① 引入:起始点对齐研发生命周期的设计阶段,开源应用的引入,需要架构团队主导,联合安全、质量、运维依据相关规范及开源应用清单进行评估,确保引入的开源应用的安全可靠;

② 使用:各引入团队按照自身需求,使用对应的开源应用;借助DevOps平台流水线在实现活动标准化编译的同时,采用统一的资产库,确保来源合法性与唯一性。同时在流水线不同环节加入检测及门禁功能,确保最终版本的安全与稳定;

③ 退出:退出的前提是不能影响业务的正常运行。因此,在不降低业务连续性的影响的前提下,首先在有突发风险时,应先使用防护硬件及工具做缓冲,减轻集中的升级压力,避免引起不可预期的风险;然后按照业务系统重要程度、升级难度及可能受攻击面的大小进行评估后按计划升级;其次需要定时定期地组织专家团队,从开源应用使用情况、历史漏洞情况等多方面对已在用的开源应用进行综合评估,并联合研发、配管等职能团队制定退出计划,推动应用升级,并将退出的软件加入对应的黑名单。达到清理存量、管住增量的目标,同时逐步向统一化演进。

流程是管理制度现实的保障手段,严谨、科学、符合发展的开源治理流程可以有效地降低冲突、控制风险,开源应用生命周期管理所涉及的引入、使用、退出流程建议按照最新的价值流理念,将流程中有价值的活动进行组件化,便于后期灵活适配与标准化;因此,流程大致上应该包含:引入、检测、审核、查询、上传/同步、下载/引用、清退等活动。而引入流程建议参考图5。

图5:入库流程


03. 实现阶段及过程

为了实现“安全、合规、高效”的目标,将整个治理过程分成三个阶段进行。

第一阶段管理机制建设;包括组织级团队建设与规章制度建设

  • 组织级团队建设:主要是建立专门的管理团队,同时划分权责,协调其他项目级管理职能团队共同开展治理工作;
  • 规章制度建设:主要是编制规范制度、标准流程、计划制定、存量资产梳理、工具平台建设、准入、准出管控规则等。


第二阶段:能力建设;主要包含基础能力、平台能力、过程能力建设

能力建设应以场景建设为出发点,逐步在各领域建设构建治理能力;以“以点带面,横纵结合”的方式,逐步从试点到推广分步走,同时与开发、安全、质量、合规、运维等多部门配合,确保平台建设方案落地,给治理工作提供平台支撑。

  • 基础能力建设:主要为依据规章制度,对整体流程进行分解,对其中有价值的活动进行提取、组合,实现流程可视化;
  • 平台能力建设:包括建设统一资产库、DevOps平台、安全工具平台、知识库等支撑能力的建设;
  • 过程能力建设:流程与工程相融合,安全与质量扫描工具与资产库和DevOps平台的对接、流程卡点与工程门禁的相互映射与互锁等形成接口统一、数据标准统一的价值流闭环;同时,通过软件成分分析、关联互锁等手段建设关联图谱。

第三阶段:全场景覆盖能力建设

逐步将开源治理工作从组织级往项目级管控转变,将治理的具体工作通过赋能、规则等方式将职责与权限下放到项目级;同时覆盖自研、供应商、供应商+自研等所有应用场景。


04. 治理成效

从2022年6月到目前为止,嘉为蓝鲸辅助某大型金融企业进行开源治理体系建设,已经基本完成了企业级治理体系建设;并通过对组织架构、规范化流程、管理平台等方案的落地实践,验证了方案的可行性与可靠性,在确保了治理体系的高效运转的同时,化解了开源应用引入带来的安全风险,有力地保障了全生命周期管理过程可追溯、可度量、可评价。在整个建设过程中,累计清退开源应用已超500个,总计完成200次以上的版本升级消除潜在风险隐患100余次。

然而,由于开源的特性,开源生态中良莠不齐,现有的安全漏洞无法全面涵盖整个生态,存在明显的局限性。同时也不能排除别有用心的个人和组织从源头“投毒”,也给整个治理工作带来了很多不确定的因素,出现了很多不可预料的状况。尽管如此,但可视化的依赖关联关系图谱在应对风险时发挥了巨大作用。通过该图谱,整个使用过程变得清晰可见,实现了真正的端到端联动,并能在秒内定位问题。这大大缩短了沟通时间,总计超过300小时,使整个治理工作更加高效。


05. 未来发展思考与探索

开源的技术发展日新月异,同时也是一个不断演化的过程,也就导致了开源治理体系建设注定是一个长期而艰苦的过程。因此,一方面需要适应新技术的迭代与变化,持续改进治理体系;另一方面,通过持续完善治理体系,加强规范化管理能力,提高应用的整体安全可控性。可以进一步满足业务发展需求,同时促进企业自动化、数字化的转型需要。

随着新技术的发展,AI、智能化的不断演进,未来在开源治理体系中可以引入对应的技术,通过风控模型、态势感知、大数据匹配、智能判断等手段进一步促进开源治理体系的发展。


免费申请演示

联系我们

服务热线:

020-38847288

QQ咨询:

3593213400

在线沟通:

立即咨询
查看更多联系方式

申请演示

请登录后在查看!