跳转到内容

安全与 Token

GPUPlane 是单用户产品:不做多租户,威胁模型是“防止误用与局域网内的意外访问”, 而不是抵御恶意租户。安全模型因此刻意简单。

~/.gpuctl/server.yaml 配置多个 token,各带 scope:

tokens:
- name: admin
token_hash: "..." # 首次启动自动生成一个 admin token
scope: write
- name: observer
token_hash: "..."
scope: read
scope 用途
read 观测与语义工具;Web UI 只读浏览
write 全部能力(submit/cancel/retry/evaluate/set_primary_metric)
agent agent 主机的 WS 接入
sdk 训练进程指标上报

REST / WebSocket / MCP 统一使用 Authorization: Bearer <token>GET /api/v1/auth/whoami 返回 {name, scope, can_write},客户端可据此自适应 (gpuctl-mcp 启动时即以此决定注册哪些工具)。

只读 token 调用写操作会得到统一的 WriteScopeError

场景 建议
信任网络(LAN / Tailscale) 明文 HTTP 可接受
跨网访问 必须 TLS:推荐 Tailscale 兜底,或 Caddy 自动证书反代
公网暴露 不做。这不是为公网设计的产品
Terminal window
uv run gpuctl backup # 在线备份 server SQLite 到 <data_dir>/backups/
uv run gpuctl backup-agent # 在每台 agent 主机归档完整 job 日志/runtime/spool

分体部署时两类备份都要保留(server 的 SQLite + 各 agent 的日志归档)。

HTTP 形态的 gpuctl-mcp 本身是写能力边界:它要求客户端持与 adapter 转发上游相同的 Bearer token,本地进程不能仅靠“够得着它的端口”就继承 adapter 的权限。