多租户托管
OpenClaw 的默认安全模型是每个 Gateway 网关对应一个可信操作员边界,而不是在一个共享 Gateway 网关内部实现针对恶意租户的多租户隔离。因此,若要托管不共享同一信任边界的用户或组织,需要为每个租户运行一个独立、完整的 OpenClaw 实例。openclaw fleet 将每个隔离实例称为一个 cell。cell 是在加固容器中运行的完整 Gateway 网关,拥有自己的状态、凭据、工作区、渠道账户、令牌以及仅限回环访问的主机端口。
Fleet 是实验性功能:其命令、标志和容器配置可能在不同版本之间发生变化,且不会提供弃用过渡期。
Fleet 已在 Linux 和 macOS 主机上测试。目前尚未测试 Windows 主机。
为什么每个租户都需要一个 cell
一个 Gateway 网关内经过身份验证的操作员具有可信控制平面角色。会话 ID 用于选择路由;它们不能用于实现租户之间的相互授权。智能体沙箱隔离可以降低不可信内容和工具执行造成的影响,但无法将一个共享 Gateway 网关转变为租户授权边界。 每个租户使用一个 cell,确保每个信任域都有独立的 Gateway 网关进程、容器、持久化状态树和 Gateway 网关凭据。这遵循 Gateway 安全模型:不要在同一个 OpenClaw 进程或同一个操作系统用户下共同托管互不信任的用户。架构
Fleet CLI 是主机侧的生命周期管理程序。它在 OpenClaw 状态数据库中记录 cell,并请求本地 Docker 或 Podman 运行时创建、检查、启动、停止、替换和移除其容器。不支持远程运行时端点,因为 Fleet 的绑定路径和回环 URL 属于本地主机。Fleet 不代理租户消息,也不会在 cell 之间添加共享的应用层数据路径。 每个 cell 都在自己的用户定义桥接网络上运行官方ghcr.io/openclaw/openclaw 镜像。独立桥接网络可阻止 cell 之间通过容器 IP 直接通信,同时保留提供商和渠道所需的出站 NAT 访问。默认不限制出站流量。Podman cell 可以使用 --network internal 阻止出站流量,同时保留已发布的回环 Gateway 网关端口。Docker 内部网络会导致该已发布端口失效,因此 Fleet 会拒绝这种组合;对于 Docker,应改用主机防火墙规则(例如 DOCKER-USER 链)实施出站策略。cell 的 Gateway 网关在容器内监听端口 18789,而运行时仅将其发布到主机的 127.0.0.1:<allocated-port>。需要远程访问时,操作员可以在该回环端点前部署经过批准的反向代理、SSH 隧道或 tailnet。
持久化 Gateway 网关状态来自 <state-dir>/fleet/cells/<tenant>/,并挂载到 /home/node/.openclaw。身份验证配置文件加密密钥来自独立的 <state-dir>/fleet/auth-profile-secrets/<tenant>/ 主机路径,并挂载到 /home/node/.config/openclaw,与官方 Docker 持久化布局一致。该密钥不嵌套在常规状态挂载目录下。每个租户的渠道账户在其所属 cell 内终止;Fleet 不提供共享渠道账户或入站消息路由器。
官方镜像默认使用 UID 为 1000 的非 root 用户 node。Fleet 使用与主机兼容的用户映射,确保私有绑定挂载保持可写:Podman 使用 keep-id,以 root 权限运行的 Docker 使用调用命令的非 root 身份,而无 root Docker 则将容器 root 映射到非特权守护进程用户。当主机启用 SELinux 时,Docker 和 Podman 会应用私有 :Z 重新标记。该容器配置避免使用特权主机功能,并适合无 root 运行,但无 root 运行是主机运行时的选择和前置条件,并非由 Fleet 自动启用。
信任边界
多租户机制用于保护租户彼此隔离。所有租户都信任 Fleet 操作员和主机。不以抵御主机失陷为目标。 这意味着主机管理员可以检查容器配置和环境、读取挂载的 cell 数据、替换镜像或进入容器。Gateway 网关令牌以及通过--env 传递的值可由管理员通过 Docker 或 Podman 检查功能查看。因此,应相应采用主机控制措施、管理访问策略、监控、备份和经过批准的密钥管理器。
基线配置可防止意外的通配符网络暴露,并移除常见的容器权限提升原语,但无法使不可信主机变得安全。
隔离层级
选择与所托管租户相匹配的边界:- 加固容器基线。 Fleet 会移除所有 Linux capabilities,启用
no-new-privileges,应用 PID、内存、CPU 以及可选的可写层磁盘限制,使用独立的持久化挂载和每个 cell 专属的网络,并且仅发布到主机回环地址。桥接网络不会限制出站流量;当 cell 不得主动建立出站连接时,请使用 Podman--network internal或 Docker 主机防火墙策略。这是信任操作员和主机的租户所使用的默认配置。 - 更强的容器或虚拟机隔离。 对于风险较高的工作负载,可配置 Docker 或 Podman 使用更强的 OCI 隔离运行时(例如 gVisor 或 Kata Containers),或将 cell 部署在 microVM 中。这属于运行时或基础设施配置;Fleet 的
--runtime docker|podman选项选择的是容器 CLI,而非 OCI 隔离后端。请参阅 Docker 的替代容器运行时和 Docker 虚拟机运行时指南。 - 为恶意租户使用独立机器。 不要在同一个 OpenClaw 进程或操作系统用户下共同托管恶意租户。当租户不信任同一个主机操作员,或需要更强的管理边界时,请使用具有独立运行时管理权限的不同虚拟机或物理主机。
快速开始
创建一个 cell。该命令只会输出一次生成的 Gateway 网关令牌,因此请立即妥善保存:http://127.0.0.1:<port> URL,使用该租户的令牌进行身份验证,然后在 cell 内配置提供商凭据和渠道账户。
检查容器状态和 Gateway 网关存活状态:
--purge-data。清除操作需要 --force,不可逆,并会在删除任何内容前执行解析路径包含性检查:
openclaw fleet CLI 参考。
当前范围
Fleet 不提供以下功能:- 共享渠道账户或共享入口路由器
- 使用精简的每租户主机进程替代完整的 OpenClaw 实例
- 由一个管理程序管理的远程 cell 主机
- 租户自助服务门户、计费平面或委托管理 UI