首页 / 安全加固
安全加固清单
内建安全基线(默认已生效)
- 会话 Cookie:
HttpOnly + Secure + SameSite=Lax——明文 HTTP 上不传输; - 管理面 CSRF 双提交校验;未认证一律 401/403,同形响应不泄露细节;
- webhook HMAC-SHA256 验签 + delivery 一次性去重(重复投递幂等);
platform_admin不可经邀请授予(API/claim/DB 三层拒绝);- secrets 仅存环境变量与 keystore,绝不入库、入日志、入审计;
- 数据库/keystore/模型卷不发布端口(仅内部网络可达)。
部署侧必须项
- TLS 反向代理(强制):Caddy 最小示例——
nginx 等价:终止 TLS 后your.domain { reverse_proxy 127.0.0.1:48500 }proxy_pass http://127.0.0.1:48500;; HTTP→HTTPS 301 跳转;禁止明文承载已认证会话。 - 入口限流:反代层对
/api/*限 60 req/min/IP、 webhook 路径 120 req/min/IP(Caddyrate_limit插件或 nginxlimit_req);webhook 的 HMAC 验签不因限流关闭。 - 防火墙:仅放行反代端口;48500/48590 保持回环绑定; 数据库端口不对任何外部网络开放。
- 最小暴露面:webhook-ingress 只放行 webhook 与 health; 不要把管理面(/multiuser、其余 /api/*)直接暴露公网。
secrets 纪律
.env与 App 私钥权限 0600,不入 git(仓库 .gitignore 已覆盖 .env);- 轮换:
CONSOLE_SESSION_SECRET(全会话失效重登)、 keystore(rotate API,旧 key 即刻失效、新 key 即刻生效); - 日志与审计设计上不含 secrets(webhook 审计仅记 delivery 前缀与 kind)。
审计与可观测
- 登录/邀请/成员变更/webhook 处理/事件消费全量审计落库;
- cchain 信任链状态变化(READY/BLOCKED)留痕;
/api/health的 version 字段即运行版本真源。
升级安全
升级前 pg_dump;镜像按 digest 拉取(不用浮动 tag);
升级窗口内 consumer 停止期间的投递会在恢复后由 GitHub 重投(幂等)。