机密管理
secret-management;Vault/SM 概念。
30 分钟
机密管理
数据库密码、API Key、TLS 私钥、OAuth Client Secret——统称 机密(Secrets)。绝不能 进 Git、进镜像层、进 Chat 日志。本课对应路线图 secret-management:云厂商 Secret Manager、HashiCorp Vault 概念,以及与 security-essentials 的衔接。
学习目标
- 说清静态 Secret vs 动态凭据 vs 证书轮换
- 对比 AWS Secrets Manager、GCP Secret Manager、Azure Key Vault
- 理解 K8s Secret 的局限与外部 Secret Store 模式
反模式
| 反模式 | 风险 | 正确方向 |
|---|---|---|
.env commit 到 repo | 历史永久泄露 | .gitignore + 注入运行时 |
明文写在 application.yml | 镜像与备份连带泄露 | 环境变量 / 挂载卷 |
| 同一密码全环境 | staging 泄露即 prod 沦陷 | 分环境 Secret |
| 把 Secret 贴进 AI Chat | 第三方日志留存 | 占位符 + 轮换 |
sec-server 与 ai-security 同一纪律。
三类工具
云 Secret Manager → AWS SM / GCP SM / Azure Key Vault;与 IAM 集成
Vault → 动态 DB 凭据、加密即服务、多云统一(运维成本高)
K8s Secret → 集群内注入;etcd 加密 at rest 需显式开启
External Secrets Operator 等模式:K8s 内只存引用,真实值从云 SM 拉取——与 kubernetes-advanced-essentials 的生产基线一致。
工作流要点
- 创建:控制台或 terraform-essentials 声明 Secret 资源(敏感值用 CI 注入,不进 state 明文)
- 注入:ECS/EKS/GKE/AKS 任务角色读取;Spring
spring.datasource.password=${DB_PASSWORD} - 轮换:定期换密码;双写窗口内应用平滑重连
- 审计:谁何时读取 Secret——CloudTrail / 等价日志
练习
- 写 Spring Boot 一段配置:密码只来自环境变量
- 对比 AWS Secrets Manager 与 SSM Parameter Store(SecureString)适用场景各一句
- 列出 K8s Secret 进 Git 的替代:Sealed Secrets 或 External Secrets 选一种简述