本文将介绍我们设计基于WASM的牧云插件系统时所遵循的原则和思路。我们将探究在设计过程中的安全性、可扩展性、可维护性、性能等方面的问题,并简要介绍我们为了实现这些目标所做的一些考量和决策。
这是系列文章“主机Agent插件引擎开发故事”的第二篇,后续将会持续更新。该系列文章将带领您深入探究长亭牧云团队主机Agent插件引擎的开发历程,内容涵盖技术选型、插件接口设计、组件通信框架等多个方面,并详细讲解背后的原理和实现方式,无论您是网络安全专业人员还是对技术开发感兴趣的读者,都可以从中得到收获。我们希望通过分享在开发过程中面临的挑战、解决方案以及实践经验,提供深入见解和有价值的技术参考,帮助读者了解如何构建高效可靠的安全产品,共同推动安全技术社区的发展。
作为一个主机安全系统,牧云真的非常需要一个插件系统来提供可靠性和灵活性。在这个快速发展的互联网时代,主机安全系统需要不断适应新的威胁和挑战,一个功能强大且易于扩展的插件系统将会在构建高效灵活的安全策略上起到巨大的助力。
插件系统的引入,使得我们可以:
为了实现这些目标,我们需要对现有的插件系统进行深入剖析,找出其中的问题。在此基础上,我们将采用新技术构建一个面向未来的插件系统,让我们的主机安全系统变得更加“有料”。
插件系统充当着连接核心系统与各种功能模块的桥梁,在牧云中具有举足轻重的地位。
在牧云中,我们对插件系统有如下期待:
通过实现这些期待,我们将能够构建一个面向未来的插件系统,进一步提升牧云主机安全系统的灵活性、可扩展性和安全性,为用户提供更加优质的安全解决方案。
为了满足牧云主机安全系统的需求和期望,我们在设计插件系统时设定了以下目标:
插件系统需要支持易于维护和升级的架构,使开发者可以在最短的时间内响应新的需求和问题,同时不以牺牲代码质量为代价。此外,我们需要优化插件的开发和调试流程,提高开发者的开发效率和体验。
性能是插件系统的关键指标之一。为了满足主机安全系统的实时性要求,我们需要确保插件系统具有较低的运行开销。同时,我们还需要优化插件之间的通信和协作,以提高整体性能。
安全是主机安全系统的首要任务。插件系统需要在沙箱环境中运行插件,以防止潜在的安全风险。此外,我们还需为插件提供严格的权限管理机制,确保插件只能访问有限的系统资源。
为了实现上面说的这些设计目标,我们在设计牧云插件系统时进行了深入的调研和分析。我们评估了现有的插件系统( Golang+LNG+Lua
),并发现其存在一些问题,如运行开销大、维护程度欠佳、开发体验差等。虽然 Golang+Lua
的插件系统曾为我们带来了一些便利,但随着业务的发展和需求的变化,这一技术方案的局限性使得它难以满足我们在主机安全系统中对插件系统的期望。
Golang+Lua
的插件系统中,Lua
代码需要在 Lua
虚拟机中运行。虽然 Lua
虚拟机本身具有较高的性能,但与Golang
代码相比,其运行速度仍有明显差距。同时,Golang
与 Lua
之间的数据交互也会带来额外的性能损耗。这些问题导致了插件系统的整体性能难以达到我们的期望。
虽然 LuaJIT
提供了一定程度的性能提升,但近年来该项目的维护程度有所下滑,更新速度放缓。这使得我们在遇到问题时,可能无法得到及时的技术支持和修复,从而影响到插件系统的稳定性和安全性。
Golang+Lua
的插件系统需要开发者在两种语言环境中切换,这给开发过程带来了额外的复杂性。此外,由于 Golang
与 Lua
之间的接口调用和数据交互,调试过程变得更加困难。这些问题降低了开发者的工作效率,增加了项目的开发周期。
鉴于这些问题,我们决定寻求一种新的插件系统方案,以更好地满足我们在主机安全系统中对插件系统的期望。在下一章节中,我们将探讨其他插件开发选项及其局限性,以及我们为什么最终选择了基于 WebAssembly
的插件系统。
在寻找新的插件系统方案时,我们明确了在主机安全系统这一应用场景的以下设计原则,以确保插件系统能够满足我们在主机安全系统中的需求:
网络安全事件往往发生在瞬息之间,主机安全系统需要能够快速识别并应对这些事件。插件系统的高性能保证了安全策略可以实时执行,有助于及时发现并阻止潜在的攻击行为,降低系统风险。
主机安全系统通常需要在多种设备和环境下运行,包括服务器、工作站和嵌入式设备等。一个轻量化的插件系统可以降低对硬件资源的要求,确保安全策略在资源受限的环境中也能得到有效执行。
网络安全领域的插件可能涉及敏感操作和数据处理。通过沙箱化隔离技术限制插件的权限,可以防止潜在的恶意插件窃取敏感数据或篡改关键系统配置。此外,沙箱化隔离还可以降低漏洞利用的风险,提高系统的安全性。
主机安全系统需要与各种操作系统和应用程序共存。插件系统的兼容性可以确保在复杂的运行环境中不引发冲突,避免对正常业务产生不良影响。
网络安全保护是一个持续的过程,主机安全系统需要能够在长时间运行过程中保持稳定。一个稳定的插件系统可以确保安全策略持续有效,降低意外故障导致的安全风险。
网络环境中存在多种操作系统,如 Windows
、Linux
和 macOS
等。插件系统的跨平台性可以降低插件开发的复杂性和维护成本,提高安全策略的普适性和适应性。
针对不同的网络安全场景和需求,插件系统需要具备一定的灵活性。可调整的功能和沙箱限制使得安全策略可以根据实际情况进行定制,提高安全防护的针对性和有效性。
网络安全人员在部署和维护主机安全系统时,需要快速地安装和配置插件。一个易用的插件系统可以降低操作难度,提高工作效率。同时,简化安装和配置过程也有助于减少误操作,避免潜在的安全隐患。
在充分了解了主机安全系统中插件系统设计原则的基础上,我们选择基于 WebAssembly
的插件系统作为解决方案。以下是该插件系统在满足设计原则方面的优势:
WebAssembly
提供接近原生的执行速度(Native Speed)。在主机安全系统场景下,为插件提供高性能执行环境能够确保安全策略能够实时响应网络安全事件,有效降低插件对计算和内存资源的占用。WebAssembly
提供了基于Capability-based security构建的内置沙箱隔离机制(Sandboxed),可以作为一种插件权限的管理机制,十分适合主机安全系统的插件需求,可以很好地提高插件系统的安全性和 Agent
的可靠性。WebAssembly
插件将会可以使用任何可以编译到 WASM
的语言编写(Multi-Language Flexbility),自然也就能够在满足我们使用静态编译型语言编写插件的梦的同时,提供使用适合的语言满足特殊安全场景的额外优势。(比如平时写Rust
插件高效安全节省资源,有应急需求直接 Python
一把梭解决问题,然后再逐渐将安全能力转化到更高效的形式)WebAssembly
具有无与伦比的便携性(Portablity),在不同的操作系统和不同的运行环境中都可以直接运行。这降低了插件开发和维护的复杂性,提高了安全策略的普适性和适应性。基于 WASM
的插件系统在满足主机安全系统设计原则方面展现出巨大潜力。然而,WASM
技术仍然在快速发展中,未来将会有更多的功能和优化供我们利用。期待 WASM
在以下方面给予网络安全系统更多支持:
WASM
在网络安全领域的应用。通过不断探索和实践,我们相信基于 WASM
的插件系统将为主机安全系统带来革命性的变革。让我们一起期待这一创新技术将会为网络安全带来的惊喜。
上一篇:【揭秘牧云插件开发者的创新之路:从无法解决的问题到“妙趣横生”】
系列文章目录:【预告】主机Agent插件引擎开发故事汇总