安全与开发红线
强制约束:本页规则为 P0 级别,所有内部开发者与 AI 协作者必须严格遵守。违反此红线的代码将被拒绝合并。
1. 密钥与凭据管理
- 禁止硬编码:代码中(包含
main.go、配置模板)禁止出现任何明文可用密码、JWT Secret、API Key 或 DSN。 - 强制注入:所有凭据必须通过环境变量或 GCP Secret Manager 注入。
- 示例占位:本地或开发环境必须使用
.env.example占位,缺失关键环境变量时服务必须直接崩溃(Fail Fast)。
2. 身份认证与授权
- 统一鉴权链路:Admin 与 Portal 所有接口必须经过统一的 OIDC / GCP IAP 验签中间件。
- 字段强校验:验签时必须严格校验
iss,aud,exp,email_verified=true,及hd=yourcompany.com。 - 后台强隔离:所有后台写操作必须经过 RBAC 中间件拦截,严禁在业务逻辑中自行做弱校验。
3. 网络与边界防御
- CORS 最小化:生产环境绝对禁止
Access-Control-Allow-Origin: *,必须使用精准的白名单域名(如app.sayclaw.ai)。 - 接口公网暴露(测试期兼容):测试期间管理后台 API 允许公网访问,但必须挂载 Cloudflare/WAF 并配置严格的 IP 速率限制,禁止直接暴露真实机器 IP。
4. 审计可追溯性
- 任何高权限变动(密钥轮换、配额修改、实例回收)必须记录审计日志:
[时间、操作人、目标对象、变更前、变更后]。
5. 路由鉴权 (Deny by Default)
- 全局拦截:Admin 与 Portal 的路由组必须采用“默认拒绝 (Deny by Default)”策略。即全局挂载强鉴权中间件,任何特例(如公开登录接口)必须显式声明(Explicit Allow)。
- 绝不允许“开发者需要记得在每个 Handler 上加鉴权”的脆弱模式。
6. 纵深防御体系
- 代码层利用 Go 的
internal机制进行物理阻断。 - 编译层产出独立的 Admin 和 Portal Docker 镜像。
- 网络层对 Admin API 实行严格的 VPC 隔离,强制要求 VPN 证书或云上安全网关(如 Cloudflare WAF + 零信任策略)准入。