跳到主要内容

安全与开发红线

强制约束:本页规则为 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 + 零信任策略)准入。