长亭百川云 - 文章详情

牧云插件系统面向未来的设计原则

huraway

45

2023-04-07

本文将介绍我们设计基于WASM的牧云插件系统时所遵循的原则和思路。我们将探究在设计过程中的安全性、可扩展性、可维护性、性能等方面的问题,并简要介绍我们为了实现这些目标所做的一些考量和决策。

这是系列文章“主机Agent插件引擎开发故事”的第二篇,后续将会持续更新。该系列文章将带领您深入探究长亭牧云团队主机Agent插件引擎的开发历程,内容涵盖技术选型、插件接口设计、组件通信框架等多个方面,并详细讲解背后的原理和实现方式,无论您是网络安全专业人员还是对技术开发感兴趣的读者,都可以从中得到收获。我们希望通过分享在开发过程中面临的挑战、解决方案以及实践经验,提供深入见解和有价值的技术参考,帮助读者了解如何构建高效可靠的安全产品,共同推动安全技术社区的发展。

主机安全系统如何变得更“有料”?

作为一个主机安全系统,牧云真的非常需要一个插件系统来提供可靠性和灵活性。在这个快速发展的互联网时代,主机安全系统需要不断适应新的威胁和挑战,一个功能强大且易于扩展的插件系统将会在构建高效灵活的安全策略上起到巨大的助力。

插件系统的引入,使得我们可以:

  1. 快速响应新的威胁
  2. 提供个性化的安全方案
  3. 降低维护成本
  4. 鼓励创新
  5. 实现跨平台兼容

有料

为了实现这些目标,我们需要对现有的插件系统进行深入剖析,找出其中的问题。在此基础上,我们将采用新技术构建一个面向未来的插件系统,让我们的主机安全系统变得更加“有料”。

插件系统在牧云中的“角色”与“期待”

插件系统充当着连接核心系统与各种功能模块的桥梁,在牧云中具有举足轻重的地位。

在牧云中,我们对插件系统有如下期待:

  1. 易于集成:插件系统应当简化整合新功能的过程,使开发者能够轻松地将新功能以插件的形式接入到系统中。同时,系统应能自动管理插件之间的依赖关系,确保插件的顺利运行。
  2. 高度模块化:每个插件应当具有明确的功能定位和责任划分,使得在维护和更新时,只需针对具体的插件进行操作,而不会影响到其他部分。这有助于提高系统的稳定性和可维护性。
  3. 安全可靠:安全性是主机安全系统的核心要求。插件系统需要确保插件之间的相互隔离,防止潜在的安全风险。此外,插件应当在一个受限的沙箱环境中运行,以防止恶意插件对系统造成破坏。
  4. 易于监控与管理:插件系统需要提供一套完善的管理和监控机制,以便管理员能够实时了解插件的运行状况,对异常情况及时进行处理。此外,系统还应支持插件的热更新,以便在不重启系统的情况下,实时更新插件的功能和性能。
  5. 优秀的开发体验:插件系统需要提供友好的开发接口和丰富的文档支持,还应提供便捷的调试和测试工具,以便开发者能够更高效地完成开发工作。(我们一直有一个使用静态编译型语言写插件的梦,同时还得获得其他所有优势。)

通过实现这些期待,我们将能够构建一个面向未来的插件系统,进一步提升牧云主机安全系统的灵活性、可扩展性和安全性,为用户提供更加优质的安全解决方案。

牧云插件系统的设计目标

为了满足牧云主机安全系统的需求和期望,我们在设计插件系统时设定了以下目标:

设计目标

工程化能力强

插件系统需要支持易于维护和升级的架构,使开发者可以在最短的时间内响应新的需求和问题,同时不以牺牲代码质量为代价。此外,我们需要优化插件的开发和调试流程,提高开发者的开发效率和体验。

高性能

性能是插件系统的关键指标之一。为了满足主机安全系统的实时性要求,我们需要确保插件系统具有较低的运行开销。同时,我们还需要优化插件之间的通信和协作,以提高整体性能。

安全可控

安全是主机安全系统的首要任务。插件系统需要在沙箱环境中运行插件,以防止潜在的安全风险。此外,我们还需为插件提供严格的权限管理机制,确保插件只能访问有限的系统资源。

插件系统的成长烦恼

为了实现上面说的这些设计目标,我们在设计牧云插件系统时进行了深入的调研和分析。我们评估了现有的插件系统( Golang+LNG+Lua),并发现其存在一些问题,如运行开销大、维护程度欠佳、开发体验差等。虽然 Golang+Lua 的插件系统曾为我们带来了一些便利,但随着业务的发展和需求的变化,这一技术方案的局限性使得它难以满足我们在主机安全系统中对插件系统的期望。

问题1:插件引擎自身的运行开销大

Golang+Lua 的插件系统中,Lua 代码需要在 Lua 虚拟机中运行。虽然 Lua 虚拟机本身具有较高的性能,但与Golang 代码相比,其运行速度仍有明显差距。同时,GolangLua 之间的数据交互也会带来额外的性能损耗。这些问题导致了插件系统的整体性能难以达到我们的期望。

问题2:LuaJIT VM 维护程度欠佳

虽然 LuaJIT 提供了一定程度的性能提升,但近年来该项目的维护程度有所下滑,更新速度放缓。这使得我们在遇到问题时,可能无法得到及时的技术支持和修复,从而影响到插件系统的稳定性和安全性。

问题3:开发体验差,过程繁琐,调试困难

Golang+Lua 的插件系统需要开发者在两种语言环境中切换,这给开发过程带来了额外的复杂性。此外,由于 GolangLua 之间的接口调用和数据交互,调试过程变得更加困难。这些问题降低了开发者的工作效率,增加了项目的开发周期。

鉴于这些问题,我们决定寻求一种新的插件系统方案,以更好地满足我们在主机安全系统中对插件系统的期望。在下一章节中,我们将探讨其他插件开发选项及其局限性,以及我们为什么最终选择了基于 WebAssembly 的插件系统。

主机安全系统中的插件系统设计原则

在寻找新的插件系统方案时,我们明确了在主机安全系统这一应用场景的以下设计原则,以确保插件系统能够满足我们在主机安全系统中的需求:

实时(高性能)

网络安全事件往往发生在瞬息之间,主机安全系统需要能够快速识别并应对这些事件。插件系统的高性能保证了安全策略可以实时执行,有助于及时发现并阻止潜在的攻击行为,降低系统风险。

轻量(占用资源小且可控)

主机安全系统通常需要在多种设备和环境下运行,包括服务器、工作站和嵌入式设备等。一个轻量化的插件系统可以降低对硬件资源的要求,确保安全策略在资源受限的环境中也能得到有效执行。

安全(沙箱化隔离)

网络安全领域的插件可能涉及敏感操作和数据处理。通过沙箱化隔离技术限制插件的权限,可以防止潜在的恶意插件窃取敏感数据或篡改关键系统配置。此外,沙箱化隔离还可以降低漏洞利用的风险,提高系统的安全性。

兼容(复杂运行环境不冲突)

主机安全系统需要与各种操作系统和应用程序共存。插件系统的兼容性可以确保在复杂的运行环境中不引发冲突,避免对正常业务产生不良影响。

稳定(长时间运行不崩溃)

网络安全保护是一个持续的过程,主机安全系统需要能够在长时间运行过程中保持稳定。一个稳定的插件系统可以确保安全策略持续有效,降低意外故障导致的安全风险。

跨平台(不同操作系统不用改一行代码)

网络环境中存在多种操作系统,如 WindowsLinuxmacOS 等。插件系统的跨平台性可以降低插件开发的复杂性和维护成本,提高安全策略的普适性和适应性。

灵活(功能和沙箱限制可调整)

针对不同的网络安全场景和需求,插件系统需要具备一定的灵活性。可调整的功能和沙箱限制使得安全策略可以根据实际情况进行定制,提高安全防护的针对性和有效性。

易用(安装配置过程简单)

网络安全人员在部署和维护主机安全系统时,需要快速地安装和配置插件。一个易用的插件系统可以降低操作难度,提高工作效率。同时,简化安装和配置过程也有助于减少误操作,避免潜在的安全隐患。

为什么选择基于WASM的插件系统

在充分了解了主机安全系统中插件系统设计原则的基础上,我们选择基于 WebAssembly 的插件系统作为解决方案。以下是该插件系统在满足设计原则方面的优势:

Native Speed

  1. WebAssembly 提供接近原生的执行速度(Native Speed)。在主机安全系统场景下,为插件提供高性能执行环境能够确保安全策略能够实时响应网络安全事件,有效降低插件对计算和内存资源的占用。

Sandboxed

  1. WebAssembly 提供了基于Capability-based security构建的内置沙箱隔离机制(Sandboxed),可以作为一种插件权限的管理机制,十分适合主机安全系统的插件需求,可以很好地提高插件系统的安全性和 Agent 的可靠性。

Multi-Language Flexbility

  1. WebAssembly 插件将会可以使用任何可以编译到 WASM 的语言编写(Multi-Language Flexbility),自然也就能够在满足我们使用静态编译型语言编写插件的梦的同时,提供使用适合的语言满足特殊安全场景的额外优势。(比如平时写Rust 插件高效安全节省资源,有应急需求直接 Python 一把梭解决问题,然后再逐渐将安全能力转化到更高效的形式)

Portablity

  1. WebAssembly 具有无与伦比的便携性(Portablity),在不同的操作系统和不同的运行环境中都可以直接运行。这降低了插件开发和维护的复杂性,提高了安全策略的普适性和适应性。

未来的期待

基于 WASM 的插件系统在满足主机安全系统设计原则方面展现出巨大潜力。然而,WASM 技术仍然在快速发展中,未来将会有更多的功能和优化供我们利用。期待 WASM 在以下方面给予网络安全系统更多支持:

  1. 更强大的沙箱隔离功能,以提高插件系统的安全性;
  2. 更高效的垃圾回收和内存管理机制,以进一步降低资源占用;
  3. 更便捷的开发和调试工具,以简化插件开发过程;
  4. 更广泛的社区支持,以促进 WASM 在网络安全领域的应用。

通过不断探索和实践,我们相信基于 WASM 的插件系统将为主机安全系统带来革命性的变革。让我们一起期待这一创新技术将会为网络安全带来的惊喜。

相关博文推荐

上一篇:【揭秘牧云插件开发者的创新之路:从无法解决的问题到“妙趣横生”】

系列文章目录:【预告】主机Agent插件引擎开发故事汇总

  1. 【揭秘牧云插件开发者的创新之路:从无法解决的问题到“妙趣横生”】
  2. 【牧云插件系统面向未来的设计原则】
  3. 【牧云插件系统选型斗争】
  4. 【牧云插件系统技术选型之探针开发用什么?】
  5. 【牧云插件系统技术选型之插件开发用什么?】
  6. 【牧云插件系统技术选型之插件通信框架大PK】
  7. 【牧云插件系统技术选型之自己人都会吐槽的序列化方法选择之争】
  8. 【牧云插件系统技术选型之WASM运行时选哪个?不选这个竟然出大问题!】
相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2