4. 与 HashiCorp Vault 的对比(功能篇)
好,咱们直接进入正题。AWS Secrets Manager 和 HashiCorp Vault 到底怎么选?说实话,这问题我在不同项目里被问过不下十次。功能层面的差距,说白了就三个维度:密钥轮转、动态 Secret、审计。今天我把这三个点掰开揉碎了讲,你再看自己该用谁。
4.1 密钥轮转:自动 vs 半自动
密钥轮转是 Secrets Manager 最亮眼的招牌。你创建一个 RDS 凭证,设个轮转周期(比如 30 天),它到点就自动改密码,Lambda 函数接管整个流程。用户那边几乎无感。
Vault 呢?它没有内置的自动轮转调度器。你得自己写 cron job,或者用 Vault Agent 的 templating 配合 reload 信号来做。我去年帮一个金融客户做架构选型,他们一开始选了 Vault,后来发现要轮转 200 多个数据库账号,手动写轮转脚本写到崩溃……最后还是切回了 Secrets Manager。
| 能力 | AWS Secrets Manager | HashiCorp Vault |
|---|---|---|
| 自动调度轮转 | 内置(Lambda + CloudWatch Events) | 需外部工具(cron / 自定义) |
| 轮转模板 | RDS、Redshift、DocDB 等预置模板 | 无官方模板,需写脚本 |
| 轮转期间零停机 | 支持(两个版本共存策略) | 依赖实现方式 |
| 自定义轮转逻辑 | 自定义 Lambda | 任意脚本,灵活性更高 |
4.2 动态 Secret:Vault 的杀手锏
动态 Secret 是 Vault 最让我佩服的功能。什么叫动态?就是每次请求回来一个临时凭证,用完就失效,没有永久的静态密码。举个例子,你让应用去 Vault 请求一个 PostgreSQL 连接串,Vault 当场在 PG 里创建一个临时用户,TTL 到期自动删除。安全级别非常高。
AWS Secrets Manager 没有这个能力。它只支持静态 Secret 的轮转,也就是你把一个密码存在里面,定期改一下。应用拿到的始终是一个长生命周期的凭证,只不过版本会变。
说实话,我个人非常喜欢 Vault 的动态 Secret 模型。之前在一个微服务架构的项目里,我们用 Vault 给每个服务实例分配独立的数据库凭证,TTL 设成 15 分钟。即使某个容器被攻破,攻击者拿到的凭证最多用 15 分钟。这种设计让安全团队睡得特别安稳。
不过代价是什么?数据库连接池的管理变得更复杂了。应用需要频繁去 Vault 获取新凭证,你得处理好缓存和重试逻辑。我曾经遇到一个坑——某个服务忘了在 TTL 内 renew 凭证,结果连接池里的所有连接突然全部失效,线上告警炸了一晚上。
4.3 审计:谁做了啥,一清二楚
审计方面,两者都有不错的方案,但侧重点不同。
AWS Secrets Manager 的审计依托 CloudTrail。每次读取、轮转、删除 Secret,CloudTrail 都会记录。你可以直接扔到 CloudWatch Logs 或者 Athena 里做分析。优点是和 AWS IAM 策略完全集成,你可以用 IAM 条件键限制“谁在什么 IP、什么时间能读哪个 Secret”。缺点嘛,CloudTrail 的日志是 JSON 格式,查起来有时候像大海捞针。
Vault 的审计更细粒度。它支持多种审计后端(文件、syslog、socket、Kafka 等),而且每条审计日志里包含了完整的请求上下文——调用者身份、请求路径、响应数据(可脱敏)。我最喜欢 Vault 的一点是 响应包装(Response Wrapping) 审计,你能看到谁创建了 wrapped ,谁解开了它,以及这个 最后被用了没。这对溯源攻击链来说非常有用。
| 审计维度 | AWS Secrets Manager | HashiCorp Vault |
|---|---|---|
| 记录所有读操作 | CloudTrail 事件 | 审计设备(audit device) |
| 响应数据脱敏 | 不自动脱敏 | 支持 HMAC 脱敏 |
| 多后端输出 | 仅 CloudTrail | 文件、syslog、Kafka、socket 等 |
| 查询易用性 | 需 Athena / CloudWatch Logs Insights | 直接查日志文件或 ELK |
4.4 一张图看懂整体差异
我把三个维度的核心对比画成了一张图。你可以看到,AWS Secrets Manager 在“开箱即用的自动化”上更友好,而 Vault 在“动态权限和审计深度”上更强。
4.5 我的选择建议
如果你问我,什么场景用哪个?我一般这么判断:
- 如果你的基础设施 80% 在 AWS,而且团队规模不大(少于 10 个 DevOps),直接上 Secrets Manager。轮转零操心,审计跟 CloudTrail 打通,IAM 权限控制非常一致。
- 如果你需要动态 Secret,或者有多云/混合云需求,那没得选,得上 Vault。Vault 的数据库动态凭证、PKI 引擎、Kubernetes 集成都是业界标杆。
- 如果你的合规审计特别严,比如 SOC2 Type II 或者金融行业的 PCI DSS,我建议 Vault + 定制审计策略。虽然 IAM+CloudTrail 也能过审,但审计员对 Vault 的日志解析方式接受度更高。
我记得有一次帮一个游戏公司做迁移,他们原本用 Vault,但运维只有两个人,轮转脚本常年没更新,导致数据库密码超过 180 天没变过。后来换到 Secrets Manager,轮转自动化一开,再也没人提过“密码过期”的工单了。嗯,选工具这事,说到底还是看你的团队能扛多少手工活。