微秒级转换:为用户代码构建一个快速沙盒

主要观点:平台常让用户提供代码自定义行为,沙箱化用户代码执行是复杂挑战,Sequin 的新[transforms 功能]需平衡性能、安全和用户体验三方面的沙箱化解决方案。
关键信息

  • 沙箱化方法有 VM 基于的、嵌入式语言、自定义解释器等类别,各有优缺点。
  • VM 基于的如云函数、Docker/Firecracker、Web Assembly 等在隔离性、性能等方面各有特点。
  • 嵌入式语言如 Starlark 安全有保障但需完善,Lua 快速但错误处理需改进。
  • 自定义解释器如受限 AST 解释器(“Mini-Elixir”)性能极佳但需注意安全风险。
    重要细节
  • 性能方面,云函数执行 1 - 10ms,Docker/Firecracker 100 - 150μs,Web Assembly 1 - 3ms 等。
  • 安全方面,不同方案在防止恶意代码、资源滥用等方面表现不同。
  • 用户体验方面,各方案在代码编写、调试等方面难易程度不同。
  • Sequin 最终决定采用混合方法,先在本地或单租户部署中使用“Mini-Elixir”,多租户云则增加额外安全层如 Lambda 或 Docker。
  • “Mini-Elixir”在单租户部署中性能和操作简单,多租户需加强安全措施如严格的操作白名单和进程隔离。
阅读 18
0 条评论