proxy-pool/docs/security/security-model.md

46 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 安全模型
## 1. 信任边界
- Gateway、Distribution、Admin 和 Metrics 为四个独立监听边界。
- Provider API 和上游 Proxy 属于外部不可信网络。
- Worker 与 Controller 通道必须进行双向身份校验并绑定 cluster/worker。
- PostgreSQL 保存权威状态Redis 数据默认按可重建缓存与协调信息处理。
## 2. 入口控制
- 严格模式下,非回环监听必须配置认证或 CIDR allowlist。
- 认证关闭不代表匿名状态消失:仍按可信代理链解析来源并形成 Client ID。
- Access、Auth、Rate Limit 和 Client Identification 相互独立。
- Admin 使用独立凭据,不能复用普通 Gateway 或 Distribution 凭据。
## 3. 目标地址策略
在解析和每次连接前同时检查:
- 私网、回环、链路本地、组播、保留地址和云元数据地址。
- 域名解析出的全部 A/AAAA 地址,而不是只检查原始 Host。
- 重定向或重试后的新目标,防止 DNS Rebinding 和策略绕过。
- CONNECT 的端口 allowlist 与规范化 host:port。
## 4. Secret 处理
- 配置只保存环境变量或文件引用,不在日志中输出解析后的值。
- Proxy 唯一键包含 username 与 credentialVersion不包含密码或 SecretRef 内容。
- 指标标签不得使用 token、Proxy URL、Client ID、session 或完整目标 URL。
- Provider 响应和模板错误只记录分类、Upstream 和 requestId。
## 5. Provider 模板
- 限制响应体大小、模板执行时间和输出候选数量。
- 模板函数采用白名单,禁止文件、网络、进程和环境变量访问。
- URL、Header、Query 和 Body 分别结构化编码,不拼接未转义字符串。
- 认证失败与限流响应分类处理429 尊重有上限的 Retry-After。
## 6. 审计
Extraction 审计记录至少包含 requestId、Client、来源、Proxy ID、Upstream、
提取时间和到期时间。日志脱敏不影响审计关联,但审计接口自身必须受 Admin
权限保护并具备保留期限。