秘密这玩意,真不能靠“记性”
——Sealed Secrets、Vault 与云 KMS 的一次大实话对比
在运维这条路上,有一类事故我见得太多了,多到后来一看到苗头就头皮发麻:
- 密码写进 Git
- Token 写进 Helm values
- 私钥发在群里
- API Key 躺在 README
每次出事,复盘会上大家都很诚恳:
“下次一定注意。”
但你我都清楚,不是人不注意,是系统在逼人犯错。
今天咱就聊一个所有运维、平台工程师都绕不开的话题:
机密管理,到底该怎么搞?
重点放在三样东西上:
- Sealed Secrets
- HashiCorp Vault
- 云厂商 KMS(阿里云 / AWS / GCP 那套)
我不讲“官方推荐”,只讲什么时候用它、踩过什么坑、值不值。
一、先说句大实话:机密不是“藏”,是“管”
很多人一提 Secret,第一反应是:
“别让人看到就行。”
但这是最低级的安全认知。
真正成熟的机密管理,至少要回答 5 个问题:
- 秘密存哪?
- 谁能用?
- 用的时候怎么拿?
- 能不能换(轮转)?
- 出事了能不能追责?
如果你只解决了第 1 个,那你只是“藏”,不是“管”。
二、Sealed Secrets:GitOps 党的“安全补丁”
1️⃣ 它解决的,其实只有一个问题
Sealed Secrets 的核心思想很简单:
让 Secret 可以放心地进 Git。
你把明文 Secret 用公钥加密,变成一个 SealedSecret,提交到仓库,只有集群里的 controller 才能解。
一个典型流程大概是这样:
kubectl create secret generic db-secret \
--from-literal=password=123456 \
--dry-run=client -o yaml \
| kubeseal --cert mycert.pem -o yaml \
> sealed-secret.yaml
提交的,是加密后的 YAML。
2️⃣ 它适合谁?
我说句很实在的:
Sealed Secrets = GitOps 场景的最低安全保障。
适合这些情况:
- K8s 为主
- 配置即代码
- 秘密变化不频繁
- 团队不大,流程简单
3️⃣ 它的“硬伤”
你一定要清楚它不擅长什么:
- ❌ 不做动态密钥
- ❌ 不做租约(Lease)
- ❌ 不做自动轮转
- ❌ 几乎没有审计能力
说白了:
Sealed Secrets 管的是“交付安全”,不是“运行安全”。
三、Vault:把“秘钥”当一等公民
如果你问我:
“哪一个工具,是真正从设计上把机密当回事?”
我会毫不犹豫地说:Vault。
1️⃣ Vault 的思路,和前两个完全不一样
Vault 的核心不是“存密码”,而是:
尽量不让你长期持有密码。
比如数据库密码,Vault 可以这样玩:
- 应用请求 Vault
- Vault 动态生成一个数据库账号
- 给它 1 小时有效期
- 到期自动回收
vault read database/creds/app-role
你甚至不知道真实的 root 密码是什么。
2️⃣ Vault 强在哪?
我个人认为,Vault 的价值在这几件事上:
- 动态 Secret(DB、MQ、云账号)
- 明确的访问控制(Policy)
- 租约 & 自动过期
- 完整的审计日志
这已经不是“工具”,而是:
一套完整的安全治理思维。
3️⃣ 但它也不轻
我得说点劝退的话:
- 部署复杂
- 运维成本高
- 高可用方案不便宜
- 团队要有安全认知
所以我常跟新人说一句:
Vault 很强,但你得配得上它。
四、云 KMS:省心,但别太天真
云厂商的 KMS,很多人一开始就被吸引了:
“不用自己运维,多好!”
确实,它有几个很明显的优点:
- 高可用
- 合规认证齐全
- 跟云服务深度集成
典型用法大概是这样:
aws kms encrypt \
--key-id alias/my-key \
--plaintext fileb://secret.txt
1️⃣ 它最适合的场景
我会推荐云 KMS 用在:
- 云原生环境
- 和云服务强绑定(RDS、S3、ECS)
- 合规压力大的行业
- 不想自建安全基础设施
2️⃣ 但你要清醒一点
KMS 解决的本质是:
“密钥托管 + 加解密服务”
它通常:
- ❌ 不负责 Secret 生命周期
- ❌ 不理解你的业务
- ❌ 动态能力有限
很多时候你还得自己造一层 Secret 管理。
五、放在一张桌子上说清楚
我给你一个不那么官方、但很真实的对比结论:
| 维度 | Sealed Secrets | Vault | 云 KMS |
|---|---|---|---|
| 上手成本 | ⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
| 运维复杂度 | 低 | 高 | 低 |
| 动态密钥 | ❌ | ✅ | 部分 |
| 审计能力 | 弱 | 强 | 强 |
| 适合规模 | 小 | 中-大 | 中 |
六、我自己的真实建议
说点“经验换来的认知”。
1️⃣ 小团队,别一上来就 Vault
不是 Vault 不好,而是:
安全工具用不好,本身就是风险。
Sealed Secrets + 合理权限,已经能解决 70% 问题。
2️⃣ 中大型系统,一定要考虑“动态 Secret”
密码不轮转,迟早出事。
这是我踩坑踩出来的结论。
3️⃣ 不要迷信“云上天然安全”
云 KMS 很好,但安全责任不会因为你上云就消失。
七、写在最后
机密管理这件事,本质上不是技术选型,而是一个态度问题:
你是把 Secret 当配置,
还是当资产?
如果你只是“藏”,
那迟早有一天会被挖出来。
如果你开始“管”,
那系统才算真的成熟了一点。