跳到正文

安全架构生产检查清单 ​

适用 OAuth 2.1 / TLS 1.2–1.3 / OWASP Top 10 (2021) 语境。每条都可勾选,括号内是判断依据;协议默认值与算法支持范围以官方文档为准。 只列「不做会出事」的动作,机制解释见各篇正文。

上线前 ​

  • [ ] TLS 与证书链达标:只开 TLS 1.2/1.3,禁用 RSA 密钥交换、RC4、CBC;服务端证书必须带 Intermediate CA。验收:openssl s_client -connect <host>:443 -servername <host> -showcerts 能构建到受信 Root,nmap --script ssl-enum-ciphers 无 TLS 1.0/1.1 与弱套件。确认全站及子域 HTTPS 后再开 HSTS(max-age=31536000; includeSubDomains; preload),否则 max-age 到期前无法回退 HTTP。
  • [ ] OAuth2 只用安全模式:授权码 + PKCE;Password 与 Implicit 已废弃(OAuth 2.1 移除),不得新接。access_token 设计为 15 分钟、refresh_token 7 天,refresh 只发授权服务器;JWT 固定 RS256,验签后必须校验 exp、nbf、iss、aud,需要随时撤销的场景改用 opaque token + introspect。
  • [ ] 越权是第一位风险:所有数据查询强制注入 WHERE user_id = currentUserId(或租户条件),RBAC 之外再加 API 级权限;验收用例必须包含「改成他人 ID 返回 403/404」「跨租户查询为空」。登录、授权变更、敏感数据访问要留 who/what/when 审计。
  • [ ] 密钥不落代码、镜像、日志:数据库等凭据用 Vault 动态生成(TTL=24h)或 External Secrets;K8s Secret 只是 base64,必须配 etcd 加密 + RBAC 或 Sealed Secrets;CI 用 SAST/Trivy 扫描硬编码密钥并阻断构建。
  • [ ] 输入输出两侧都收口:SQL 全部走 #{} 预编译,禁止 ${} 拼接用户输入;HTML 输出做上下文编码,配 CSP(script-src 'self')和 HttpOnly;Cookie 会话加 SameSite=Lax; Secure,JWT 放 Authorization Header 以天然规避 CSRF。
  • [ ] 服务端出站默认拒绝:SSRF 防护用 URL 白名单,DNS 解析后再校验目标 IP 非内网/回环,禁止跟随重定向,封堵 169.254.169.254;K8s 用 NetworkPolicy 做 default-deny,数据库只放行 API 层 3306。验收:从其他 Pod 连数据库应超时,请求元数据地址应被拒绝。

运行中 ​

  • [ ] 证书到期与握手失败:证书剩余有效期 <30 天告警,自动续期失败单独告警;TLS 握手失败率、502/526 类错误有面板,别等用户报错才发现证书过期。
  • [ ] 认证指标有基线:401/403 比例、登录失败率、refresh_token 失败率按服务和租户看;401 突增优先怀疑签名密钥轮换不一致或服务器时钟偏移,403 突增优先怀疑权限策略变更。
  • [ ] 审计与异常访问告警:跨租户访问、批量导出、非工作时间的敏感操作、单账号短时间大量 403 必须告警;WAF 拦截量和登录失败率作为攻击面趋势看,不只看总量。
  • [ ] 依赖与门禁持续有效:新披露 CVE 能定位到在用镜像并告警,镜像定期重扫;PR 的 SAST、依赖 SCA、构建 Trivy、测试 DAST 任一门禁失败即阻断发布,门禁被手工绕过的次数应为 0。

故障时 ​

  • [ ] 证书/握手失败 → openssl s_client -connect <host>:443 -servername <host> -showcerts → 链缺 Intermediate、证书过期、SNI/域名不匹配是三类主因;补链或续期,不要关闭证书校验。
  • [ ] 大面积 401 → 查 JWT 公钥与 kid 是否同步轮换、date -u 看服务器时钟(exp/nbf 偏移)、授权服务器是否可达 → 修密钥或时钟,禁止临时关闭鉴权。
  • [ ] 403 集中或越权告警 → 解 token 里的 user/tenant claims,对照 RBAC 策略变更记录 → 策略回滚后复测「改他人 ID」用例;同时查审计日志确认是否已有数据被读取。
  • [ ] 疑似密钥泄露 → 立即吊销/轮换:Vault lease revoke、JWT 签名密钥轮换、数据库凭据改密 → 再用审计日志查该凭据的访问来源与数据外传;只删代码或改配置不够。
  • [ ] 异常出站/SSRF → 看 NetworkPolicy 拒绝日志与应用出站日志 → 目标为 169.254.169.254、内网网段或 file:// 时按入侵处置:封出站、修 URL 白名单、排查是否已读取元数据凭据。

把一门技术讲透到既懂也会用