68 lines
3.3 KiB
Markdown
68 lines
3.3 KiB
Markdown
# 安全模型
|
||
|
||
中文 · [English](security.md)
|
||
|
||
## 信任边界
|
||
|
||
只有 Open WebUI 对公网开放。Runtime、Gateway、PostgreSQL 和 Redis 位于内部 Compose
|
||
网络。
|
||
|
||
Open WebUI 会转发一个短期 HS256 用户 JWT。Runtime 和 Gateway 会验证其签名、签发者、
|
||
过期时间和主体,并且还要求独立的服务 Bearer Key。因此,仅复制用户身份 Token 不能调用
|
||
任何内部服务。Runtime 在接受公开请求时验证一次身份,之后每次调用 Gateway 都会基于已验证
|
||
身份重新签发一个新的短期 Token。长时间运行的 Agent 不会复用已经过期的原始请求 Token。
|
||
|
||
浏览器永远不会获得:
|
||
|
||
- 上游 Provider URL 或 API Key;
|
||
- Provider 模型 ID;
|
||
- Workspace Gateway 服务密钥;
|
||
- 用户身份签名密钥;
|
||
- Docker、SSH、MCP/OpenAPI、提示词或实验配置。
|
||
|
||
## 工作区隔离
|
||
|
||
每个用户都会获得独立容器和命名卷,其名称来自不可变 Open WebUI 用户 ID 的 SHA-256 哈希。
|
||
容器:
|
||
|
||
- 以 UID/GID 1000 运行;
|
||
- 使用只读根文件系统和可写 `/workspace` 卷;
|
||
- 将 Python 虚拟环境、用户软件包和缓存状态保存在持久化 `/workspace` 卷中;
|
||
- 允许出网时使用专用的每用户 Bridge 网络;
|
||
- 丢弃全部 Linux Capability;
|
||
- 启用 `no-new-privileges`;
|
||
- 设置内存、CPU 和 PID 限制;
|
||
- 不挂载 Docker Socket;
|
||
- 不向宿主机发布任何端口。
|
||
|
||
只有 Workspace Gateway 在本地模式下获得 Docker Socket。Runtime 和 Open WebUI 永远不会
|
||
获得它。远程模式会移除 Socket 挂载,将指定 SSH 配置只读挂载,并把 Docker 权限转移到通过
|
||
SSH 连接的执行主机。
|
||
|
||
工作区路径会被规范化,任何逃逸 `/workspace` 的路径都会被拒绝。文件浏览和下载使用同一
|
||
身份边界。单文件下载默认限制为 128 MiB,目录归档采用流式传输。
|
||
|
||
## 部署密钥
|
||
|
||
密钥只存在于 Git 之外、权限为 600 的部署 `.env` 中。镜像不包含 Provider 或基础设施凭据。
|
||
应用代码不会把 Provider 凭据返回浏览器、写入日志或提交到 Git。
|
||
|
||
Web 镜像从固定 commit 的 Open WebUI 版本构建,Node 和 Python 基础镜像均固定 Digest。
|
||
RAG/向量、云存储、媒体模型、浏览器自动化和未使用的密码学依赖被排除。发布验收会同时审计
|
||
仓库环境与最终 Web 镜像。`scripts/audit-web-image.sh` 要求:
|
||
|
||
- `pip check` 报告 Python 环境依赖一致;
|
||
- `pip-audit` 报告零个已知 Python 漏洞,且不忽略任何漏洞 ID;
|
||
- Trivy 报告零个可修复的 High/Critical 操作系统或库漏洞。
|
||
|
||
`scripts/audit-images.sh` 对 Web、Runtime、Gateway 和用户 Workspace 镜像应用相同的
|
||
High/Critical 可修复漏洞门禁。截至 2026-07-26,四个镜像均通过。Trivy 还在 Web 镜像中
|
||
报告了 38 个 Debian 尚未提供修复的 High/Critical 问题;发布门禁通过
|
||
`--ignore-unfixed` 单独记录它们,而不是假装应用层修改能够修复。
|
||
|
||
## 面向恶意公网用户前仍需加强
|
||
|
||
工作区运行在专用物理 Docker 主机上,与公网 Web 和数据库服务分离,但 Docker Daemon
|
||
仍是高价值边界。在将系统视为恶意多租户基础设施之前,还应加入每工作区出网策略、镜像签名、
|
||
集中审计保留、备份恢复演练、配额和资源滥用告警。
|