WASM in the Kernel: Tales of Triumph and Trouble
7 months ago
- #Security
- #WebAssembly
- #Linux Kernel
- Riptides项目最初的目标是通过WebAssembly(WASM)在内核空间实现Open Policy Agent(OPA)策略的实时评估,用于套接字安全防护。
- 团队将wasm3运行时移植到Linux内核时,面临内存管理、浮点运算移除和调试复杂性等挑战。
- 早期测试显示微秒级策略评估延迟的潜力,且无需修改内核即可灵活更新策略。
- 实际生产中出现内存管理问题、安全隐患和高维护成本等问题,促使团队重新评估技术方案。
- 项目转向基于用户空间的Go语言OPA评估架构,显著提升了可靠性、可维护性和安全性。
- 新架构采用Protocol Buffers实现高效的内核-用户空间通信,并通过缓存机制降低延迟。
- 性能对比表明,尽管存在上下文切换开销,用户空间OPA评估仍快于内核空间解释执行的WASM方案。
- 核心经验包括:应优先考虑简洁性和可维护性而非绝对性能;缓存机制至关重要;选择合适的工具比技术炫技更重要。
- 架构转型最终打造出更稳定、易调试、运维高效的系统,同时具备更优的可观测性和安全性。