强化任务运行器#
任务运行器负责执行来自 Code 节点的代码。虽然 Code 节点执行是安全的,但您可以遵循这些建议来进一步强化您的任务运行器。
在外部模式下将任务运行器作为 sidecar 运行#
为了增加核心 n8n 进程和 Code 节点中的代码之间的隔离,请在外部模式下运行任务运行器。外部任务运行器作为单独的容器启动,为执行 Code 节点中定义的 JavaScript 提供完全隔离的环境。
使用 distroless 镜像#
为了减少攻击面,请使用 distroless Docker 镜像变体。distroless 镜像只包含应用程序及其运行时依赖,不包含包管理器、shell 或其他运行时不需要的工具。
要使用 distroless 镜像,请在 Docker tag 后追加 -distroless 后缀。例如:2.4.6-distroless。
以 nobody 用户运行#
为了提高安全性,将任务运行器配置为使用非特权 nobody 用户运行,并将用户与组 ID 设为 65532。这可以防止容器进程以 root 权限运行,从而降低安全漏洞带来的潜在损害。
配置只读根文件系统#
配置只读根文件系统以防止运行时对容器文件系统进行修改。这有助于防御尝试修改系统文件的恶意代码。
任务运行器仍需要一些临时存储以便运行。为此,请将最小化的 emptyDir 卷挂载到 /tmp。如果您的工作流需要更多临时空间,请相应增大卷大小。