Skip to content

Secret 管理

Secret 包括密码、Token、私钥、证书和数据库连接凭据。目标不仅是“不提交到 Git”,还包括限制读取、缩短有效期、避免泄漏并能够轮换。

生命周期

  1. 由受控系统生成或导入,记录用途和所有者。
  2. 按环境和工作负载隔离,只授权需要的主体读取。
  3. 在运行时通过文件、Secret Provider 或受控环境变量注入。
  4. 定期轮换,并支持应用在不中断服务的情况下更新。
  5. 过期、离职或泄漏时立即吊销,保留审计记录。

各阶段做法

  • 本地开发:提交 .env.example,真实值放在被忽略文件或本地 Secret 工具中。
  • CI/CD:使用环境级受保护变量,禁止向 Fork PR 暴露生产 Secret;优先用 OIDC 换取短期凭据。
  • 镜像构建:使用 BuildKit secret mount 等临时注入方式,不能写入 ARGENV 或镜像层。
  • Kubernetes:Secret 的 Base64 不是加密;启用静态加密、最小 RBAC,并评估 Vault、云 Secret Manager 或 External Secrets。
  • 前端:发送给浏览器的任何值都不再是 Secret。公开 API Key 必须通过来源限制、配额和后端授权降低风险。

泄漏响应

立即吊销或轮换凭据,再检查使用日志、影响范围和持久化位置。仅从 Git 历史删除字符串不能让已经暴露的凭据重新安全。

检查清单

  • 是否有明确所有者、用途、环境和过期时间?
  • 日志、错误、构建产物和遥测是否完成脱敏?
  • 应用能否同时接受新旧凭据以完成无中断轮换?
  • 是否监控异常读取、认证失败和即将到期的证书?

Powered by VitePress